tag:blogger.com,1999:blog-44037884667176957682024-03-27T23:31:39.657+04:00PROИТOffice 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.comBlogger199125tag:blogger.com,1999:blog-4403788466717695768.post-57397183837031114702022-11-15T09:13:00.011+04:002023-01-24T16:44:57.577+04:001С. Неправомерное использование программного продукта. Платформа легальная. 1С закрывается с ошибкой.<div>15 ноября 2022 года при открытии программы 1С выводится сообщение о нарушении лицензионного соглашения и программа самопроизвольно закрывается (не дает далее продолжать работать).</div><span><a name='more'></a></span><div><br /></div><div>Выводится следующее сообщение об ошибке:</div><div><br /></div>
<div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEisNwENfaK0_89_uOs5yJUhATy2yMoQPHY_0eoRNDh9UPZdw0DzDNoHGKSHksRiIhqDlWEx2mHkNORsodg6M9hUfLU9Vm1NOiwh40ZUy7ixGGdGxAoqE4iop-Cji5j-HolOFHz-RNmNnLO6T5TiXBWx53bRPWmv82HCXPy2KnsBvlxBvkIukz0452Za" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="294" data-original-width="446" src="https://blogger.googleusercontent.com/img/a/AVvXsEisNwENfaK0_89_uOs5yJUhATy2yMoQPHY_0eoRNDh9UPZdw0DzDNoHGKSHksRiIhqDlWEx2mHkNORsodg6M9hUfLU9Vm1NOiwh40ZUy7ixGGdGxAoqE4iop-Cji5j-HolOFHz-RNmNnLO6T5TiXBWx53bRPWmv82HCXPy2KnsBvlxBvkIukz0452Za=s16000" /></a></div><br /></div>
<div><b>Неправомерное использование программного продукта</b></div><div><span style="color: red;">Вы стали жертвой подделки программного обеспечения</span></div><div><i>Причиной появления этого сообщения является срабатывание защиты от незаконного использования, применяемой правообладателем в соответствии со статьей 1299 ГК РФ, из-за наличия на компьютере нелегального эмулятора ключа защиты, либо средств взлома.</i></div>
<div><br /></div>
<div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj-uHM5OdwtRHig7QZGDnlguv4aiGfPvV8atS9iNE0MlC2Waxno-zJNg9bv3g0yUQPmJkZ6NxVvRoZaLXe7fQYAcluOdqAsXWydnev4DYRlVNH7khTbqm67zyV0ERUkWtD5IVV8CaX3SO-_1Wvyv7ry8zw6frtIAYX8dpG2JUS-mIyhXAjMutalJYDA" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="590" data-original-width="1159" height="204" src="https://blogger.googleusercontent.com/img/a/AVvXsEj-uHM5OdwtRHig7QZGDnlguv4aiGfPvV8atS9iNE0MlC2Waxno-zJNg9bv3g0yUQPmJkZ6NxVvRoZaLXe7fQYAcluOdqAsXWydnev4DYRlVNH7khTbqm67zyV0ERUkWtD5IVV8CaX3SO-_1Wvyv7ry8zw6frtIAYX8dpG2JUS-mIyhXAjMutalJYDA=w400-h204" width="400" /></a></div></div>
<div>Или сообщение:</div><div><span style="color: red;">Обнаружено нарушение целостности системы</span></div><div><span style="color: red;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgoRFpj8VI_D2SANxMtGYtcr5m63NntZ9WF0mLAyK6gtQvyyNHdT62-zEn-HqMT6OC6Zxm2jAYlM0y88TG30elDQNkTiXVRS4dwIoZWNn2dPfiiEAbeFPpW0obywhe_6vOnmLquBWYe8COY46GpT2ES9Fgd0L6Cpeys5XOVBg6CjwO_y9z9-JPwRzDF" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="122" data-original-width="457" src="https://blogger.googleusercontent.com/img/a/AVvXsEgoRFpj8VI_D2SANxMtGYtcr5m63NntZ9WF0mLAyK6gtQvyyNHdT62-zEn-HqMT6OC6Zxm2jAYlM0y88TG30elDQNkTiXVRS4dwIoZWNn2dPfiiEAbeFPpW0obywhe_6vOnmLquBWYe8COY46GpT2ES9Fgd0L6Cpeys5XOVBg6CjwO_y9z9-JPwRzDF=s16000" /></a></div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjUwjLyC3f8tub9JgVwXX4KeaDgnpd5R2sKXNfq1oSuGJtFY7ZJRSnjonTby8PY2ay7fy4QOyZknwR7L1BIuD08c2o3QfQ88SjH3pIHj3JlN-rzFaVfFkEJfMVHieNqa_4dyQSFOUtQ97J8vsltFTvYyC2d-7SnV7hi4d9tyQbzMbOAO62UynfHBjCw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="165" data-original-width="552" src="https://blogger.googleusercontent.com/img/a/AVvXsEjUwjLyC3f8tub9JgVwXX4KeaDgnpd5R2sKXNfq1oSuGJtFY7ZJRSnjonTby8PY2ay7fy4QOyZknwR7L1BIuD08c2o3QfQ88SjH3pIHj3JlN-rzFaVfFkEJfMVHieNqa_4dyQSFOUtQ97J8vsltFTvYyC2d-7SnV7hi4d9tyQbzMbOAO62UynfHBjCw=s16000" /></a></div><div><br /></div>Или сообщение:</div><div><span style="color: red;">К сожалению, возникла непредвиденная ошибка</span></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjjWyANBJyE4aIsBAiypaosbSJj9RTxjEnbo8Km66HkMbBPfkRsXKPXiV7Bt6amgItGBRg2J4Ohg-xUUsOoE517ZfwXMHVZh-wZF4oDEA7YDFs0YJBx842OKR5mU-lrr6d7A7-ah-z2am_LSzUzeHIrObN25UwSqyyIxPZ9WpG_h5PTdF6qmdRzi3ur" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="266" data-original-width="475" src="https://blogger.googleusercontent.com/img/a/AVvXsEjjWyANBJyE4aIsBAiypaosbSJj9RTxjEnbo8Km66HkMbBPfkRsXKPXiV7Bt6amgItGBRg2J4Ohg-xUUsOoE517ZfwXMHVZh-wZF4oDEA7YDFs0YJBx842OKR5mU-lrr6d7A7-ah-z2am_LSzUzeHIrObN25UwSqyyIxPZ9WpG_h5PTdF6qmdRzi3ur=s16000" /></a></div><div><br /></div>При формировании отчета сообщение: <span style="color: red;">Аварийное завершение</span><br /></div><div><span style="color: red;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg9hASJPDVElTQwZliIY9hku3SAV6MKts_U7VoA5EZBSGsd43ErlnMdp6JHL21QVzJUArYsOMxK7F5mJmES4OrKG-JZURLxyJ7srtO2HvusFIjH1bA4CK-r4m7c3mWDqM38asX4Xj4r1afOvcOHvE5BfZWWhT65piCcumFQLMkCHhCOsyAUFQ1bXH2q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="581" data-original-width="461" src="https://blogger.googleusercontent.com/img/a/AVvXsEg9hASJPDVElTQwZliIY9hku3SAV6MKts_U7VoA5EZBSGsd43ErlnMdp6JHL21QVzJUArYsOMxK7F5mJmES4OrKG-JZURLxyJ7srtO2HvusFIjH1bA4CK-r4m7c3mWDqM38asX4Xj4r1afOvcOHvE5BfZWWhT65piCcumFQLMkCHhCOsyAUFQ1bXH2q=s16000" /></a></div></div><div><br /></div><div><br />Как сообщает сама "1С", проблема может появиться на следующих версиях платформы:</div><div><div><ul style="text-align: left;"><li>8.3.22.1672</li><li>8.3.22.1603</li><li>8.3.21.1607</li><li>8.3.21.1508</li><li>8.3.21.1484</li><li>8.3.20.2076</li><li>8.3.20.2039</li><li>8.3.19.1665</li><li>8.3.19.1659</li><li>8.3.18.1902</li><li>8.3.18.1894</li><li>8.3.17.2733</li><li>8.3.17.2665</li></ul></div><div><br /></div><div>Также сообщается, что избежать данной проблемы смогут те, у кого другие версии платформ (например, более старые), в защищенных программных комплексах 8s, 8.3z, при работе в веб-клиентах, клиентах Linux, MacOS, а также в сервисе фреш.</div><div>Ошибка проявляется только при запуске клиента 1С и не влияет на базу данных (все данные пользователей сохраняются).</div><div>Рекомендация при появлении такой проблемы (при условии, что платформа была установлена легально): <b>выполнить обновление платформы.</b></div></div><div><br /></div><div><div>Рекомендуемые версии платформы для обновления (в соответствии с той, которая выдает ошибку):</div><div><ul style="text-align: left;"><li>8.3.22.1704 или выше</li><li>8.3.21.1622 или выше</li><li>8.3.20.2180 или выше</li><li>8.3.19.1723 или выше</li><li>8.3.18.1957 или выше</li><li>8.3.17.2757 или выше</li></ul></div></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg0xvL140XC81oQVEkTDIHaR2PlezkNWfZ5cjAeN1nFUOukj21QgujAO0EHXYJEo4KxC3WXje3s81qWzasegpvXM_Cg5ck5EMHdBfganEcyRgYQ7Ju1QNN0-LRjyTHkTa4eCk_95UflphqdLMGKbNSWZFudMqCb3hbczF5hr9Lr30FasklCxZnKOqz9" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="435" data-original-width="497" src="https://blogger.googleusercontent.com/img/a/AVvXsEg0xvL140XC81oQVEkTDIHaR2PlezkNWfZ5cjAeN1nFUOukj21QgujAO0EHXYJEo4KxC3WXje3s81qWzasegpvXM_Cg5ck5EMHdBfganEcyRgYQ7Ju1QNN0-LRjyTHkTa4eCk_95UflphqdLMGKbNSWZFudMqCb3hbczF5hr9Lr30FasklCxZnKOqz9=s16000" /></a></div><br /><b>UPDATE:</b></div><div><div>Для пользователей 32-битного сервера на версиях платформы 8.3.22.1704, 8.3.21.1622, 8.3.20.2180, 8.3.19.1723, 8.3.18.1957, 8.3.17.2757 опубликованы обновленные рекомендации. Если на этих версиях платформы происходит аварийное завершение, достаточно установить обновление. Перечень актуальных релизов:</div><div><ul style="text-align: left;"><li>Проблемная версия -> Заменить на версию</li><li>8.3.22.1704 - 8.3.22.1709 или выше</li><li>8.3.21.1622 - 8.3.21.1624 или выше</li><li>8.3.20.2180 - 8.3.20.2184 или выше</li><li>8.3.19.1723 - 8.3.19.1726 или выше</li><li>8.3.18.1957 - 8.3.18.1959 или выше</li><li>8.3.17.2757 - 8.3.17.2760 или выше</li></ul></div></div><div><div>Кроме проблем с запуском, на данный момент в версии 8.3.17.2757 обнаружили еще и функциональную ошибку: в движениях регистра бухгалтерии, у которых счет Дт равен счету Кт, может некорректно отражаться субконто Кт. Для автоматического исправления данных фирма «1С» предлагает использовать патч или применить обработку для соответствующей типовой конфигурации.</div></div><div><br /></div>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com5tag:blogger.com,1999:blog-4403788466717695768.post-49469965461436325122022-02-26T17:58:00.000+04:002022-03-09T10:57:27.043+04:00Естественный язык и общий алгоритм его обработки (Neural networks and NLP, часть 1.1)<div>Что такое естественный язык, и как с ним можно работать?</div><span><a name='more'></a></span><div><div>В подготовке использовались материалы курса Stepik.org по нейронным сетям и обработке текста (Neural networks and NLP, Natural Language Processing) Часть 1.1</div><div><br /></div><div>Формально, <b>язык </b>можно определить как <b>множество цепочек символов из некоторого алфавита</b>. Не всех цепочек, а только тех, которые удовлетворяют некоторым <b>правилам</b>. </div><div>Отдельно взятая цепочка, построенная по этим правилам — это и есть <b>текст</b>.</div><div><b>Алфавит </b>— это множество символов, которые можно использовать для построения текстов.</div><div>По идее, каждая цепочка должна нести какую-то информацию, но на практике — нет. Самое интересное в этом всём — это <b>правила построения цепочек</b>. </div></div><div><br /></div><div><div><b style="background-color: #fcff01;">! Правила построения цепочек - это самое главное !</b></div><div><br /></div><div>Если мы хотим работать с текстами на естественном языке, то общий алгоритм сводится к двум глобальным шагам. Сначала, вполне понятно, нам нужно выучить правила, то есть понять их самим, запрограммировать, или обучить какой-нибудь классификатор, а затем нам дают какой-нибудь текст, и мы применяем наши правила к этому тексту, чтобы понять — как именно было построено каждое конкретное предложение.</div><div><br /></div><div><b style="background-color: #fcff01;">! Анализ языка сводится к двум глобальным задачам: !</b></div><div>1) Обучение: понять правила языка (выучить, запрограммировать и т.п.)</div><div>2) Применение (inference, вывод): для некоторого заданного текста понять по каким именно правилам он построен</div><div><br /></div><div>Рассмотрим известный пример, придуманный советским лингвистом Львом Владимировичем Щербой в тридцатых годах (1930гг). Звучит он так:</div><div><br /></div><div><span style="background-color: #fff2cc; font-family: courier;">"Глокая куздра штеко бодланула бокра и кудрячит бокрёнка".</span></div><div><br /></div><div>Как понять, что здесь происходит?</div><div>Правила русского языка позволяют нам определить следующее:</div><div>1) есть три действующих лица ("куздра", "бокр" и "бокрёнок"),</div><div>2) ещё из этого предложения можно понять, что первое лицо что-то делает с остальными двумя,</div><div>3) про эти действующие лица мы можем понять, что "куздра" — какая? — "глокая" и "бокрёнок" — там есть суффиксы, которые говорят нам о том, что это как "бокр" только маленький.</div><div><br /></div><div>Есть и другие примеры наподобие этого. В этих текстах много незнакомых слов, поэтому нельзя детально нарисовать картину, описываемую в этих текстах, но можно до какой-то степени понять, что там происходит — кто с чем что делает, какая последовательность действий, и так далее.</div><div>Почему же мы можем это понять? Потому, что тексты написаны на русском языке, правила которого мы знаем.</div><div><br /></div><div>Правила бывают разные. Обычно их разбивают на уровни — от низкоуровневых до высокоуровневых.</div><div><br /></div><div><span style="background-color: #fcff01;">! Правила бывают разных уровней: !</span></div><div>- <b>графематические </b>(как разделять слова и предложения между собой)</div><div>- <b>морфологические </b>(как строить и изменять слова)</div><div>- <b>синтаксические </b>(как согласовывать словоформы друг с другом, чтобы не было "красивая стул")</div><div>- <b>семантические </b>(как нужно применить все предыдущие виды правил, чтобы сообщить необходимую информацию)</div><div>- <b>стилистические </b>("уместность" словоупотребления в данной конкретной ситуации, эмоциональное окрашивание)</div><div><br /></div><div>Графематические правила — это правила разбиения текста на отдельные единицы: на предложения и слова. </div><div>Морфологические правила управляют процессом словообразования и словоизменения. Синтаксические правила управляют согласованием слов, чтобы было понятно, что к чему относится.</div><div>Семантические правила управляют процессом передачи смысла посредством правильного использования всех вышеперечисленных правил.</div><div>Ну и наконец — стилистические правила говорят нам, что уместно в данной конкретной ситуации, что неуместно и как мы должны говорить, если хотим вызвать какие-то определённые эмоции у слушателя.</div><div><br /></div><div>Надо заметить, что существуют и другие виды правил, но сейчас это не так важно. Язык — это неотделимая часть культуры, в которой он используется и развивается. И, вроде бы, один и тот же язык может иметь различия на разных уровнях правил — например, "испанский" испанский и "южно-американский" испанский имеют общий синтаксис, но стилистика употребления слов у них разная. </div><div><br /></div><div>Рассмотрим обработку текста с точки зрения искусственного интеллекта, а именно общий алгоритм обработки текстов в программе (например, в питоне). </div><div>Как правило, <b>процесс строится снизу вверх (от низкоуровневых правил к высокоуровневым), от графематики к семантике</b>, и дальше. И, как правило, на каждом шаге используются результаты всех предыдущих шагов, т.е. на выходе каждого этапа обработки получается новая структура данных.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjBFRH5emAJfzNkOJqCq8qnlDOfL8altu-W1GIM0XAws25HO9Qolk9Ntx5UOvtRg-cwClfPf5VGZrqPkwPGFOwOL-BrtDdJR7bi2wRMEpfHr2_hfcLGlIKTMlk8preBZKiQy_4KcA8n-MSYOlCMN1phk57Bb56fkRjFf_8apmRz0wgWhqhWcF3jCp4e" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="395" data-original-width="698" src="https://blogger.googleusercontent.com/img/a/AVvXsEjBFRH5emAJfzNkOJqCq8qnlDOfL8altu-W1GIM0XAws25HO9Qolk9Ntx5UOvtRg-cwClfPf5VGZrqPkwPGFOwOL-BrtDdJR7bi2wRMEpfHr2_hfcLGlIKTMlk8preBZKiQy_4KcA8n-MSYOlCMN1phk57Bb56fkRjFf_8apmRz0wgWhqhWcF3jCp4e=s16000" /></a></div><br />Итак, в самом начале у нас есть сырой текст, который представляется просто цепочкой символов — в питоне это строковый тип.</div><div>На выходе графематического анализа мы уже получаем "список списков", каждый список представляет предложение, а внутри предложения есть отдельные "токены" или "лексемы".</div><div>Следующий уровень — это морфологический анализ. Он обогащает каждую лексему информацией о словоформе, то есть о морфологических признаках и начальной форме слова. На приведенном примере видно, что простые строки заменены уже на структуры и для каждого слова указа начальная форма и часть речи. Например, "мама" — это существительное. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjuMR0vC4awR0rFw56gUd4JNRERfB12vHdMMgHhF9Ul592tY50MNhUEAfWbaxl0I_ZcEcFWXF5LxuL-H-uQuQxAp_dIdj9JD8H8flndViglx1haVX4dmTLJ9pDvzpxo6m6IBRDvPNfrr9iu7MeL14dS6arxL5XqODbSRhiERFW4fx32xnxWMj0jBMCD" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="235" data-original-width="753" src="https://blogger.googleusercontent.com/img/a/AVvXsEjuMR0vC4awR0rFw56gUd4JNRERfB12vHdMMgHhF9Ul592tY50MNhUEAfWbaxl0I_ZcEcFWXF5LxuL-H-uQuQxAp_dIdj9JD8H8flndViglx1haVX4dmTLJ9pDvzpxo6m6IBRDvPNfrr9iu7MeL14dS6arxL5XqODbSRhiERFW4fx32xnxWMj0jBMCD=s16000" /></a></div><br />На выходе синтаксического анализа мы получаем дерево, характеризующие подчинение слов. В структуре данных оно может задаваться, например, ссылкой на родительский узел.</div><div>В указанном примере, синтаксическое дерево может иметь следующую конструкцию: главное слово в предложении — глагол. Глаголу подчиняются главные слова в словосочетаниях — как правило, это существительные. А существительным подчиняются определения.</div><div>В итоге получается дерево для приведенного примера, и в структуре данных оно задаётся ссылкой на номер токена в предложении.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjNvIrdSAK2wW0Fh9AhU0X_xSI11mgLPJWQrc05Ge1_sMxKyHl6LF4xWAWdhgi7rENzpp2WwN4Qff1JK5Ko3IbHivv2I1N976IUCaRLMCS3UFtgG_B1E8O-h-Zb1iKt0kHXqIPI_fqMX-2gXmOnSY0rt1Fn5tjtO2zeud9leP5y2OdHFC-qtTz7DpD0" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="209" data-original-width="620" src="https://blogger.googleusercontent.com/img/a/AVvXsEjNvIrdSAK2wW0Fh9AhU0X_xSI11mgLPJWQrc05Ge1_sMxKyHl6LF4xWAWdhgi7rENzpp2WwN4Qff1JK5Ko3IbHivv2I1N976IUCaRLMCS3UFtgG_B1E8O-h-Zb1iKt0kHXqIPI_fqMX-2gXmOnSY0rt1Fn5tjtO2zeud9leP5y2OdHFC-qtTz7DpD0=s16000" /></a></div><br />Семантический анализ строит ещё более многосвязную структуру — граф или семантическую сеть. Этот граф описывает ситуацию на самом верхнем уровне: что происходит, какие есть участники и какие роли они выполняют. </div><div>В указанном примере: главное слово, которое задаёт структуру ситуации — опять же, глагол. Вместо глагола может использоваться также отглагольное существительное, также такие слова называют предикатными словами. Кроме предикатного слова в предложении есть какие-то аргументы, "мама", "оконная рама" и "тряпка". Аргументы в контексте глагола получают какие-то роли. Например, мама это — субъект, "оконная рама" — это объект, к нему применяются действие, а "тряпка" — это инструмент.</div><div>Что здесь граф: рёбра обычно проводятся между главным словом и аргументами, а также между аргументами напрямую — это называется "<b>семантические отношения</b>".</div><div>Затем результаты всех выполненных шагов агрегируются для того, чтобы решать конечную задачу — то, для чего была начала обработка текста.</div><div><br /></div><div><b>Итоги</b>: в данном блоке рассмотрено - что такое естественный язык, что правила бывают разных уровней, и что, когда в предложении все слова неизвестны, его смысл все равно можно понять. Также рассмотрен общий алгоритм обработки текста — снизу вверх, от графематического анализа до семантического, и дальше.</div><div><br /></div></div>
<div style="text-align: right;">
<br /><i><span style="font-size: x-small;">Источник материалов https://stepik.org/course/54098/syllabus</span></i></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-44471503569784709692022-02-24T14:13:00.004+04:002022-02-24T14:13:40.609+04:00[DS NLP] Как сгенерировать кроссворд при помощи deep learning? (Natural Language Processing)<div>Вопрос от коллег: вопрос про кроссворд, все когда-то пытались их решать. Слова случайно пересекают друг друга в 1 и более местах по общим буквам. В качестве дано могут даваться некоторые буквы на пересечениях слов или же просто в случайных местах (а может и вобще их не быть в кроссворде), помимо этого даются фразы-задания для каждого слова (обычно не больше 3-5 слов). Конечно помимо этого известны ответы, в качестве таргета.</div><span><a name='more'></a></span><div>Подобная задача является крайне интересной с точки зрения применения генеративных NLP моделей. По данным все оказалось весьма грустно, хотя обнаружил что полгода назад на HuggingFaces появился довольно обширный датасет кроссвордов из New York Times - https://huggingface.co/datasets/cryptonite (может кому будет интересно, у них и статья на arxiv есть).</div><div>Возник вопрос, как можно грамотно incorporate подобные данные (расположение слов очевидно имеет значение). Конечно подобную задачу можно попробовать решать простым файн-тьюном условного T5 на парах вопрос-ответ, но врятли это резонный метод для такой задачи (как минимум не учитывается контекст всего кроссворда + информация о других словах и вопросах может помочь модели отвечать правильно).</div><div>Для меня решение подобной, отчасти мультимодальной задачи, кажется весьма нетривиальным. Хотелось бы понять как такие задачи можно вобще архитектурно решить или хотя бы сформулировать (особый вид эмбедингов или может какой-то сложный трансформер).</div><div><br /></div><div><i>Тема: Обработка естественного языка (Natural Language Processing, NLP, Data Science)</i></div><div><br /></div><div><b>Ответы от коллег:</b></div><div><br /></div><div>1) BERT Mask-filling + перебор вариантов, как бейзлайн.</div><div><br /></div><div>2) Можно зафайнтюнить T5, подавая на вход вопрос и шаблон для слова типа **а****п* . Шаблоны при обучении можно генерировать самостоятельно, заменяя в слове большую часть букв (или все) на звёздочки или какой-то ещё символ, ну а во время реального применения формировать шаблоны на основе уже известных слов.</div><div><br /></div><div><i>(автор вопроса)</i> Подавать на вход имеется ввиду склеивая через сепаратор? Похоже на рабочий подход. При файнтьюнинге кстати хотелось бы не потерять знания нейронки из условной википедии, можете немного развить мысль в эту сторону, как это можно было бы сделать?</div><div><br /></div><div><div>Да, через сепаратор. Дополнить обучающий датасет определениями из этой самой Википеди.</div></div><div><br /></div><div><i>(автор вопроса)</i> А что делать если в таргете например должны быть буквы которые уже есть в строке для ответа? Как можно обучатся подобному или какой тут нужен алгоритм генерации чтобы учитывать и буквы и длину слова нужную?</div><div><br /></div><div><div>- И буквы, и длину слова можно учитывать в маске, состоящей из неизвестных букв (заменённых на звёздочки) и известных букв. Нейросеть до дообучения не будет знать, как пользоваться этой маской, но в ходе обучения научится делать это хотя бы приблизительно. Можно сэмплить (случайно или с помощью beam search) </div><div>- Чтобы контроль длины слова был не приблизительно, а точно, в huggingface можно написать собственный logits processor (https://huggingface.co/docs/transformers/internal/generation_utils), который бы в beam search'e обнулял бы вероятность генерации слишком длинных слов.</div><div>- Полный алгоритм для работы со всем кроссвордом я плохо представляю, т.к. не очень понятно, в какой последовательности заполнять слова кроссворда, но, наверное, это должен быть какой-то simulated annealing, где слова сначала сэмплятся из модели с высокой степенью случайности, и некоторые слова могут "выкидывать" другие слова, с которыми они плохо согласуются, а по мере заполнения кроссворда мы всё больше концентрируемся на словах, которые модель угадала достаточно уверенно. Или можно пойти по жадному пути пути, когда модель генерирует для каждого вопроса список слов-кандидатов, и мы заполняем слот с самым уверенным кандидатом, потом перегенерируем слова-соседи с учётом уже сгенерированных букв, и повторяем это до тех пор, пока не заполним всё.</div></div><div><br /></div><div>3) Интересно, составляют ли уже кроссворды автоматически? или все еще руками?</div><div><br /></div><div><i>(автор вопроса)</i> Натыкался только на такое https://github.com/riverrun/genxword</div><div><br /></div>
<div style="text-align: right;">
<br /><i>Источник: ODS slack</i></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-51886220677149903812022-02-23T16:02:00.000+04:002022-02-23T16:02:06.239+04:00[Data science] Глубокое обучение VS линейная регрессия<div>В настоящее время нейронные сети намного быстрее, чем раньше, благодаря аппаратным улучшениям, и их также легче разрабатывать. Но действительно ли они так нужны?</div><span><a name='more'></a></span><div>Далее рассмотрим использование алгоритма глубокого обучения (многослойный перцептрон), который в последствии сравним с простейшим и популярным методом классического машинного обучения - линейной регрессией.</div><div><br /></div><div>Итак, в данном примере будем применять питон и его известные библиотеки (numpy, pandas, sklearn и т.д.). Импортируем их:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">matplotlib.pyplot</span> <span style="color: #008800; font-weight: bold;">as</span> <span style="color: #0e84b5; font-weight: bold;">plt</span>
<span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">numpy</span> <span style="color: #008800; font-weight: bold;">as</span> <span style="color: #0e84b5; font-weight: bold;">np</span>
<span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">pandas</span> <span style="color: #008800; font-weight: bold;">as</span> <span style="color: #0e84b5; font-weight: bold;">pd</span>
<span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">seaborn</span> <span style="color: #008800; font-weight: bold;">as</span> <span style="color: #0e84b5; font-weight: bold;">sns</span>
<span style="color: #008800; font-weight: bold;">from</span> <span style="color: #0e84b5; font-weight: bold;">numpy.linalg</span> <span style="color: #008800; font-weight: bold;">import</span> inv
<span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">time</span>
<span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">plotly.graph_objects</span> <span style="color: #008800; font-weight: bold;">as</span> <span style="color: #0e84b5; font-weight: bold;">go</span>
<span style="color: #008800; font-weight: bold;">import</span> <span style="color: #0e84b5; font-weight: bold;">plotly.express</span> <span style="color: #008800; font-weight: bold;">as</span> <span style="color: #0e84b5; font-weight: bold;">px</span>
<span style="color: #008800; font-weight: bold;">from</span> <span style="color: #0e84b5; font-weight: bold;">sklearn.neural_network</span> <span style="color: #008800; font-weight: bold;">import</span> MLPRegressor
<span style="color: #008800; font-weight: bold;">from</span> <span style="color: #0e84b5; font-weight: bold;">sklearn.model_selection</span> <span style="color: #008800; font-weight: bold;">import</span> train_test_split</pre></div><div><br /></div><div>plotly здесь испольузется для 3D визуализации и необязателен для импортирования.</div><div><br /></div><div>В этом первом примере генерируем некоторые квадратично коррелированные данные, чтобы показать, что линейную регрессию можно использовать и для моделирования полиномиальных функций.</div><div>Создаем датасет:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">x_1 = np.linspace(-<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">1000</span>)
x_2 = np.linspace(-<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">1000</span>)
x_2 = np.random.choice(x_2,<span style="color: #007020;">len</span>(x_2))
X = np.array([x_1,x_2]).T
data = pd.DataFrame(X,columns=[<span style="background-color: #fff0f0;">'x1'</span>,<span style="background-color: #fff0f0;">'x2'</span>])
c0 = <span style="color: #6600ee; font-weight: bold;">2.8</span>
c1 = <span style="color: #6600ee; font-weight: bold;">3.1</span>
c2 = <span style="color: #6600ee; font-weight: bold;">1.5</span>
c3 = <span style="color: #6600ee; font-weight: bold;">0.8</span>
t = c0+c1*x_1+c2*x_2+c3*x_1*x_2
data[<span style="background-color: #fff0f0;">'t'</span>] = t
data.head()</pre></div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjr_MhdE261aIbSW3iIjjNjt86X-hHoEltk5QHVXhdxF6WLSgC5pMMRzdPi1pEEjoWzI7MuFijJVQ-a8d44q36ELhPqiDMFly7RVBJ3Cf76H26mgOq7jmsT2Uynhchu1WhYac9viZBKYsTN3KSc0mb_huRfp4qtPNEahPDsUiUFJJnVquK22JSdg857" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="161" data-original-width="238" src="https://blogger.googleusercontent.com/img/a/AVvXsEjr_MhdE261aIbSW3iIjjNjt86X-hHoEltk5QHVXhdxF6WLSgC5pMMRzdPi1pEEjoWzI7MuFijJVQ-a8d44q36ELhPqiDMFly7RVBJ3Cf76H26mgOq7jmsT2Uynhchu1WhYac9viZBKYsTN3KSc0mb_huRfp4qtPNEahPDsUiUFJJnVquK22JSdg857=s16000" /></a></div><br />Как можно видеть целью является следующая функция:</div><div><br /></div><div>t = c_0 +c_1*x+c_2*y+c_3*x*y</div><div><br /></div><div>Конечно, эта модель не совсем линейна. Но, если подумать, x и y в основном являются одной и той же переменной, поэтому ее можно рассматривать примерно так:</div><div><br /></div><div>t = c_0 +(c_1+c_2)*x+c_3*x*x</div><div><br /></div><div>Нарисуем поверхность:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">fig = go.Figure(data=[go.Scatter3d(
x=data.x1,
y=data.x2,
z=data.t,
mode=<span style="background-color: #fff0f0;">'markers'</span>,
marker=<span style="color: #007020;">dict</span>(
size=<span style="color: #0000dd; font-weight: bold;">4</span>,
color=data.t, <span style="color: #888888;"># set color to an array/list of desired values</span>
colorscale=<span style="background-color: #fff0f0;">'plasma'</span>, <span style="color: #888888;"># choose a colorscale</span>
opacity=<span style="color: #6600ee; font-weight: bold;">0.8</span>
)
)])
fig.update_layout(margin=<span style="color: #007020;">dict</span>(l=<span style="color: #0000dd; font-weight: bold;">0</span>, r=<span style="color: #0000dd; font-weight: bold;">0</span>, b=<span style="color: #0000dd; font-weight: bold;">0</span>, t=<span style="color: #0000dd; font-weight: bold;">0</span>))
fig.show()</pre></div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEigDjwrlODvtfNjiy2m0BQk4ZJOiuRd67sbvpd9jVUYC_sWfcldf8C6jWdYyNo2tA8pNCl3nsdDMwSaW2QQbfcBHydBlVf44JiKy006qSEz4MzBXObXt01_vA3znAhLEL9Xyb2loqTUFtL9BWlCgAm1wJ2kqKSsdcVxXsfqD6ucqtc3-NCrEn_Y0gZS" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="461" data-original-width="478" src="https://blogger.googleusercontent.com/img/a/AVvXsEigDjwrlODvtfNjiy2m0BQk4ZJOiuRd67sbvpd9jVUYC_sWfcldf8C6jWdYyNo2tA8pNCl3nsdDMwSaW2QQbfcBHydBlVf44JiKy006qSEz4MzBXObXt01_vA3znAhLEL9Xyb2loqTUFtL9BWlCgAm1wJ2kqKSsdcVxXsfqD6ucqtc3-NCrEn_Y0gZS=s16000" /></a></div><br /><br /></div><div><b>Линейная регрессия</b></div><div><br /></div><div>Теперь определим прогнозирующую функцию:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #008800; font-weight: bold;">def</span> <span style="color: #0066bb; font-weight: bold;">y</span>(W,data):
<span style="color: #dd4422;">"""x needs to be a bidimensional element to make it work"""</span>
y=[]
<span style="color: #008800; font-weight: bold;">for</span> x <span style="color: black; font-weight: bold;">in</span> data:
y_x=<span style="color: #0000dd; font-weight: bold;">0</span>
X=[<span style="color: #0000dd; font-weight: bold;">1</span>,x[<span style="color: #0000dd; font-weight: bold;">0</span>],x[<span style="color: #0000dd; font-weight: bold;">1</span>],x[<span style="color: #0000dd; font-weight: bold;">0</span>]*x[<span style="color: #0000dd; font-weight: bold;">1</span>]]
<span style="color: #008800; font-weight: bold;">for</span> i <span style="color: black; font-weight: bold;">in</span> <span style="color: #007020;">range</span>(<span style="color: #007020;">len</span>(X)):
y_x=y_x+W[i]*X[i]
y.append(y_x)
<span style="color: #008800; font-weight: bold;">return</span> y</pre></div><div><br /></div><div>Т.к. данные были заранее составлены, их параметры точно известны и можно проверить, работает ли функция предсказания или нет:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">C = [c0,c1,c2,c3]
exact_pred = y(C,X)
exact_result = t
exact_data = pd.DataFrame([exact_pred,exact_result]).T
exact_data.columns=[<span style="background-color: #fff0f0;">'Predicted'</span>,<span style="background-color: #fff0f0;">'Target'</span>]
exact_data.head()</pre></div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjPA2dkvO0u55DPBwqtXRGTDMWA5lDgjVHCzVKauKfDOVjkp-nsgnW5BW-DnDuDJnAk-81nJos1JQ2Nbx_uHhQtl2GeC10QAwX34EaLwYDqz-9Spfj66QS6tBhEerM3vBgBkv3TngqO8J8IvFaM75ONt2e55xsqIVvQtY62abkO_zcGFaWrdN_N_GC8" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="163" data-original-width="182" src="https://blogger.googleusercontent.com/img/a/AVvXsEjPA2dkvO0u55DPBwqtXRGTDMWA5lDgjVHCzVKauKfDOVjkp-nsgnW5BW-DnDuDJnAk-81nJos1JQ2Nbx_uHhQtl2GeC10QAwX34EaLwYDqz-9Spfj66QS6tBhEerM3vBgBkv3TngqO8J8IvFaM75ONt2e55xsqIVvQtY62abkO_zcGFaWrdN_N_GC8=s16000" /></a></div><br /><span style="color: #333333;">plt.figure(figsize=(</span><span style="color: #0000dd; font-weight: bold;">10</span><span style="color: #333333;">,</span><span style="color: #0000dd; font-weight: bold;">8</span><span style="color: #333333;">))</span></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">sns.lineplot(x=<span style="background-color: #fff0f0;">'Predicted'</span>,y=<span style="background-color: #fff0f0;">'Target'</span>,data=exact_data)
plt.xlabel(<span style="background-color: #fff0f0;">'Predicted'</span>,fontsize=<span style="color: #0000dd; font-weight: bold;">30</span>)
plt.ylabel(<span style="background-color: #fff0f0;">'Target'</span>,fontsize=<span style="color: #0000dd; font-weight: bold;">30</span>)
plt.xticks(fontsize=<span style="color: #0000dd; font-weight: bold;">15</span>)
plt.yticks(fontsize=<span style="color: #0000dd; font-weight: bold;">15</span>)
>>
(array([-<span style="color: #6600ee; font-weight: bold;">30.</span>, -<span style="color: #6600ee; font-weight: bold;">20.</span>, -<span style="color: #6600ee; font-weight: bold;">10.</span>, <span style="color: #6600ee; font-weight: bold;">0.</span>, <span style="color: #6600ee; font-weight: bold;">10.</span>, <span style="color: #6600ee; font-weight: bold;">20.</span>, <span style="color: #6600ee; font-weight: bold;">30.</span>, <span style="color: #6600ee; font-weight: bold;">40.</span>, <span style="color: #6600ee; font-weight: bold;">50.</span>]),
[Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>),
Text(<span style="color: #0000dd; font-weight: bold;">0</span>, <span style="color: #0000dd; font-weight: bold;">0</span>, <span style="background-color: #fff0f0;">''</span>)])</pre></div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjG14hGLq3YGh4vcXLhLEu7C_7MmBYsttvUDWkL67JVtrQrvRjtAHN5HRaAT1JVJMjdfkl_a5JaycIAPqpJoVYes6ahKRJcsHVObrGUhBucOBj0V_gSbJCtp5WkvHFPzPrqWHHWGVRGCChdK7Mlk9WyNRiI3jU93l6Fv7VOWL-heo-qZeblOW7kpPDp" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="499" data-original-width="642" height="311" src="https://blogger.googleusercontent.com/img/a/AVvXsEjG14hGLq3YGh4vcXLhLEu7C_7MmBYsttvUDWkL67JVtrQrvRjtAHN5HRaAT1JVJMjdfkl_a5JaycIAPqpJoVYes6ahKRJcsHVObrGUhBucOBj0V_gSbJCtp5WkvHFPzPrqWHHWGVRGCChdK7Mlk9WyNRiI3jU93l6Fv7VOWL-heo-qZeblOW7kpPDp=w400-h311" width="400" /></a></div><br />Видно, что работает отлично.</div><div>Функция потерь, используемая в задаче линейной регрессии, представляет собой среднеквадратичную ошибку, которая имеет следующее выражение:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #008800; font-weight: bold;">def</span> <span style="color: #0066bb; font-weight: bold;">L</span>(W,X,t):
<span style="color: #008800; font-weight: bold;">return</span> np.round(<span style="color: #6600ee; font-weight: bold;">0.5</span>*((y(W,X)-t)**<span style="color: #0000dd; font-weight: bold;">2</span>).sum(),<span style="color: #0000dd; font-weight: bold;">10</span>)</pre></div><div><br /></div><div>И далее определяем градиент функции потерь, который должен стремиться к нулю:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #008800; font-weight: bold;">def</span> <span style="color: #0066bb; font-weight: bold;">gradient_L_W</span>(W,X,t):
grad_0 = (y(W,X)-t).sum()
grad_1 = ((y(W,X)-t)*X[:,<span style="color: #0000dd; font-weight: bold;">0</span>]).sum()
grad_2 = ((y(W,X)-t)*X[:,<span style="color: #0000dd; font-weight: bold;">1</span>]).sum()
grad_3 = ((y(W,X)-t)*X[:,<span style="color: #0000dd; font-weight: bold;">1</span>]*X[:,<span style="color: #0000dd; font-weight: bold;">0</span>]).sum()
<span style="color: #008800; font-weight: bold;">return</span> np.round([grad_0,grad_1,grad_2,grad_3],<span style="color: #0000dd; font-weight: bold;">10</span>)</pre></div><div><br /></div><div>В данном "идеальном примере" функция потерь и градиент предсказуемо равны 0:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'Loss function for the right parameters is </span><span style="background-color: #eeeeee;">%.2f</span><span style="background-color: #fff0f0;">'</span>%(L(C,X,t)))
>>> Loss function <span style="color: #008800; font-weight: bold;">for</span> the right parameters <span style="color: black; font-weight: bold;">is</span> <span style="color: #6600ee; font-weight: bold;">0.00</span></pre></div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The gradient of this function for the right parameters is'</span>,gradient_L_W(C,X,t))
>>> The gradient of this function <span style="color: #008800; font-weight: bold;">for</span> the right parameters <span style="color: black; font-weight: bold;">is</span> [-<span style="color: #6600ee; font-weight: bold;">0.</span> <span style="color: #6600ee; font-weight: bold;">0.</span> -<span style="color: #6600ee; font-weight: bold;">0.</span> -<span style="color: #6600ee; font-weight: bold;">0.</span>]</pre></div><div><br /></div><div>Оптимальное решение задачи линейной регрессии следующее:</div><div><br /></div><div>Если мы рассмотрим следующую функцию потерь:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjcYqHfxr3HFZ6X-60jnF_SJF0QephvvpisztV3Q6aehJZCZhTtiOoiTmLQdvhS5bmxevpGVLCRMss4gUc1TkiVfEUxY_jD2Y71miDIW_afYyZjwuyj2_9Mf1MNANnchvHbIlSd5Te21Ue6NQcs3Q1E0ccbIHUPa3nfjg6hkEMQ0n1JCxG2jOiMUaRo" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="53" data-original-width="301" src="https://blogger.googleusercontent.com/img/a/AVvXsEjcYqHfxr3HFZ6X-60jnF_SJF0QephvvpisztV3Q6aehJZCZhTtiOoiTmLQdvhS5bmxevpGVLCRMss4gUc1TkiVfEUxY_jD2Y71miDIW_afYyZjwuyj2_9Mf1MNANnchvHbIlSd5Te21Ue6NQcs3Q1E0ccbIHUPa3nfjg6hkEMQ0n1JCxG2jOiMUaRo=s16000" /></a></div></div><div><br /></div><div>Получаем, установив градиент на 0:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgjDQApsL7b0gsrk_sEFKt2G1h4n_Lao5bk9KmScZeQ2Ni4fDPsTZeD7urDfT0Vv2IT19Z34156mLtDer7c4HXxQodrlbGcUgmHgWOPKhUsZe39sjdeuuDCCqelR_YQPOf4en7_Jx3lyRLjf6sm1d4i9n5ERxu7tMu7bB_d_HtFmmAcr9IF70teo7xz" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="47" data-original-width="260" src="https://blogger.googleusercontent.com/img/a/AVvXsEgjDQApsL7b0gsrk_sEFKt2G1h4n_Lao5bk9KmScZeQ2Ni4fDPsTZeD7urDfT0Vv2IT19Z34156mLtDer7c4HXxQodrlbGcUgmHgWOPKhUsZe39sjdeuuDCCqelR_YQPOf4en7_Jx3lyRLjf6sm1d4i9n5ERxu7tMu7bB_d_HtFmmAcr9IF70teo7xz=s16000" /></a></div><br />А реализация следующая:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #008800; font-weight: bold;">def</span> <span style="color: #0066bb; font-weight: bold;">phi</span>(X):
phi_0 = np.ones(<span style="color: #007020;">len</span>(X))
phi_1 = X[:,<span style="color: #0000dd; font-weight: bold;">0</span>]
phi_2 = X[:,<span style="color: #0000dd; font-weight: bold;">1</span>]
phi_12 = X[:,<span style="color: #0000dd; font-weight: bold;">0</span>]*X[:,<span style="color: #0000dd; font-weight: bold;">1</span>]
phi = np.array([phi_0,phi_1,phi_2,phi_12]).T
<span style="color: #008800; font-weight: bold;">return</span> phi
<span style="color: #008800; font-weight: bold;">def</span> <span style="color: #0066bb; font-weight: bold;">W_opt</span>(X,t):
phi_X = phi(X)
A = inv(phi_X.T<span style="color: #555555; font-weight: bold;">@phi_X</span>)<span style="color: #555555; font-weight: bold;">@phi_X.T</span>
w_opt =A<span style="color: #555555; font-weight: bold;">@t</span>
<span style="color: #008800; font-weight: bold;">return</span> w_opt
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The coefficients that we found are the following ones:'</span>,W_opt(X,t))
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The real coefficients are the following ones:'</span>,C)
>>>
The coefficients that we found are the following ones: [<span style="color: #6600ee; font-weight: bold;">2.8</span> <span style="color: #6600ee; font-weight: bold;">3.1</span> <span style="color: #6600ee; font-weight: bold;">1.5</span> <span style="color: #6600ee; font-weight: bold;">0.8</span>]
The real coefficients are the following ones: [<span style="color: #6600ee; font-weight: bold;">2.8</span>, <span style="color: #6600ee; font-weight: bold;">3.1</span>, <span style="color: #6600ee; font-weight: bold;">1.5</span>, <span style="color: #6600ee; font-weight: bold;">0.8</span>]</pre></div><div><br /></div><div>Метод работает отлично. Тут подразумевается, что единственная неопределенность — это числовая ошибка, которую механизм может допустить при вычислении обратной матрицы и матричного умножения, что довольно маловероятно по сравнению с ошибкой алгоритма машинного обучения.</div><div><br /></div><div>Хоть и был использован весь набор данных, но на самом деле в этом случае действительно нужно только 4 точки данных, и получим тот же точный результат.</div><div><br /></div><div><b>Deep Learning (глубокое обучение)</b></div><div><br /></div><div>В алгоритме глубокого обучения всё делается по другому.</div><div>Есть данные, есть несколько скрытых слоев, которые обрабатывают входные данные, и выходной узел, который дает прогноз. Определяем функцию оценки, которая находится в диапазоне от 0 до 1, и хотим ее максимизировать. В данном случае используем метрику R2:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjcnI6ovIDI0vOrm7iu8sG66PvfMrrO_ZpznJpnvBwVeFnxY_Oz58aFmomwlQuikFsmodH_fqxYcsCdF7PIol2b7lKlj--miQihZ84OdaoIWtCIOEDzTajPH5NiCVA4kp_rBLSy0ynEWVubXLFM8C2KtRjjMux9cTvTEqz5vyStLHYTAo5Krhr__C4Z" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="261" data-original-width="196" src="https://blogger.googleusercontent.com/img/a/AVvXsEjcnI6ovIDI0vOrm7iu8sG66PvfMrrO_ZpznJpnvBwVeFnxY_Oz58aFmomwlQuikFsmodH_fqxYcsCdF7PIol2b7lKlj--miQihZ84OdaoIWtCIOEDzTajPH5NiCVA4kp_rBLSy0ynEWVubXLFM8C2KtRjjMux9cTvTEqz5vyStLHYTAo5Krhr__C4Z=s16000" /></a></div><br />Пробуем применить этот метод к заданному набору данных:</div><div><br /></div><div>Делаем разделение на тренировочную и тестовую выборки:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">train_number = <span style="color: #007020;">int</span>(<span style="color: #007020;">len</span>(data)*<span style="color: #6600ee; font-weight: bold;">0.8</span>)
data_shuffle = data.sample(frac=<span style="color: #0000dd; font-weight: bold;">1</span>).reset_index().drop(<span style="background-color: #fff0f0;">'index'</span>,axis=<span style="color: #0000dd; font-weight: bold;">1</span>)
train_data = data_shuffle.drop(<span style="background-color: #fff0f0;">'t'</span>,axis=<span style="color: #0000dd; font-weight: bold;">1</span>)
X_train = train_data.loc[<span style="color: #0000dd; font-weight: bold;">0</span>:train_number-<span style="color: #0000dd; font-weight: bold;">1</span>]
X_test = train_data.loc[train_number::]
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The training set dimension is:'</span>,X_train.shape)
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The test set dimension is:'</span>, X_test.shape)
y_train = data_shuffle[<span style="background-color: #fff0f0;">'t'</span>].loc[<span style="color: #0000dd; font-weight: bold;">0</span>:train_number-<span style="color: #0000dd; font-weight: bold;">1</span>]
y_test = data_shuffle[<span style="background-color: #fff0f0;">'t'</span>].loc[train_number::]
>>> The training <span style="color: #007020;">set</span> dimension <span style="color: black; font-weight: bold;">is</span>: (<span style="color: #0000dd; font-weight: bold;">800</span>, <span style="color: #0000dd; font-weight: bold;">2</span>)
>>> The test <span style="color: #007020;">set</span> dimension <span style="color: black; font-weight: bold;">is</span>: (<span style="color: #0000dd; font-weight: bold;">200</span>, <span style="color: #0000dd; font-weight: bold;">2</span>)</pre></div><div><br /></div><div>Смотрим оценку по метрике:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">regr = MLPRegressor(random_state=<span style="color: #0000dd; font-weight: bold;">1</span>, max_iter=<span style="color: #0000dd; font-weight: bold;">3000</span>,</pre><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span> </span>hidden_layer_sizes=(<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">3</span>)).fit(X_train, y_train)
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The R2 score of our prediction is </span><span style="background-color: #eeeeee;">%.4f</span><span style="background-color: #fff0f0;">'</span> %(regr.score(X_test, y_test)))
>>> The R2 score of our prediction <span style="color: black; font-weight: bold;">is</span> <span style="color: #6600ee; font-weight: bold;">0.9915</span></pre></div><div><br /></div><div>Визуализируем результат:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">test_data = data_shuffle.loc[train_number::]
pred_data = test_data.append(test_data).reset_index().drop(<span style="background-color: #fff0f0;">'index'</span>,axis=<span style="color: #0000dd; font-weight: bold;">1</span>)
pred_data[<span style="background-color: #fff0f0;">'Z'</span>] = test_data.t.tolist()+regr.predict(X_test).tolist()
pred_data[<span style="background-color: #fff0f0;">'Target/Prediction'</span>] = [<span style="background-color: #fff0f0;">'Target'</span>]*<span style="color: #007020;">len</span>(test_data)+[<span style="background-color: #fff0f0;">'Prediction'</span>]*<span style="color: #007020;">len</span>(test_data)
fig = px.scatter_3d(pred_data, x=<span style="background-color: #fff0f0;">'x1'</span>, y=<span style="background-color: #fff0f0;">'x2'</span>, z=<span style="background-color: #fff0f0;">'Z'</span>,
color=<span style="background-color: #fff0f0;">'Target/Prediction'</span>)
fig.update_traces(marker_size = <span style="color: #0000dd; font-weight: bold;">4</span>)
fig.show()</pre></div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhhDTFm7ZzUgZevnupnzMJhDclA9UNmrcTROGoy2sj0eQMYgV3GPJezln4KjvZgvNNb3qLpMtAkApchzpDPyz1DTsHR3JZydTRKNx-GcTWFsIhVNFQ9CvPNaoRZbFtqufKjGA9wgNMZnkOYR3huuCWQQArwx608wOKtynPO1iO4_wBBAzcXCK9n4c-I" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="386" data-original-width="501" src="https://blogger.googleusercontent.com/img/a/AVvXsEhhDTFm7ZzUgZevnupnzMJhDclA9UNmrcTROGoy2sj0eQMYgV3GPJezln4KjvZgvNNb3qLpMtAkApchzpDPyz1DTsHR3JZydTRKNx-GcTWFsIhVNFQ9CvPNaoRZbFtqufKjGA9wgNMZnkOYR3huuCWQQArwx608wOKtynPO1iO4_wBBAzcXCK9n4c-I=s16000" /></a></div><br />Метрика составляет 99,2%. Это хороший результат, но меньший по сравнению с точным результатом, полученным от линейной регрессии.</div><div><br /></div><div>Таким образом, если имеется линейная или полиномиальная проблема, то ее можно легко решить с помощью модели линейной регрессии. В этом случае не только не нужна нейронная сеть, но и даже можно получить более низкую производительность, если использовать нейронную сеть вместо линейной регрессии.</div><div><br /></div><div><b>Второй пример</b></div><div><br /></div><div>Усложним предыдущую ситуацию, добавив функцию sin со случайной амплитудой:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">x_1 = np.linspace(-<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">1000</span>)
x_2 = np.linspace(-<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">1000</span>)
x_2 = np.random.choice(x_2,<span style="color: #007020;">len</span>(x_2))
X = np.array([x_1,x_2]).T
data = pd.DataFrame(X,columns=[<span style="background-color: #fff0f0;">'x1'</span>,<span style="background-color: #fff0f0;">'x2'</span>])
t = c0+c1*x_1+c2*x_2+c3*x_1*x_2+</pre><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span> </span><span> </span>np.random.choice(np.linspace(-<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">10</span>),<span style="color: #007020;">len</span>(x_1))*np.sin(x_1)
data[<span style="background-color: #fff0f0;">'t'</span>]=t
fig = go.Figure(data=[go.Scatter3d(
x=data.x1,
y=data.x2,
z=data.t,
mode=<span style="background-color: #fff0f0;">'markers'</span>,
marker=<span style="color: #007020;">dict</span>(
size=<span style="color: #0000dd; font-weight: bold;">4</span>,
color=data.t, <span style="color: #888888;"># set color to an array/list of desired values</span>
colorscale=<span style="background-color: #fff0f0;">'plasma'</span>, <span style="color: #888888;"># choose a colorscale</span>
opacity=<span style="color: #6600ee; font-weight: bold;">0.8</span>
)
)])
fig.update_layout(margin=<span style="color: #007020;">dict</span>(l=<span style="color: #0000dd; font-weight: bold;">0</span>, r=<span style="color: #0000dd; font-weight: bold;">0</span>, b=<span style="color: #0000dd; font-weight: bold;">0</span>, t=<span style="color: #0000dd; font-weight: bold;">0</span>))
fig.show()</pre></div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjr0wOOeUum6pnarbqBvmxx5WeL3u7WR-VTGO_Sp-eUOCoNwQsYQS4aGoGzT1KgqDDQG2cj5GgGL9NuTQLZuVe5NN2Yvyw5Xe_7Jknpemi8QQqppAbz232Tl8Lef7gJ3RDGqOjmmngIJkVp1rIg7OefVtHmTGwUT7PYFI4-nU6U9-i7Xc6Op4Xc7hG9" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="351" data-original-width="367" src="https://blogger.googleusercontent.com/img/a/AVvXsEjr0wOOeUum6pnarbqBvmxx5WeL3u7WR-VTGO_Sp-eUOCoNwQsYQS4aGoGzT1KgqDDQG2cj5GgGL9NuTQLZuVe5NN2Yvyw5Xe_7Jknpemi8QQqppAbz232Tl8Lef7gJ3RDGqOjmmngIJkVp1rIg7OefVtHmTGwUT7PYFI4-nU6U9-i7Xc6Op4Xc7hG9=s16000" /></a></div><br /><br /></div><div>Имеем:</div><div>t = c_0 +c_1*x+c_2*y+c_3*x*y + Rsin(x)</div><div>где R - это случайная амплитуда от -5 до 5.</div><div><br /></div><div>Если использовать модель линейной регрессии, получим тот же результат, что и раньше. Это означает, что линейная модель делает все возможное, но видим сильные потери.</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">pred_w = W_opt(X,t)
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The coefficients that we found are the following ones:'</span>,pred_w)
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The real coefficients are the following ones:'</span>,C)
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'Our loss function value is </span><span style="background-color: #eeeeee;">%.2f</span><span style="background-color: #fff0f0;">'</span>%(L(pred_w,X,t)))
>>>
The coefficients that we found are the</pre><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"> following ones: [<span style="color: #6600ee; font-weight: bold;">2.95883299</span> <span style="color: #6600ee; font-weight: bold;">3.09447238</span> <span style="color: #6600ee; font-weight: bold;">1.53884188</span> <span style="color: #6600ee; font-weight: bold;">0.79436024</span>]
The real coefficients are the following ones: [<span style="color: #6600ee; font-weight: bold;">2.8</span>, <span style="color: #6600ee; font-weight: bold;">3.1</span>, <span style="color: #6600ee; font-weight: bold;">1.5</span>, <span style="color: #6600ee; font-weight: bold;">0.8</span>]
Our loss function value <span style="color: black; font-weight: bold;">is</span> <span style="color: #6600ee; font-weight: bold;">2664.41</span></pre></div><div><br /></div><div>Если использовать глубокое обучение, результат будет очень низким:</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">train_number = <span style="color: #007020;">int</span>(<span style="color: #007020;">len</span>(data)*<span style="color: #6600ee; font-weight: bold;">0.8</span>)
data_shuffle = data.sample(frac=<span style="color: #0000dd; font-weight: bold;">1</span>).reset_index().drop(<span style="background-color: #fff0f0;">'index'</span>,axis=<span style="color: #0000dd; font-weight: bold;">1</span>)
train_data = data_shuffle.drop(<span style="background-color: #fff0f0;">'t'</span>,axis=<span style="color: #0000dd; font-weight: bold;">1</span>)
X_train = train_data.loc[<span style="color: #0000dd; font-weight: bold;">0</span>:train_number-<span style="color: #0000dd; font-weight: bold;">1</span>]
X_test = train_data.loc[train_number::]
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The training set dimension is:'</span>,X_train.shape)
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The test set dimension is:'</span>, X_test.shape)
y_train = data_shuffle[<span style="background-color: #fff0f0;">'t'</span>].loc[<span style="color: #0000dd; font-weight: bold;">0</span>:train_number-<span style="color: #0000dd; font-weight: bold;">1</span>]
y_test = data_shuffle[<span style="background-color: #fff0f0;">'t'</span>].loc[train_number::]
>>> The training <span style="color: #007020;">set</span> dimension <span style="color: black; font-weight: bold;">is</span>: (<span style="color: #0000dd; font-weight: bold;">800</span>, <span style="color: #0000dd; font-weight: bold;">2</span>)
>>> The test <span style="color: #007020;">set</span> dimension <span style="color: black; font-weight: bold;">is</span>: (<span style="color: #0000dd; font-weight: bold;">200</span>, <span style="color: #0000dd; font-weight: bold;">2</span>)</pre></div><div><br /></div><div>С другой стороны, нейронная сеть выдает очень низкую ошибку (R2 почти 1).</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">regr = MLPRegressor(random_state=<span style="color: #0000dd; font-weight: bold;">1</span>, max_iter=<span style="color: #0000dd; font-weight: bold;">3000</span>,</pre><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span> </span>hidden_layer_sizes=(<span style="color: #0000dd; font-weight: bold;">5</span>,<span style="color: #0000dd; font-weight: bold;">3</span>)).fit(X_train, y_train)
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'The R2 score of our prediction is </span><span style="background-color: #eeeeee;">%.4f</span><span style="background-color: #fff0f0;">'</span> %(regr.score(X_test, y_test)))
>>> The R2 score of our prediction <span style="color: black; font-weight: bold;">is</span> <span style="color: #6600ee; font-weight: bold;">0.9920</span></pre></div><div><br /></div><div>Опять же, R2=99,20%, что отлично по сравнению с огромными потерями предыдущего метода.</div><div><br /></div><div>В этом случае, когда модель не является полиномиальной, а нарушена случайной синусоидальной функцией, мы получаем, что линейная модель работает плохо, а модель глубокого обучения работает очень хорошо.</div><div><br /></div><div><b>Время вычислений</b></div><div>Имея дело с данными высокой размерности, действительно хотелось бы использовать машинное обучение даже для проблемы регрессии. </div><div>Например, инвертируем случайную матрицу разных размеров и построим время, необходимое для этой инверсии::</div><div><br /></div><div><pre style="color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">dimensions = np.arange(<span style="color: #0000dd; font-weight: bold;">1</span>,<span style="color: #0000dd; font-weight: bold;">2000</span>,<span style="color: #0000dd; font-weight: bold;">1</span>)
comp_time = []
<span style="color: #008800; font-weight: bold;">for</span> d <span style="color: black; font-weight: bold;">in</span> dimensions:
<span style="color: #008800; font-weight: bold;">print</span>(<span style="background-color: #fff0f0;">'Dimensionality = </span><span style="background-color: #eeeeee;">%i</span><span style="background-color: #fff0f0;">'</span>%(d))
start_time = time.time()
X = np.random.rand(d,d)
np.linalg.inv(X)
comp_time.append(time.time() - start_time)
plt.figure(figsize=(<span style="color: #0000dd; font-weight: bold;">20</span>,<span style="color: #0000dd; font-weight: bold;">20</span>))
plt.plot(dimensions,comp_time)
plt.xlabel(<span style="background-color: #fff0f0;">'Dimensionality of the matrix'</span>,fontsize=<span style="color: #0000dd; font-weight: bold;">20</span>,weight=<span style="background-color: #fff0f0;">'bold'</span>)
plt.ylabel(<span style="background-color: #fff0f0;">'Computational Time'</span>,fontsize=<span style="color: #0000dd; font-weight: bold;">20</span>,weight=<span style="background-color: #fff0f0;">'bold'</span>)
plt.yticks(fontsize=<span style="color: #0000dd; font-weight: bold;">30</span>)
plt.xticks(fontsize=<span style="color: #0000dd; font-weight: bold;">30</span>)</pre></div><div><br /></div><div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjBC5moGjAL_4uRZDZhid9PgefbEQ8I-RySDfl1G1LQy3JUW5RTaNcVoXVJu1bV1Q8u46fGY3XHXZeNvOg5PQkgkCCQFV5hpOcC2WYGsLQITRL65-qCWNa6-nDkIf6HXuITOMBjQvTbQiFz9n_A-hnviVD9Dv1dA-ydyj3ICCOyIV03QfNE4tDhqOgg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="549" data-original-width="576" height="381" src="https://blogger.googleusercontent.com/img/a/AVvXsEjBC5moGjAL_4uRZDZhid9PgefbEQ8I-RySDfl1G1LQy3JUW5RTaNcVoXVJu1bV1Q8u46fGY3XHXZeNvOg5PQkgkCCQFV5hpOcC2WYGsLQITRL65-qCWNa6-nDkIf6HXuITOMBjQvTbQiFz9n_A-hnviVD9Dv1dA-ydyj3ICCOyIV03QfNE4tDhqOgg=w400-h381" width="400" /></a></div><br />В среде глубокого обучения можно попробовать использовать некоторую сверточную сеть и найти численное решение, которое может быть немного далеким от аналитического, но займет гораздо меньше времени.</div><div><br /></div><div><i>Вывод всегда следующий: сначала посмотрим на данные.</i></div><div>Если замечено некоторое «линейное» или «полиномиальное» поведение, то может не стоит использовать глубокое обучение, а просто применить модель линейной регрессии и в итоге получить очень низкую долю ошибки.</div><div>Если же поведение странное и его сложно назвать линейным или полиномиальным, возможно, имеет смысл использовать Deep Learning, если имеется достаточно данных.</div><div><br /></div><div><br /></div>
<div style="text-align: right;"><i><span style="font-size: x-small;">
Источник (англ.): https://towardsdatascience.com/deep-learning-vs-linear-regression-ea74aca115ea</span></i><br /> <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-75106100789403162582022-02-22T11:25:00.001+04:002022-02-22T11:25:34.676+04:00[DS NLP] Как сделать свой BERT или расширить существующий? (Natural Language Processing)<div>Вопрос от коллег: Подскажите, как можно или сделать свой BERT или расширить существующий? Задача не стандартная:</div><div>1) Нужны не просто токены (слова эмбедить), а <b>N-граммы</b>, хотя бы до 2, т.е не просто слово "автомобиль" а еще и "легковой автомобиль".</div><div>Как я понимаю Берт содержит только по слову в классическом виде, а еще, учитывая, что он бьет BPE токенизации, так вообще плохо.</div><div>2) Нет тренировочного датасета, есть просто тексты, короткие (вроде твитера), и нужно сделать хороший эмбединг до биграмм.</div><span><a name='more'></a></span><div><br /></div><div><i>Тема: Обработка естественного языка (Natural Language Processing, NLP, Data Science)</i></div><div><br /></div><div><b>Ответы от коллег:</b></div><div><br /></div><div>1) Прежде всего, рекомендую посмотреть на <b>стоимость обучения BERT</b>. Вот тут https://habr.com/ru/company/sberbank/blog/567776/ есть цифры.</div><div>Оригинальный BERT обучался около недели на кластере. В деньгах это много, даже с текущими зарплатами разработчиков.</div><div>Навелосипедить свою bert можно либо через библиотеку transformers (гуглить Train BERT from Scratch using Transformers in Python) или, если душевно ближе тензорфлоу, то с помощью https://github.com/CyberZHG/keras-bert. </div><div>Вторую опцию я сам пробовал когда-то, так что это возможно, с оглядкой на п.1. Надо только снижать сложность модели, задавая облегченный конфиг, чтобы это можно было тренировать на своей GPU в обозримое время. Но даже скрученная до минимума моделька у меня тогда обучалась пару суток на 1080Ti, и это было тоскливо.</div><div>BPE там не прихоть разработчиков, а отличный компромис. Если брать даже просто слова, то нужно около 1 млн. токенов в словаре и остальное через <unk>. Для 2-грамм, да еще русских, получится около 30 млн токенов, да еще с длиннющим хвостом частот 1 в гистограмме, такое нереально обучать ни технически, ни с точки зрения качества эмбеддингов. Поэтому я бы <b>положился на контекстность эмбеддингов в BERT</b>, они отлично будут ловить нужные моменты с окружением слова.</div><div><br /></div><div>2) Если хочется <b>делать эмбеддинги n-грамм</b>, я предлагаю такой <b>алгоритм</b>.</div><div>Сам давно хочу попробовать, но пока руки не доходили.</div><div>На входе: большой корпус текстов; какой-нибудь существующий BERT.</div><div>В течение 100500 шагов нужно делать следующее:</div><div>1. Выбираешь из корпуса батч текстов. Например, два текста, <span style="background-color: #fff2cc; font-family: courier;">Мама мыла оконную раму</span> и <span style="background-color: #fff2cc; font-family: courier;">Столица Российской Федерации - Москва</span>. Чем больше батч, тем лучше (дальше будет понятно, почему).</div><div>2. В каждом тексте выбираешь словосочетание, которое хочешь заэмбеддить, например, <span style="background-color: #fff2cc; font-family: courier;">оконную раму</span> и <span style="background-color: #fff2cc; font-family: courier;">Российской Федерации</span>. Выбирать их можно полностью случайно, а можно как-то ориентироваться на синтаксис, части речи и т.п.</div><div>3. В каждом тексте заменяешь выбранную n-грамму на маску, и дописываешь перед текстом id одной задачи, например, <span style="background-color: #fff2cc; font-family: courier;">[OUT] Мама мыла [MASK]</span> и <span style="background-color: #fff2cc; font-family: courier;">[OUT] Столица [MASK] - Москва</span> . Загоняешь эти тексты в BERT, берёшь эмбеддинги первых токенов, сохраняешь в переменную Х.</div><div>4. К каждой выбранной n-грамме дописываешь id другой задачи, прогоняешь через BERT, берёшь эмбеддинги первых токенов (это и будут эмбеддинги всей n-граммы), сохраняешь в переменную Y.</div><div>5. В чём теперь соль: мы хотим, чтобы эмбеддинг N-граммы (Y) был максимально близок (например, по косинусному расстоянию) к эмбеддингу соответствующего ему продырявленного предложения (Х), но при этом максимально далёк от эбмеддингов других продырявленных предложений. Такой вот contrastive learning. Вычислить лосс можно примерно таким кодом:</div><div><br /></div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">batch_size </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">=</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> X.shape</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">[</span></b><span lang="EN-US" style="color: #ff8000; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">0</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">]</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">sims </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">=</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> torch.matmul</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">torch.nn.functional.normalize</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">X</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">)</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">, <o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> torch.nn.functional.normalize</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">Y</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">))</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">loss_fn </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">=</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> torch.nn.CrossEntropyLoss</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">()</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">loss </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">=</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> </span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> loss_fn</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">torch.log_softmax</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">sims, -1</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">)</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">*</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> mult, <o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> torch.arange</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">batch_size, device=X.device</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">))</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">+</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> loss_fn</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">torch.log_softmax</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">sims.T, -1</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">)</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">*</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> mult, <o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"> torch.arange</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;">batch_size, device=X.device</span><b><span lang="EN-US" style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">))</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 9pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><b><span style="color: #0080c0; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">)</span></b><span style="font-family: "Times New Roman",serif; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;"><o:p></o:p></span></p></div><div><br /></div><div>6. Делаем градиентный шаг по этому лоссу, так, чтобы обновлялся и Х, и Y.</div><div>Готовую нейросеть можно применять, создавая эмбеддинги словосочетаний так, как ты создавал Y.</div><div>Как вариант, можно обучать не одну нейросеть для X и Y, а две разные модели. Но, думаю, с одной моделью - компактнее и интереснее.</div><div><br /></div><div>3) Эмбеддинги слов получаются из эмбеддингов бертовых wordpieces, например, макс-пулингом. никто не мешает для n-грам делать макс-пулинг по всем кусочкам. Это вряд ли может что-то улучшить, но если "такая задача", то это вполне себе решение. </div><div>На входе вам нужно разобрать предложение на n-граммы, потом токенизировать эти n-граммы токенайзером берта, дальше соединить их в единый массив и прогнать через берт. а на выходе разобрать вектора по n-граммам и объединить.</div><div>Качество будет хорошее, модель можно будет сдать заказчику, хотя сама эта модель, на мой взгляд, не сильно полезная.</div><div><br /></div><div>4) (автор вопроса) если так вычислительно сложно, может мне проще свой Word2Vec эмбединг сделать, всё равно предложения короткие от 2 до 5-6 слов?</div><div><br /></div><div>5) хм. а лемматизацию вы делать собираетесь или нет? Если нет, то вектора будут плохие, т.к. многие словоформы, не говоря уж о их сочетаниях, будут встречаться 1 - 2 раза. а если будете делать лемматизацию, то чем? Если чем-то вроде pymorphy, не учитывающим контекст, то качество лемматизации будет процентов 90. Т.е.,вы сразу на входе убиваете перфоманс своей итоговой модели. а если каким-то нормальным лемматизатором, то там внутри скорее всего будет берт. и зачем вам лемматизировать бертом, чтобы сделать вектора в2в (лучше, всё-таки, фасттекст), если можно просто взять берта и сделать нормальные вектора, которые сами будут контекст учитывать?</div><div><br /></div><div>6) (автор вопроса) я не уточнил, тексты на английском, лемматизация для такого языка не является сильно критичной. Тексты это описание должности, по простому, это вроде "Lead Python Web Developer".</div><div><br /></div><div style="text-align: right;"><i>Источник: ODS slack</i></div>
<div style="text-align: right;"><br /></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-81548883865009351342022-02-22T11:01:00.003+04:002022-02-22T11:09:29.307+04:00[DS NLP] Каким образом GPT делает для одних и тех же текстов разные предложения? (Natural Language Processing)<div>Вопрос от коллег: каким образом модель <b>GPT </b>делает для одних и тех же текстов <b>разные </b>предложения? Если посмотреть на модель, то там нет никакой вероятности.</div><span><a name='more'></a></span><div><br /></div><div><i>Тема: Обработка естественного языка (Natural Language Processing, NLP, Data Science)</i></div><div><br /></div><div><b>Ответы от коллег:</b></div><div><br /></div><div><div>1) Почитайте про <b>language modeling</b>.</div><div>Например, https://lena-voita.github.io/nlp_course/language_modeling.html</div><div>Моделька выдает распределение на словах. И из этого распределения можно брать максимум по вероятности, тогда будет детерменировано. А можно кидать рандом с этими вероятностями.</div><div><br /></div><div>2) - А как это узнали, что разные?</div><div>- В hugging face загрузил модель</div><div><br /></div><div>3) Это как-то немногословно. В общем, выше объяснено.</div><div>Причина в запуске. У способа запуска стоит изучить исходный код.</div><div><br /></div><div>4) Чтобы выдавало одинаковый результат от запуска к запуску, можно либо 1) использовать детерминированный алгоритм: greedy decoding или beam search, как описано в курсе по ссылке выше, либо 2) использовать sampling (standard, with temperature, or top-k), зафиксировав random seed во фреймворке. Второе не всегда тривиально из-за особенностей фреймворков и работы PRNG на GPU, но зато sampling позволяет контролировать разнообразность текстов что может быть полезно.</div><div><br /></div><div>5) Один из вариантов уже объяснили: top-k сэмплинг, для референса приложу учебную реализацию сэмплинга в minGPT Андрея Карпатого - при чтении всё станет ясно.</div><div>https://github.com/karpathy/minGPT/blob/master/mingpt/utils.py</div></div><div><br /></div><div><div style="text-align: right;"><i>Источник: ODS slack</i></div></div><div style="text-align: right;"><br /></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-66925852279290551922022-02-22T10:47:00.004+04:002022-02-22T11:01:32.652+04:00[DS NLP] Как создать синтаксически размеченный корпус языка? (Natural Language Processing)<div>Вопрос от коллег: стоит задача <b>создать синтаксически размеченный корпус языка</b> (русского и потом по аналогии другого непопулярного языка). Пока что были пробы работать с библиотекой spaCy и визуализацией зависимостей в jupyter notebook через displacy, а с помощью каких инструментов можно реализовать корпус вне гугл колаба и сложно ли делать визуализацию зависимостей?</div><span><a name='more'></a></span><div><br /></div><div><i>Тема: Обработка естественного языка (Natural Language Processing, NLP, Data Science)</i></div><div><br /></div><div><b>Ответы от коллег:</b></div><div><br /></div><div><div>1) Посмотрите список инструментов здесь: https://universaldependencies.org/tools.html#brat-rapid-annotation-tool</div><div><b>Brat наиболее известный.</b></div><div><br /></div><div>2) brat, да. Больше ничего нет, но визуализация там не особо хорошая. Если зависимостей много и они далёкие, то выглядит странно. Размечать куда проще, чем потом это проверять. Но, кстати, синтаксически размеченные корпуса русского языка уже есть, и они весьма хорошие.</div><div><br /></div><div>3) <b>displacy </b>работает и вне колаба, пример кода:</div><div><br /></div><div><span style="font-family: courier;">doc = nlp(text)</span></div><div><span style="font-family: courier;">displacy.serve(doc, style="dep")</span></div></div><div><br /></div><div><div style="text-align: right;"><i>Источник: ODS slack</i></div><div style="text-align: right;"><br /></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-51513553906755675602022-02-19T09:35:00.000+04:002022-03-09T10:57:52.426+04:00[DS NLP] Как определить акцент по записи устной речи? (Natural Language Processing)<div>Вопрос от коллег: коллеги, кто то занимался вопросами определения акцента человека исходя из устной речи?</div><span><a name='more'></a></span><div>К какому народу грубо говоря принадлежит тот или иной голос?</div><div><br /></div><div><i>Тема: Обработка естественного языка (Natural Language Processing, NLP, Data Science)</i></div><div><br /></div><div><b>Ответы от коллег:</b></div><div><br /></div><div>Если речь именно устная, т.е. имеются записи в виде аудио дорожки, то это классическая задача распознавания акцента.</div><div>1) Можно ознакомиться с датасетом на кэгле - https://www.kaggle.com/rtatman/speech-accent-archive</div><div>2) Пример статьи на английском по применению сверточных нейронных сетей для определения акцента - https://arxiv.org/pdf/1910.06697.pdf</div><div>3) Можно посмотреть все связные статьи на эту тему вот в этом графе связных статей (на английском) :</div><div>https://www.connectedpapers.com/main/b94d63a95506ac23d22a078ede74ba97e6611aa1/VFNet:-A-Convolutional-Architecture-for-Accent-Classification/graph</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEillXjYW2ZFm-kf_rf6w1n2mRSHP_yn6bRY1rQLpsM6HfBZNAHywAt2W3ZPQtnofrghfimMUHT-iREgZx01INxyygG7X4u5Il66glO04IhK8Wra6P_gMfvxYcQzZ0Y15RH9qxzi2wBuoUKT88fbrSs2HhRPqzmJ3LT8jJgLQrBcCo3ZUC0-9bDBK_sQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="599" data-original-width="627" src="https://blogger.googleusercontent.com/img/a/AVvXsEillXjYW2ZFm-kf_rf6w1n2mRSHP_yn6bRY1rQLpsM6HfBZNAHywAt2W3ZPQtnofrghfimMUHT-iREgZx01INxyygG7X4u5Il66glO04IhK8Wra6P_gMfvxYcQzZ0Y15RH9qxzi2wBuoUKT88fbrSs2HhRPqzmJ3LT8jJgLQrBcCo3ZUC0-9bDBK_sQ=s16000" /></a></div><br /><br /></div>
<div style="text-align: right;">
<br /><i>Источник: телеграм</i></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-88715259966742353922022-01-12T12:19:00.019+04:002022-01-19T15:26:43.350+04:00[Solved] All Hyper-V VM are Saved State. An error occurs when trying to change the state of a virtual machine<div><div>Some of the virtual machines went into the Saved state (and on some servers all virtual machines), and when you try to start them (execute Start), we get an error message:</div><span><a name='more'></a></span><div><br /></div><div><span style="color: red;">SERVER-NAME failed to restore virtual machine state.</span></div><div><span style="color: red;">Virtual machine SERVER-NAME could not be started because the hypervisor is not running.</span></div><div><br /></div><div>On older hypervisors, the error is:</div><div><span style="color: red;">SERVER-NAME failed to change state.</span></div></div><div><br /></div><div>Screenshot of virtual machine states:</div><div><br /></div><div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGS2cXmi0E85f0X9c9BcFbZ63bHaTRsVxoy2FVayssZGAMpPCXxNEo39sND1mOdSuC9AUtcMovduboHJ0Q7NCij6mb-pk8EaL7AulT2-exyQZHTpmBgd3RegPrcb7hWMB3Syxt1bPZ8XU/s16000/image.png"><img data-original-height="728" data-original-width="1083" height="430" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGS2cXmi0E85f0X9c9BcFbZ63bHaTRsVxoy2FVayssZGAMpPCXxNEo39sND1mOdSuC9AUtcMovduboHJ0Q7NCij6mb-pk8EaL7AulT2-exyQZHTpmBgd3RegPrcb7hWMB3Syxt1bPZ8XU/w640-h430/image.png" width="640" /></a></div><div><br /></div><div>Error message:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dEa13p5aqACfEcrtOUN5XAhtUQm_qIOu5z-7pIOzDT9cVl10KP427_wiOcyhij3QhvKo5_QeM5grkg4dQao8VdvBeeH8aWN56n9Oi6e4jgiQmq3dj9AOs-wz50_7zDv5-M5zGx8NZMc/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="232" data-original-width="526" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dEa13p5aqACfEcrtOUN5XAhtUQm_qIOu5z-7pIOzDT9cVl10KP427_wiOcyhij3QhvKo5_QeM5grkg4dQao8VdvBeeH8aWN56n9Oi6e4jgiQmq3dj9AOs-wz50_7zDv5-M5zGx8NZMc/s16000/image.png" /></a></div><br /><div><div>Errors found in system logs:</div></div><div><br /></div><div>System Error </div><div>Source: Hyper-V-Hypervisor</div><div>Error ID: 80</div><div><span style="color: red;">Hypervisor launch failed; The operating systems boot loader failed with error 0xC00000BB.</span></div><div><br /></div><div>Log Name: Microsoft-Windows-Hyper-V-VMMS/Admin</div><div>Source: Hyper-V-VMMS</div><div>Error ID: 15160</div><div><span style="color: red;">'SERVER-NAME' failed to restore virtual machine state. </span></div><div><br /></div><div>Log Name: Microsoft-Windows-Hyper-V-VMMS/Admin</div><div>Source: Hyper-V-VMMS</div><div>Error ID: 15350</div><div><span style="color: red;">The virtualization infrastructure driver (VID) is not running.</span></div><div><br /></div><div>Log Name: Microsoft-Windows-Hyper-V-VMMS/Admin</div><div>Source: Hyper-V-VMMS</div><div>Error ID: 20148</div><div><span style="color: red;">Virtual machine 'SERVER-NAME' could not be started because the hypervisor is not running</span> (Virtual machine ID 53E42B3E-32CA-4F38-BF0F-C22D8CCED5A7). The following actions may help you resolve the problem: 1) Verify that the processor of the physical computer has a supported version of hardware-assisted virtualization. 2) Verify that hardware-assisted virtualization and hardware-assisted data execution protection are enabled in the BIOS of the physical computer. (If you edit the BIOS to enable either setting, you must turn off the power to the physical computer and then turn it back on. Resetting the physical computer is not sufficient.) 3) If you have made changes to the Boot Configuration Data store, review these changes to ensure that the hypervisor is configured to launch automatically. </div></div><div><br /></div><div><span style="background-color: #fcff01;"><span style="background-color: transparent;"><b>Solution</b></span><b>:</b></span></div><div><br /></div><div><div>The issue is related to the Monthly Rollup<b> KB5009624 </b></div><div><b>KB5009624 (Monthly Rollup)</b></div><div><br /></div><div>To confirm this, find the line in the update history:</div><div><b>2022-01 Security Monthly Quality Rollup for Windows Server 2012 R2 x64-based System (KB5009624)</b></div></div><div><br /></div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1NLCC7gx-ljJb4wSQqg9jZX0XYqMrlVPA4qcPFqJ8tNjQM_tV2l9lnr3szOhvmpSYYUrtb2gFpmb1aM4rDixsrfZChzHaW-xrTzoqWIo3zIxahlrhdW2SR6MR6ziDD1A1qkrxFxW1-7c/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="870" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1NLCC7gx-ljJb4wSQqg9jZX0XYqMrlVPA4qcPFqJ8tNjQM_tV2l9lnr3szOhvmpSYYUrtb2gFpmb1aM4rDixsrfZChzHaW-xrTzoqWIo3zIxahlrhdW2SR6MR6ziDD1A1qkrxFxW1-7c/w640-h376/image.png" width="640" /></a></div><div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAyYH0HfwbCy6tYP_yqDAVlg7ldIdR9WQt-QuYYCLhILBz6VUrt4Lk3P-4Nz8dNz1V0VRaFPj6yRrdLTAsORObjYguyzzDNjoDN9FW1OKEaEqHsA64O99zQOEohU-4vi-oSOoUq0P5EQU/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="868" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAyYH0HfwbCy6tYP_yqDAVlg7ldIdR9WQt-QuYYCLhILBz6VUrt4Lk3P-4Nz8dNz1V0VRaFPj6yRrdLTAsORObjYguyzzDNjoDN9FW1OKEaEqHsA64O99zQOEohU-4vi-oSOoUq0P5EQU/w640-h376/image.png" width="640" /></a></div><br /><div>Next, go to Control Panel - Add or Remove Programs - Installed Updates:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OOR10-nXFb0nKPiDfbGvCkKhNakEQABRd2kfOjEMITl5AVGbaKZBbrIWRfarX687NWzhg6IIZ31a2TK2ZoOCAoz1hX5m7kHrIOKIe_5itFF7iJG9xg9CdYOeBIn5Hdv2LAGMnUCQnsY/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="869" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OOR10-nXFb0nKPiDfbGvCkKhNakEQABRd2kfOjEMITl5AVGbaKZBbrIWRfarX687NWzhg6IIZ31a2TK2ZoOCAoz1hX5m7kHrIOKIe_5itFF7iJG9xg9CdYOeBIn5Hdv2LAGMnUCQnsY/w640-h376/image.png" width="640" /></a></div><br /><div>Finding an update in the list Security Update for Microsoft Windows (KB5009624):</div></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_yuAoANxOxfhDCH8dSmHjKgyyWikPIkfqX_0llyD5XKiXojc22CDoDn0PMynATLioGNaEUjc09nDy18jKMbZZEjKIxrLkTndrKBNeLzuUhEQZp7y-UxcrbsbrEiZ1-Z_-QWdAHQ8Kak/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="871" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_yuAoANxOxfhDCH8dSmHjKgyyWikPIkfqX_0llyD5XKiXojc22CDoDn0PMynATLioGNaEUjc09nDy18jKMbZZEjKIxrLkTndrKBNeLzuUhEQZp7y-UxcrbsbrEiZ1-Z_-QWdAHQ8Kak/w640-h374/image.png" width="640" /></a></div><br />Remove this update:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtYAch20XY0a93-j1RNyUkJJ5QzaJNZq2klsiQSRLK1u60xLzeU1RtbzRALU1g5vjMcBs8OmhkOvJY-kqHWyJFAj1_3nMZoFjcbpAvzVrwASdctfkFlbdnNvo8R9Uyjj4EGHdi02aqQeM/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="870" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtYAch20XY0a93-j1RNyUkJJ5QzaJNZq2klsiQSRLK1u60xLzeU1RtbzRALU1g5vjMcBs8OmhkOvJY-kqHWyJFAj1_3nMZoFjcbpAvzVrwASdctfkFlbdnNvo8R9Uyjj4EGHdi02aqQeM/w640-h376/image.png" width="640" /></a></div><br />After uninstalling the update, the server will reboot.</div></div></div><div>Please note that virtual machines will not start automatically after restarting the hypervisor. You will need to manually change the state of virtual machines (start).</div><div>Temporarily disable the installation of system updates or specifically updates: 2022-01 Security Monthly Quality Rollup for Windows Server 2012 R2 x64-based System (KB5009624):</div><div><br /></div><div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlMpMii9e1B-5Z224h4R2rt2-k4_nRUVt5b8PhXJpnu4jqfB274VtLCPsvYgYtdUY-4wFWvqHsgflJc9PmyLXMvNfZIzJRU36Bm15S7Gm8LprjX1SgJ-AjtVVww4V5DKvIWtia6ofnQM/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="498" data-original-width="829" height="384" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlMpMii9e1B-5Z224h4R2rt2-k4_nRUVt5b8PhXJpnu4jqfB274VtLCPsvYgYtdUY-4wFWvqHsgflJc9PmyLXMvNfZIzJRU36Bm15S7Gm8LprjX1SgJ-AjtVVww4V5DKvIWtia6ofnQM/w640-h384/image.png" width="640" /></a>
</div><div><br /></div><div><br /></div><div>Colleagues report that security update KB5009624 on Windows Server 2012 R2 breaks network folder access from scanners. When you try to scan to a network folder, for example, from an HP MFP, DNS drops, the domain controller reports that Windows has found an error and a minute later it goes into reboot.</div><div><br /></div><div><b>Official Microsoft comments about issues in this update (KB5009624):</b></div><table border="1" style="border-collapse: collapse; border: 1px dotted gray; margin: 10px;"><tbody><tr><td style="background-color: lightyellow; padding: 5px;"><div>After installing this update on a device by using Unified Extensible Firmware Interface (UEFI), virtual machines (VMs) in Hyper-V might not start.</div><div>We are currently investigating and will provide an update in an upcoming release.</div></td></tr></tbody></table><div>UPDATE:</div><div><div>For solve this issue Microsoft provided the update <b style="background-color: #fcff01;">KB5010794</b>: Out-of-band update for Windows 8.1 and Windows Server 2012 R2.</div><div>This update resolves the following issues: </div><div>• Virtual machines (VMs) located on a server that has Unified Extensible Firmware Interface (UEFI) enabled fail to start after installing update KB5009624.</div><div>• Active Directory attributes are not written correctly during a Lightweight Directory Access Protocol (LDAP) modify operation with multiple specific attribute changes.</div><div>• Windows Servers might restart unexpectedly after installing update KB5009624 on domain controllers (DCs).</div></div><div><br /></div><div>You need to install this update:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUH6TaxzC2pDZxEUyYcXKEva8DSdwkRJzeV-B_wS19kh_qQDVjevewQToyZw-8zetahfpW4aLXS7DasA2BdDisCs_MY2iWGnHAUYjb4JF1-Fp7GYvzfNb19kqZRD1-R8C5-8uIlb7bfE/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="675" data-original-width="1082" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUH6TaxzC2pDZxEUyYcXKEva8DSdwkRJzeV-B_wS19kh_qQDVjevewQToyZw-8zetahfpW4aLXS7DasA2BdDisCs_MY2iWGnHAUYjb4JF1-Fp7GYvzfNb19kqZRD1-R8C5-8uIlb7bfE/w640-h400/image.png" width="640" /></a></div><br /><br /></div><div><br /></div><div><a href="https://www.e-du.ru/2022/01/hyper-v-vm-saved-error-failed-to-restore-virtual-machine-state-windows-server-2012r2.html">Эта же статья на русском</a></div>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><span style="color: #38761d;"><i>If you liked the article, please like, repost or leave a comment. If you have any comments, also write comments</i></span><i><span style="color: #38761d;">.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com9tag:blogger.com,1999:blog-4403788466717695768.post-78714574270832276902022-01-12T10:45:00.095+04:002022-01-19T15:26:01.633+04:00Hyper-V VM Saved ошибка failed to restore virtual machine state (Windows Server 2012 R2)<div><div><b>Дано</b>: Microsoft Windows Server 2012 R2 Hyper-V (Hypervisor).</div><div><br /></div><div>Сегодня внезапно часть виртуальных машин перешла в состояние <b>Saved </b>(а на некоторых серверах все виртуалки), а при попытке их запустить (выполнить <b>Start</b>) получаем сообщение об ошибке:</div><div><br /></div><div><span style="color: red;">SERVER-NAME failed to restore virtual machine state.</span></div><div><span style="color: red;">Virtual machine SERVER-NAME could not be started because the hypervisor is not running.</span></div><div><br /></div><div>На более старых гипервизорах ошибка такая:</div><div><span style="color: red;">SERVER-NAME failed to change state.</span></div></div><div></div><span><a name='more'></a></span><div>Скриншот состояний виртуальных машин:</div><div><br /></div><div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGS2cXmi0E85f0X9c9BcFbZ63bHaTRsVxoy2FVayssZGAMpPCXxNEo39sND1mOdSuC9AUtcMovduboHJ0Q7NCij6mb-pk8EaL7AulT2-exyQZHTpmBgd3RegPrcb7hWMB3Syxt1bPZ8XU/s16000/image.png"><img data-original-height="728" data-original-width="1083" height="430" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGS2cXmi0E85f0X9c9BcFbZ63bHaTRsVxoy2FVayssZGAMpPCXxNEo39sND1mOdSuC9AUtcMovduboHJ0Q7NCij6mb-pk8EaL7AulT2-exyQZHTpmBgd3RegPrcb7hWMB3Syxt1bPZ8XU/w640-h430/image.png" width="640" /></a></div><div><br /></div><div>Сообщение об ошибке:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dEa13p5aqACfEcrtOUN5XAhtUQm_qIOu5z-7pIOzDT9cVl10KP427_wiOcyhij3QhvKo5_QeM5grkg4dQao8VdvBeeH8aWN56n9Oi6e4jgiQmq3dj9AOs-wz50_7zDv5-M5zGx8NZMc/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="232" data-original-width="526" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dEa13p5aqACfEcrtOUN5XAhtUQm_qIOu5z-7pIOzDT9cVl10KP427_wiOcyhij3QhvKo5_QeM5grkg4dQao8VdvBeeH8aWN56n9Oi6e4jgiQmq3dj9AOs-wz50_7zDv5-M5zGx8NZMc/s16000/image.png" /></a></div><br /><div><div>Ошибки обнаруженные в системных логах:</div></div><div><br /></div><div>System Error </div><div>Source: Hyper-V-Hypervisor</div><div>Error ID: 80</div><div><span style="color: red;">Hypervisor launch failed; The operating systems boot loader failed with error 0xC00000BB.</span></div><div><br /></div><div>Log Name: Microsoft-Windows-Hyper-V-VMMS/Admin</div><div>Source: Hyper-V-VMMS</div><div>Error ID: 15160</div><div><span style="color: red;">'SERVER-NAME' failed to restore virtual machine state. </span></div><div><br /></div><div>Log Name: Microsoft-Windows-Hyper-V-VMMS/Admin</div><div>Source: Hyper-V-VMMS</div><div>Error ID: 15350</div><div><span style="color: red;">The virtualization infrastructure driver (VID) is not running.</span></div><div><br /></div><div>Log Name: Microsoft-Windows-Hyper-V-VMMS/Admin</div><div>Source: Hyper-V-VMMS</div><div>Error ID: 20148</div><div><span style="color: red;">Virtual machine 'SERVER-NAME' could not be started because the hypervisor is not running</span> (Virtual machine ID 53E42B3E-32CA-4F38-BF0F-C22D8CCED5A7). The following actions may help you resolve the problem: 1) Verify that the processor of the physical computer has a supported version of hardware-assisted virtualization. 2) Verify that hardware-assisted virtualization and hardware-assisted data execution protection are enabled in the BIOS of the physical computer. (If you edit the BIOS to enable either setting, you must turn off the power to the physical computer and then turn it back on. Resetting the physical computer is not sufficient.) 3) If you have made changes to the Boot Configuration Data store, review these changes to ensure that the hypervisor is configured to launch automatically. </div></div><div><br /></div><div><span style="background-color: #fcff01;"><b>РЕШЕНИЕ:</b></span></div><div><br /></div><div><div>Проблема связана с <b>Ежемесячным накопительным пакетом обновлений KB5009624 </b></div><div><b>KB5009624 (Monthly Rollup)</b></div><div><br /></div><div>Для подтверждения этого найдите в истории обновлений строку:</div><div><b>2022-01 Security Monthly Quality Rollup for Windows Server 2012 R2 x64-based System (KB5009624)</b></div></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1NLCC7gx-ljJb4wSQqg9jZX0XYqMrlVPA4qcPFqJ8tNjQM_tV2l9lnr3szOhvmpSYYUrtb2gFpmb1aM4rDixsrfZChzHaW-xrTzoqWIo3zIxahlrhdW2SR6MR6ziDD1A1qkrxFxW1-7c/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="870" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1NLCC7gx-ljJb4wSQqg9jZX0XYqMrlVPA4qcPFqJ8tNjQM_tV2l9lnr3szOhvmpSYYUrtb2gFpmb1aM4rDixsrfZChzHaW-xrTzoqWIo3zIxahlrhdW2SR6MR6ziDD1A1qkrxFxW1-7c/w640-h376/image.png" width="640" /></a></div><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAyYH0HfwbCy6tYP_yqDAVlg7ldIdR9WQt-QuYYCLhILBz6VUrt4Lk3P-4Nz8dNz1V0VRaFPj6yRrdLTAsORObjYguyzzDNjoDN9FW1OKEaEqHsA64O99zQOEohU-4vi-oSOoUq0P5EQU/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="868" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAyYH0HfwbCy6tYP_yqDAVlg7ldIdR9WQt-QuYYCLhILBz6VUrt4Lk3P-4Nz8dNz1V0VRaFPj6yRrdLTAsORObjYguyzzDNjoDN9FW1OKEaEqHsA64O99zQOEohU-4vi-oSOoUq0P5EQU/w640-h376/image.png" width="640" /></a></div><br /><div>Далее переходим в Панель управления - Установка и удаление программ - Установленные обновления:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OOR10-nXFb0nKPiDfbGvCkKhNakEQABRd2kfOjEMITl5AVGbaKZBbrIWRfarX687NWzhg6IIZ31a2TK2ZoOCAoz1hX5m7kHrIOKIe_5itFF7iJG9xg9CdYOeBIn5Hdv2LAGMnUCQnsY/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="869" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OOR10-nXFb0nKPiDfbGvCkKhNakEQABRd2kfOjEMITl5AVGbaKZBbrIWRfarX687NWzhg6IIZ31a2TK2ZoOCAoz1hX5m7kHrIOKIe_5itFF7iJG9xg9CdYOeBIn5Hdv2LAGMnUCQnsY/w640-h376/image.png" width="640" /></a></div><br /><div>Находим в перечне обновление Security Update for Microsoft Windows (KB5009624):</div></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_yuAoANxOxfhDCH8dSmHjKgyyWikPIkfqX_0llyD5XKiXojc22CDoDn0PMynATLioGNaEUjc09nDy18jKMbZZEjKIxrLkTndrKBNeLzuUhEQZp7y-UxcrbsbrEiZ1-Z_-QWdAHQ8Kak/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="871" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_yuAoANxOxfhDCH8dSmHjKgyyWikPIkfqX_0llyD5XKiXojc22CDoDn0PMynATLioGNaEUjc09nDy18jKMbZZEjKIxrLkTndrKBNeLzuUhEQZp7y-UxcrbsbrEiZ1-Z_-QWdAHQ8Kak/w640-h374/image.png" width="640" /></a></div><br />Удаляем это обновление:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtYAch20XY0a93-j1RNyUkJJ5QzaJNZq2klsiQSRLK1u60xLzeU1RtbzRALU1g5vjMcBs8OmhkOvJY-kqHWyJFAj1_3nMZoFjcbpAvzVrwASdctfkFlbdnNvo8R9Uyjj4EGHdi02aqQeM/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="510" data-original-width="870" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtYAch20XY0a93-j1RNyUkJJ5QzaJNZq2klsiQSRLK1u60xLzeU1RtbzRALU1g5vjMcBs8OmhkOvJY-kqHWyJFAj1_3nMZoFjcbpAvzVrwASdctfkFlbdnNvo8R9Uyjj4EGHdi02aqQeM/w640-h376/image.png" width="640" /></a></div><br />После удаления обновления сервер перезагрузится.</div></div></div><div><div>Обратите внимание, что после перезагрузки гипервизора автоматического запуска виртуальных машин не произойдет. Изменить состояние виртуальных машин (запустить) потребуется вручную.</div></div><div><div>Временно отключите установку системных обновлений или конкретно обновления: 2022-01 Security Monthly Quality Rollup for Windows Server 2012 R2 x64-based System (KB5009624):</div></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlMpMii9e1B-5Z224h4R2rt2-k4_nRUVt5b8PhXJpnu4jqfB274VtLCPsvYgYtdUY-4wFWvqHsgflJc9PmyLXMvNfZIzJRU36Bm15S7Gm8LprjX1SgJ-AjtVVww4V5DKvIWtia6ofnQM/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="498" data-original-width="829" height="384" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUlMpMii9e1B-5Z224h4R2rt2-k4_nRUVt5b8PhXJpnu4jqfB274VtLCPsvYgYtdUY-4wFWvqHsgflJc9PmyLXMvNfZIzJRU36Bm15S7Gm8LprjX1SgJ-AjtVVww4V5DKvIWtia6ofnQM/w640-h384/image.png" width="640" /></a></div><div><br /></div><div>Коллеги сообщают, что обновление безопасности KB5009624 на Windows Server 2012 R2 ломает доступ к сетевой папке со сканеров. При попытке сканирования в сетевую папку, например, с МФУ HP, падает DNS, контроллер доменов сообщал, что Windows нашла ошибку и через минуту уходил в перезагрузку.</div><div><br /></div><div><b>Комментарии Microsoft о проблемах с обновлением KB5009624 (Monthly Rollup):</b></div></div><div>
<table border="1" style="border-collapse: collapse; border: 1px dotted gray; margin: 10px;"><tbody><tr><td style="background-color: lightyellow; padding: 5px;"><div>После установки этого обновления на устройстве с использованием Unified Extensible Firmware Interface (UEFI) виртуальные машины (VMs) в Hyper-V могут не запускаться.</div><div>В настоящее время мы работаем над тем, чтобы предоставить обновление в предстоящем выпуске.
</div></td></tr></tbody></table>
</div><div><br /></div><div>UPDATE:</div><div>Для решения данных проблем Microsoft выпустило обновление <b style="background-color: #fcff01;">KB5010794</b>: внеплановое обновление для Windows 8.1 и Windows Server 2012 R2.</div><div><div>Это обновление устраняет следующие проблемы: </div><div>1. После установки обновления KB5009624 не стартовали виртуальные машины (VMs), расположенные на сервере с включенным Unified Extensible Firmware Interface (UEFI).</div><div>2. Атрибуты Active Directory неправильно записывались во время операции изменения LDAP (с несколькими конкретными атрибутами).</div><div>3. Windows серверы неожиданно перезагружались после установки обновления KB5009624 на контроллерах доменных имен (DCs).</div></div><div><br /></div><div>Необходимо установить это обновление:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUH6TaxzC2pDZxEUyYcXKEva8DSdwkRJzeV-B_wS19kh_qQDVjevewQToyZw-8zetahfpW4aLXS7DasA2BdDisCs_MY2iWGnHAUYjb4JF1-Fp7GYvzfNb19kqZRD1-R8C5-8uIlb7bfE/s16000/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="675" data-original-width="1082" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUH6TaxzC2pDZxEUyYcXKEva8DSdwkRJzeV-B_wS19kh_qQDVjevewQToyZw-8zetahfpW4aLXS7DasA2BdDisCs_MY2iWGnHAUYjb4JF1-Fp7GYvzfNb19kqZRD1-R8C5-8uIlb7bfE/w640-h400/image.png" width="640" /></a></div></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div style="text-align: right;">
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com10tag:blogger.com,1999:blog-4403788466717695768.post-82229503430063418272021-11-23T21:37:00.001+04:002021-11-23T21:37:42.522+04:00Печать символов ASCII на PythonОдин из вариантов вывода на экран списка ASCII символов при помощи циклов и zip:<span><a name='more'></a></span><div><br /></div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;"># Создаем массив символов.<o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">listASCII </span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">=</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">[(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">i</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> chr</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">i</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">))</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">for</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> i </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">in</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> range</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">33</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> </span><span lang="EN-US" style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">127</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">)]</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: green; font-family: "Courier New"; font-size: 10pt;"># Посимвольный вывод в цикле с разбивкой
на 6 колонок.</span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">for</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn1</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn2</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn3</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn4</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn5</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn6 </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">in</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> zip</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(*[</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">iter</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">sum</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">listASCII</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">()))]</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">*</span></b><span lang="EN-US" style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">6</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">):</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">print</span></b><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">'|{:4} {:3} |{:4}
{:3} |{:4} {:3}|'</span><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">.</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">format</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">(</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;">clmn1</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn2</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn3</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn4</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn5</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">,</span></b><span lang="EN-US" style="font-family: "Courier New"; font-size: 10pt;"> clmn6</span><b><span lang="EN-US" style="color: navy; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">))</span></b><span lang="EN-US" style="font-family: "Times New Roman",serif; font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;"><o:p></o:p></span></p></div><div><br /></div><div><br /></div><div>Пример вывода:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvoZHJtdMrpLJq0oapgAp7IBUaHESabeOGuKeQxTgQ54XaZFJQUw5F_Wvtvv6jrGstuU1qrGpDTYbcnfmxYdguykWqn6752AJESNIEk5k4diPtEmHYGqLWZgM-JUXQZMwlDU3fOkmYV7g/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="626" data-original-width="704" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvoZHJtdMrpLJq0oapgAp7IBUaHESabeOGuKeQxTgQ54XaZFJQUw5F_Wvtvv6jrGstuU1qrGpDTYbcnfmxYdguykWqn6752AJESNIEk5k4diPtEmHYGqLWZgM-JUXQZMwlDU3fOkmYV7g/s16000/image.png" /></a></div></div><div><br /></div><div><br />
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-31344294647849764142021-10-25T17:47:00.006+04:002022-02-22T10:48:35.605+04:00[Data Science] Пример анализа данных с использованием моделей KNN, SVM и SVM с гиперпараметрами (для прогноза покупок) <div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Анализируемый датасет содержит размеченные сведения о том, купил ли товар определенный пользователь или нет. О
пользователе известны такие данные как: возраст, пол и ориентировочная зарплата.
О покупках данные представлены в виде: 1 - покупка совершена, 0 - нет.
В данной статье попробуем обучить модель, прогнозирующую вероятность соверешения покупки, если нам известны
данные о пользователе.
Будут применены методы: метод ближайшего соседа (KNN, K nearest neighbor), метод опорных векторов (SVM, support
vector machines) и ядра SVM (Kernal SVM) с подбором оптимальных гиперпараметров для модели.</p>
</div>
</div>
<span><a name='more'></a></span><p><br /></p>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a href="#1">1. Импортирование нужных библиотек и загрузка данных из датасета</a></p>
<p><a href="#2">2. Анализ датасета</a></p>
<p><a href="#3">3. Анализ и визуализация цели</a></p>
<p><a href="#4">4. Кодирование категориальных данных</a></p>
<p><a href="#5">5. Разделение датасета на тренировочный и тестовый блоки</a></p>
<p><a href="#6">6. Нормализация данных (масштабирование признаков (фич))</a></p>
<p><a href="#7">7. Метод K-ближайших соседей (K Nearest Neighbor(KNN)</a></p>
<p><a href="#8">8. Выбор значения K</a></p>
<p><a href="#9">9. Метод опорных векторов (SVM)</a></p>
<p><a href="#10">10. Настройка гиперпараметров</a></p>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="1"></a> <br /></p>
<h2>1. Импортирование нужных библиотек и загрузка данных из датасета</h2>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># библиотека линейной алгебры</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="c1"># библиотека обработки данных</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="c1"># библиотеки для визуализации</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="nn">sns</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="c1"># библиотека обработки фич</span>
<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="kn">import</span> <span class="n">StandardScaler</span>
<span class="c1"># библиотека для разделения данных на тренировочные и тестовые</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="kn">import</span> <span class="n">train_test_split</span>
<span class="c1"># библиотеки для классификации в моделях</span>
<span class="kn">from</span> <span class="nn">sklearn.neighbors</span> <span class="kn">import</span> <span class="n">KNeighborsClassifier</span>
<span class="kn">from</span> <span class="nn">sklearn.svm</span> <span class="kn">import</span> <span class="n">SVC</span>
<span class="c1"># библиотека настройки гиперпараметров</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="kn">import</span> <span class="n">GridSearchCV</span>
<span class="c1"># библиотеки оценивания\метрики</span>
<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="kn">import</span> <span class="n">confusion_matrix</span><span class="p">,</span> <span class="n">accuracy_score</span><span class="p">,</span> <span class="n">classification_report</span><span class="p">,</span><span class="n">recall_score</span><span class="p">,</span><span class="n">precision_score</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># библиотека для "раскраски" таблиц.</span>
<span class="kn">import</span> <span class="nn">jinja2</span>
<span class="c1"># если модуль не установлен, то выполнить команду ниже</span>
<span class="c1"># !pip install Jinja2</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Загрузка данных из csv-файла.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s1">'data.csv'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="2"></a> <br /></p>
<h2>2. Анализ датасета
</h2>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Смотрим размер таблицы.</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Количество строк = "</span><span class="p">,</span> <span class="n">df</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">" </span><span class="se">\n</span><span class="s2">Количество столбцов = "</span> <span class="p">,</span> <span class="n">df</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>Количество строк = 400
Количество столбцов = 5
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Смотрим список столбцов.</span>
<span class="n">df</span><span class="o">.</span><span class="n">columns</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>Index(['ID', 'Пол', 'Возраст', 'Зарплата', 'Покупка'], dtype='object')</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Смотрим информацию о столбцах и выводим несколько случайных строк с данными.</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">info</span><span class="p">())</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre><class 'pandas.core.frame.DataFrame'>
RangeIndex: 400 entries, 0 to 399
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Возраст 400 non-null int8
1 Зарплата 400 non-null int32
2 Покупка 400 non-null int8
3 Пол_м 400 non-null uint8
dtypes: int32(1), int8(2), uint8(1)
memory usage: 2.9 KB
None
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Видим, что числовые столбцы определились неоптимальным типом (int64), поэтому при больших данных можно
применить функцию оптимизации из этой <a href="https://www.e-du.ru/2021/10/optimize-dataframe-memory-usage.html" target="_blank">статьи</a>.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Выводим несколько случайных строк с данными.</span>
<span class="c1"># Цвета "расскраски" см. тут https://matplotlib.org/stable/tutorials/colors/colormaps.html</span>
<span class="c1"># "расскраска" по столбцам</span>
<span class="n">df</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">style</span><span class="o">.</span><span class="n">background_gradient</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html">
<style type="text/css">
#T_eee45_row0_col0 {
background-color: #4ea7b0;
color: #f1f1f1;
}
#T_eee45_row0_col1 {
background-color: #feca79;
color: #000000;
}
#T_eee45_row0_col2,
#T_eee45_row0_col3,
#T_eee45_row1_col2,
#T_eee45_row1_col3,
#T_eee45_row2_col3,
#T_eee45_row4_col2,
#T_eee45_row4_col3,
#T_eee45_row6_col3,
#T_eee45_row7_col1,
#T_eee45_row7_col2,
#T_eee45_row8_col2,
#T_eee45_row8_col3,
#T_eee45_row9_col0,
#T_eee45_row9_col2 {
background-color: #9e0142;
color: #f1f1f1;
}
#T_eee45_row1_col0,
#T_eee45_row7_col0 {
background-color: #d9444d;
color: #f1f1f1;
}
#T_eee45_row1_col1 {
background-color: #c72e4c;
color: #f1f1f1;
}
#T_eee45_row2_col0,
#T_eee45_row2_col2,
#T_eee45_row3_col0,
#T_eee45_row3_col2,
#T_eee45_row3_col3,
#T_eee45_row5_col2,
#T_eee45_row5_col3,
#T_eee45_row6_col1,
#T_eee45_row6_col2,
#T_eee45_row7_col3,
#T_eee45_row9_col3 {
background-color: #5e4fa2;
color: #f1f1f1;
}
#T_eee45_row2_col1 {
background-color: #f7814c;
color: #f1f1f1;
}
#T_eee45_row3_col1 {
background-color: #da464d;
color: #f1f1f1;
}
#T_eee45_row4_col0 {
background-color: #f6fbb0;
color: #000000;
}
#T_eee45_row4_col1 {
background-color: #cb334d;
color: #f1f1f1;
}
#T_eee45_row5_col0 {
background-color: #c6e89f;
color: #000000;
}
#T_eee45_row5_col1 {
background-color: #3a7eb8;
color: #f1f1f1;
}
#T_eee45_row6_col0 {
background-color: #ffffbe;
color: #000000;
}
#T_eee45_row8_col0 {
background-color: #b11747;
color: #f1f1f1;
}
#T_eee45_row8_col1 {
background-color: #e55749;
color: #f1f1f1;
}
#T_eee45_row9_col1 {
background-color: #a20643;
color: #f1f1f1;
}
</style>
<table id="T_eee45_">
<thead>
<tr>
<th class="blank level0"> </th>
<th class="col_heading level0 col0">Возраст</th>
<th class="col_heading level0 col1">Зарплата</th>
<th class="col_heading level0 col2">Покупка</th>
<th class="col_heading level0 col3">Пол_м</th>
</tr>
</thead>
<tbody>
<tr>
<th class="row_heading level0 row0" id="T_eee45_level0_row0">171</th>
<td class="data row0 col0" id="T_eee45_row0_col0">41</td>
<td class="data row0 col1" id="T_eee45_row0_col1">60000</td>
<td class="data row0 col2" id="T_eee45_row0_col2">0</td>
<td class="data row0 col3" id="T_eee45_row0_col3">0</td>
</tr>
<tr>
<th class="row_heading level0 row1" id="T_eee45_level0_row1">42</th>
<td class="data row1 col0" id="T_eee45_row1_col0">22</td>
<td class="data row1 col1" id="T_eee45_row1_col1">27000</td>
<td class="data row1 col2" id="T_eee45_row1_col2">0</td>
<td class="data row1 col3" id="T_eee45_row1_col3">0</td>
</tr>
<tr>
<th class="row_heading level0 row2" id="T_eee45_level0_row2">107</th>
<td class="data row2 col0" id="T_eee45_row2_col0">45</td>
<td class="data row2 col1" id="T_eee45_row2_col1">45000</td>
<td class="data row2 col2" id="T_eee45_row2_col2">1</td>
<td class="data row2 col3" id="T_eee45_row2_col3">0</td>
</tr>
<tr>
<th class="row_heading level0 row3" id="T_eee45_level0_row3">62</th>
<td class="data row3 col0" id="T_eee45_row3_col0">45</td>
<td class="data row3 col1" id="T_eee45_row3_col1">32000</td>
<td class="data row3 col2" id="T_eee45_row3_col2">1</td>
<td class="data row3 col3" id="T_eee45_row3_col3">1</td>
</tr>
<tr>
<th class="row_heading level0 row4" id="T_eee45_level0_row4">47</th>
<td class="data row4 col0" id="T_eee45_row4_col0">33</td>
<td class="data row4 col1" id="T_eee45_row4_col1">28000</td>
<td class="data row4 col2" id="T_eee45_row4_col2">0</td>
<td class="data row4 col3" id="T_eee45_row4_col3">0</td>
</tr>
<tr>
<th class="row_heading level0 row5" id="T_eee45_level0_row5">362</th>
<td class="data row5 col0" id="T_eee45_row5_col0">36</td>
<td class="data row5 col1" id="T_eee45_row5_col1">125000</td>
<td class="data row5 col2" id="T_eee45_row5_col2">1</td>
<td class="data row5 col3" id="T_eee45_row5_col3">1</td>
</tr>
<tr>
<th class="row_heading level0 row6" id="T_eee45_level0_row6">377</th>
<td class="data row6 col0" id="T_eee45_row6_col0">32</td>
<td class="data row6 col1" id="T_eee45_row6_col1">135000</td>
<td class="data row6 col2" id="T_eee45_row6_col2">1</td>
<td class="data row6 col3" id="T_eee45_row6_col3">0</td>
</tr>
<tr>
<th class="row_heading level0 row7" id="T_eee45_level0_row7">9</th>
<td class="data row7 col0" id="T_eee45_row7_col0">22</td>
<td class="data row7 col1" id="T_eee45_row7_col1">18000</td>
<td class="data row7 col2" id="T_eee45_row7_col2">0</td>
<td class="data row7 col3" id="T_eee45_row7_col3">1</td>
</tr>
<tr>
<th class="row_heading level0 row8" id="T_eee45_level0_row8">76</th>
<td class="data row8 col0" id="T_eee45_row8_col0">20</td>
<td class="data row8 col1" id="T_eee45_row8_col1">36000</td>
<td class="data row8 col2" id="T_eee45_row8_col2">0</td>
<td class="data row8 col3" id="T_eee45_row8_col3">0</td>
</tr>
<tr>
<th class="row_heading level0 row9" id="T_eee45_level0_row9">13</th>
<td class="data row9 col0" id="T_eee45_row9_col0">19</td>
<td class="data row9 col1" id="T_eee45_row9_col1">19000</td>
<td class="data row9 col2" id="T_eee45_row9_col2">0</td>
<td class="data row9 col3" id="T_eee45_row9_col3">1</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Все поля числовые, кроме пола (имеем одну категорию Пол).</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># анализируем основные показатели по числовым столбцам</span>
<span class="c1"># "расскраска" по строкам</span>
<span class="n">df</span><span class="o">.</span><span class="n">describe</span><span class="p">()</span><span class="o">.</span><span class="n">T</span><span class="o">.</span><span class="n">style</span><span class="o">.</span><span class="n">background_gradient</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html">
<style type="text/css">
#T_bb8e7_row0_col0 {
background-color: #bc2249;
color: #f1f1f1;
}
#T_bb8e7_row0_col1,
#T_bb8e7_row0_col5 {
background-color: #4e63ac;
color: #f1f1f1;
}
#T_bb8e7_row0_col2,
#T_bb8e7_row1_col2,
#T_bb8e7_row2_col0,
#T_bb8e7_row3_col1,
#T_bb8e7_row3_col2,
#T_bb8e7_row3_col3,
#T_bb8e7_row3_col4,
#T_bb8e7_row3_col5,
#T_bb8e7_row3_col6,
#T_bb8e7_row3_col7 {
background-color: #9e0142;
color: #f1f1f1;
}
#T_bb8e7_row0_col3 {
background-color: #3d79b6;
color: #f1f1f1;
}
#T_bb8e7_row0_col4 {
background-color: #466eb1;
color: #f1f1f1;
}
#T_bb8e7_row0_col6 {
background-color: #5758a6;
color: #f1f1f1;
}
#T_bb8e7_row0_col7,
#T_bb8e7_row1_col0,
#T_bb8e7_row2_col7,
#T_bb8e7_row3_col0 {
background-color: #5e4fa2;
color: #f1f1f1;
}
#T_bb8e7_row1_col1,
#T_bb8e7_row1_col5 {
background-color: #c32a4b;
color: #f1f1f1;
}
#T_bb8e7_row1_col3 {
background-color: #a70b44;
color: #f1f1f1;
}
#T_bb8e7_row1_col4 {
background-color: #b81e48;
color: #f1f1f1;
}
#T_bb8e7_row1_col6 {
background-color: #d0384e;
color: #f1f1f1;
}
#T_bb8e7_row1_col7 {
background-color: #dd4a4c;
color: #f1f1f1;
}
#T_bb8e7_row2_col1 {
background-color: #fff3ac;
color: #000000;
}
#T_bb8e7_row2_col2 {
background-color: #f67c4a;
color: #f1f1f1;
}
#T_bb8e7_row2_col3 {
background-color: #d23a4e;
color: #f1f1f1;
}
#T_bb8e7_row2_col4 {
background-color: #fba35c;
color: #000000;
}
#T_bb8e7_row2_col5 {
background-color: #fff5ae;
color: #000000;
}
#T_bb8e7_row2_col6 {
background-color: #eaf79e;
color: #000000;
}
</style>
<table id="T_bb8e7_">
<thead>
<tr>
<th class="blank level0"> </th>
<th class="col_heading level0 col0">count</th>
<th class="col_heading level0 col1">mean</th>
<th class="col_heading level0 col2">std</th>
<th class="col_heading level0 col3">min</th>
<th class="col_heading level0 col4">25%</th>
<th class="col_heading level0 col5">50%</th>
<th class="col_heading level0 col6">75%</th>
<th class="col_heading level0 col7">max</th>
</tr>
</thead>
<tbody>
<tr>
<th class="row_heading level0 row0" id="T_bb8e7_level0_row0">ID</th>
<td class="data row0 col0" id="T_bb8e7_row0_col0">400.000000</td>
<td class="data row0 col1" id="T_bb8e7_row0_col1">5058.500000</td>
<td class="data row0 col2" id="T_bb8e7_row0_col2">115.614301</td>
<td class="data row0 col3" id="T_bb8e7_row0_col3">4859.000000</td>
<td class="data row0 col4" id="T_bb8e7_row0_col4">4958.750000</td>
<td class="data row0 col5" id="T_bb8e7_row0_col5">5058.500000</td>
<td class="data row0 col6" id="T_bb8e7_row0_col6">5158.250000</td>
<td class="data row0 col7" id="T_bb8e7_row0_col7">5258.000000</td>
</tr>
<tr>
<th class="row_heading level0 row1" id="T_bb8e7_level0_row1">Возраст</th>
<td class="data row1 col0" id="T_bb8e7_row1_col0">400.000000</td>
<td class="data row1 col1" id="T_bb8e7_row1_col1">37.655000</td>
<td class="data row1 col2" id="T_bb8e7_row1_col2">10.482877</td>
<td class="data row1 col3" id="T_bb8e7_row1_col3">18.000000</td>
<td class="data row1 col4" id="T_bb8e7_row1_col4">29.750000</td>
<td class="data row1 col5" id="T_bb8e7_row1_col5">37.000000</td>
<td class="data row1 col6" id="T_bb8e7_row1_col6">46.000000</td>
<td class="data row1 col7" id="T_bb8e7_row1_col7">60.000000</td>
</tr>
<tr>
<th class="row_heading level0 row2" id="T_bb8e7_level0_row2">Зарплата</th>
<td class="data row2 col0" id="T_bb8e7_row2_col0">400.000000</td>
<td class="data row2 col1" id="T_bb8e7_row2_col1">69742.500000</td>
<td class="data row2 col2" id="T_bb8e7_row2_col2">34096.960282</td>
<td class="data row2 col3" id="T_bb8e7_row2_col3">15000.000000</td>
<td class="data row2 col4" id="T_bb8e7_row2_col4">43000.000000</td>
<td class="data row2 col5" id="T_bb8e7_row2_col5">70000.000000</td>
<td class="data row2 col6" id="T_bb8e7_row2_col6">88000.000000</td>
<td class="data row2 col7" id="T_bb8e7_row2_col7">150000.000000</td>
</tr>
<tr>
<th class="row_heading level0 row3" id="T_bb8e7_level0_row3">Покупка</th>
<td class="data row3 col0" id="T_bb8e7_row3_col0">400.000000</td>
<td class="data row3 col1" id="T_bb8e7_row3_col1">0.357500</td>
<td class="data row3 col2" id="T_bb8e7_row3_col2">0.479864</td>
<td class="data row3 col3" id="T_bb8e7_row3_col3">0.000000</td>
<td class="data row3 col4" id="T_bb8e7_row3_col4">0.000000</td>
<td class="data row3 col5" id="T_bb8e7_row3_col5">0.000000</td>
<td class="data row3 col6" id="T_bb8e7_row3_col6">1.000000</td>
<td class="data row3 col7" id="T_bb8e7_row3_col7">1.000000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># проверяем на наличие дубликатов.</span>
<span class="n">df</span><span class="o">.</span><span class="n">duplicated</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>0</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Анализ на пропущенные значения</span>
<span class="n">df</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>ID 0
Пол 0
Возраст 0
Зарплата 0
Покупка 0
dtype: int64</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
В данном датасете нет пропущенных значений.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Тепловая карта (heatmap)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="n">mask</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">triu</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">corr</span><span class="p">(),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">bool</span><span class="p">))</span>
<span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">corr</span><span class="p">(),</span> <span class="n">mask</span> <span class="o">=</span> <span class="n">mask</span><span class="p">,</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">);</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">correlation</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">corr</span><span class="p">()</span><span class="o">.</span><span class="n">Покупка</span><span class="p">)</span>
<span class="n">correlation</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html">
<div>
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Покупка</th>
</tr>
</thead>
<tbody>
<tr>
<th>ID</th>
<td>0.614944</td>
</tr>
<tr>
<th>Возраст</th>
<td>0.622454</td>
</tr>
<tr>
<th>Зарплата</th>
<td>0.362083</td>
</tr>
<tr>
<th>Покупка</th>
<td>1.000000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Колонка с идентификатором пользователя уникальная для всех, поэтому не может участвовать в прогнозе и может
быть удалена.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s1">'ID'</span><span class="p">,</span> <span class="n">axis</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">mask</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">triu</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">corr</span><span class="p">(),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">bool</span><span class="p">))</span>
<span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">corr</span><span class="p">(),</span> <span class="n">mask</span> <span class="o">=</span> <span class="n">mask</span><span class="p">,</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">);</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="3"></a> <br /></p>
<h2>3. Анализ и визуализация цели
</h2>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Смотрим количество покупок и "не покупок"</span>
<span class="n">df</span><span class="p">[</span><span class="s1">'Покупка'</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>0 257
1 143
Name: Покупка, dtype: int64</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># в виде гистограммы</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
<span class="n">sns</span><span class="o">.</span><span class="n">countplot</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="s2">"Покупка"</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">palette</span><span class="o">=</span><span class="s2">"Spectral"</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>Визуализация и анализ цели в зависимости от пола
</h3>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
<span class="n">sns</span><span class="o">.</span><span class="n">catplot</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="s1">'Покупка'</span><span class="p">,</span> <span class="n">col</span><span class="o">=</span><span class="s1">'Пол'</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s1">'count'</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span><span class="n">palette</span><span class="o">=</span><span class="s2">"Spectral"</span><span class="p">);</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre><Figure size 720x216 with 0 Axes></pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">pd</span><span class="o">.</span><span class="n">crosstab</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">Пол</span><span class="p">,</span> <span class="n">df</span><span class="o">.</span><span class="n">Покупка</span><span class="p">,</span> <span class="n">normalize</span> <span class="o">=</span> <span class="s2">"index"</span> <span class="p">)</span><span class="o">.</span><span class="n">style</span><span class="o">.</span><span class="n">background_gradient</span><span class="p">(</span><span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html">
<style type="text/css">
#T_d3178_row0_col0,
#T_d3178_row1_col1 {
background-color: #9e0142;
color: #f1f1f1;
}
#T_d3178_row0_col1,
#T_d3178_row1_col0 {
background-color: #5e4fa2;
color: #f1f1f1;
}
</style>
<table id="T_d3178_">
<thead>
<tr>
<th class="index_name level0">Покупка</th>
<th class="col_heading level0 col0">0</th>
<th class="col_heading level0 col1">1</th>
</tr>
<tr>
<th class="index_name level0">Пол</th>
<th class="blank col0"> </th>
<th class="blank col1"> </th>
</tr>
</thead>
<tbody>
<tr>
<th class="row_heading level0 row0" id="T_d3178_level0_row0">ж</th>
<td class="data row0 col0" id="T_d3178_row0_col0">0.622549</td>
<td class="data row0 col1" id="T_d3178_row0_col1">0.377451</td>
</tr>
<tr>
<th class="row_heading level0 row1" id="T_d3178_level0_row1">м</th>
<td class="data row1 col0" id="T_d3178_row1_col0">0.663265</td>
<td class="data row1 col1" id="T_d3178_row1_col1">0.336735</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
На данном примере видно соотношение женщин и мужчик совершивших покупки (целевой критерий). </p>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>Распределение и визуализация значений возраста и ориентировочной зарплаты
</h3>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># анализ распределения возраста</span>
<span class="n">sns</span><span class="o">.</span><span class="n">histplot</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">'Возраст'</span><span class="p">],</span> <span class="n">kde</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'green'</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre><AxesSubplot:xlabel='Возраст', ylabel='Count'></pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># анализ распределения зарплаты</span>
<span class="n">sns</span><span class="o">.</span><span class="n">histplot</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">'Зарплата'</span><span class="p">],</span> <span class="n">kde</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'blue'</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre><AxesSubplot:xlabel='Зарплата', ylabel='Count'></pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Смещение в сторону возрастной группы 35-40 лет, а по заработной плате - от 70 до 90 тысяч </p>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>Парный график возраста и зарплаты в соотнесении с целевым критерием (покупкой)
</h3>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">sns</span><span class="o">.</span><span class="n">pairplot</span><span class="p">(</span><span class="n">df</span> <span class="p">,</span> <span class="n">hue</span> <span class="o">=</span> <span class="s1">'Покупка'</span><span class="p">,</span> <span class="n">palette</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">,</span> <span class="n">corner</span><span class="o">=</span><span class="kc">True</span> <span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre><seaborn.axisgrid.PairGrid at 0x146bce1a100></pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>Диаграмма разброса возраста и заработной платы по отношению к цели
</h3>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">sns</span><span class="o">.</span><span class="n">scatterplot</span><span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="s1">'Возраст'</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="s1">'Зарплата'</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">df</span><span class="p">,</span> <span class="n">hue</span> <span class="o">=</span> <span class="s1">'Покупка'</span><span class="p">,</span> <span class="n">palette</span> <span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre><AxesSubplot:xlabel='Возраст', ylabel='Зарплата'></pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Из парного графика и диаграммы разброса видно, что если масштабирование не выполняется, зарплата будет
преобладать над возрастом, что приведет к смещению модели. Масштабирование фич будет выполнено после
разделения модели на тренировочный и тестовый наборы. </p>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="4"></a> <br /></p>
<h2>
4. Кодирование категориальных данных
</h2>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Колонка Пол содержит категориальные значения, поэтому ее необходимо закодировать в числовые значения до
построения модели.</p>
<p>При кодировании категориальных данных для каждого различного значения будет создана фиктивная числовая
переменная для указанных колонок. Для этого применяем функцию pandas.get_dummies(), которая возвращает
преобразованные данные, а также удаляет исходные (в зависимости от значения параметра drop_first).</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">get_dummies</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Пол'</span><span class="p">],</span> <span class="n">drop_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html">
<div>
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Возраст</th>
<th>Зарплата</th>
<th>Покупка</th>
<th>Пол_м</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>26</td>
<td>15000</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<th>1</th>
<td>26</td>
<td>15000</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2</th>
<td>30</td>
<td>15000</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<th>3</th>
<td>31</td>
<td>15000</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>4</th>
<td>21</td>
<td>16000</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="5"></a> <br /></p>
<h2>5. Разделение датасета на тренировочный и тестовый блоки
</h2>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Сохраняем отдельно целевые значения и отдельные данные без целевых значений.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">X</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="s1">'Покупка'</span><span class="p">],</span> <span class="n">axis</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">'Покупка'</span><span class="p">]</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># разделение данных</span>
<span class="n">X_train</span><span class="p">,</span> <span class="n">X_test</span><span class="p">,</span> <span class="n">y_train</span><span class="p">,</span> <span class="n">y_test</span> <span class="o">=</span> <span class="n">train_test_split</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">test_size</span> <span class="o">=</span> <span class="mf">0.25</span><span class="p">,</span> <span class="n">random_state</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">X_train</span><span class="o">.</span><span class="n">shape</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>(300, 3)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="6"></a> <br /></p>
<h2>6. Нормализация данных (масштабирование признаков (фич))
</h2>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Масштабирование признаков (фич) - это приведение всех значений всех признаков к "схожему масштабу". Это
предотвращает преобладание одного признака над другим. В данном примере без масштабирования зарплата преобладает
над возрастом.</p>
<p>Эта процедура делается после разделения датасета на тренировочный и тестовый наборы и применяется к
тренировочному набору.</p>
<p>Для масштабирования признаков используем метод fit_transform() для тренировочных данных и метод transform() для
тестовых.</p>
<p>fit_transform() : - применяется только к тренировочному набору данных. Он содержит два метода: fit() и
transform(). Fit() произведет необходимые математические вычисления и получит средние значения и стандартные
отклонение на базе входных данных. Это делается на тренировочных данных для того, чтобы модель не знала значения
из тестового набора, т.к. предполагается, что тестовые данные - это как бы реальные данные для проверки работы
модели. Метод transform() применит вычисленные значения к набору данных или преобразует данные в соответствии с
моделью.</p>
<p>transform() :- Метод transform() применяется к тестовому набору данных, и тестовые данные трансформируются или
масштабируются при помощи параметров модели, обученной на применении соответствующего метода на тренировочном
датасете.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">cols</span> <span class="o">=</span> <span class="n">X_train</span><span class="o">.</span><span class="n">columns</span>
<span class="n">cols</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>Index(['Возраст', 'Зарплата', 'Пол_м'], dtype='object')</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Выполнение стандартизации при помощи sklearn.preprocessing.StandardScaler</span>
<span class="n">sc</span> <span class="o">=</span> <span class="n">StandardScaler</span><span class="p">()</span>
<span class="n">X_train</span> <span class="o">=</span> <span class="n">sc</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X_train</span><span class="p">)</span>
<span class="n">X_test</span> <span class="o">=</span> <span class="n">sc</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">X_train</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>array([[ 0.18361861, 0.2184173 , 1.05483461],
[ 0.7564323 , -1.14483856, -0.94801592],
...
[ 0.85190124, -0.64102661, -0.94801592],
[-0.48466403, -1.26338255, -0.94801592],
[ 1.71112178, -0.31503065, 1.05483461]])</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">X_test</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>array([[ 0.27908756, -0.55211862, 1.05483461],
[-0.77107087, 0.54441326, 1.05483461],
[ 2.09299757, 1.1074972 , -0.94801592],
....
[ 0.85190124, 2.17439309, -0.94801592],
[-0.86653982, 0.27768929, 1.05483461],
[-0.19825718, 1.64094515, -0.94801592]])</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Создание датасетов на базе полученных данных.</span>
<span class="n">X_train</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span><span class="n">columns</span><span class="o">=</span><span class="n">cols</span><span class="p">)</span>
<span class="n">X_test</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">X_test</span><span class="p">,</span><span class="n">columns</span><span class="o">=</span><span class="n">cols</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># результат нормализации даных.</span>
<span class="n">X_train</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html">
<div>
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Возраст</th>
<th>Зарплата</th>
<th>Пол_м</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>0.183619</td>
<td>0.218417</td>
<td>1.054835</td>
</tr>
<tr>
<th>1</th>
<td>0.756432</td>
<td>-1.144839</td>
<td>-0.948016</td>
</tr>
<tr>
<th>2</th>
<td>-1.248416</td>
<td>0.574049</td>
<td>1.054835</td>
</tr>
<tr>
<th>3</th>
<td>-0.962009</td>
<td>-0.344667</td>
<td>1.054835</td>
</tr>
<tr>
<th>4</th>
<td>2.092998</td>
<td>0.366597</td>
<td>1.054835</td>
</tr>
<tr>
<th>...</th>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<th>295</th>
<td>0.947370</td>
<td>0.751865</td>
<td>-0.948016</td>
</tr>
<tr>
<th>296</th>
<td>1.042839</td>
<td>-0.166851</td>
<td>1.054835</td>
</tr>
<tr>
<th>297</th>
<td>0.851901</td>
<td>-0.641027</td>
<td>-0.948016</td>
</tr>
<tr>
<th>298</th>
<td>-0.484664</td>
<td>-1.263383</td>
<td>-0.948016</td>
</tr>
<tr>
<th>299</th>
<td>1.711122</td>
<td>-0.315031</td>
<td>1.054835</td>
</tr>
</tbody>
</table>
<p>300 rows × 3 columns</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">X_test</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/html">
<div>
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Возраст</th>
<th>Зарплата</th>
<th>Пол_м</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>0.279088</td>
<td>-0.552119</td>
<td>1.054835</td>
</tr>
<tr>
<th>1</th>
<td>-0.771071</td>
<td>0.544413</td>
<td>1.054835</td>
</tr>
<tr>
<th>2</th>
<td>2.092998</td>
<td>1.107497</td>
<td>-0.948016</td>
</tr>
<tr>
<th>3</th>
<td>-1.630291</td>
<td>-0.077943</td>
<td>-0.948016</td>
</tr>
<tr>
<th>4</th>
<td>-0.293726</td>
<td>0.188781</td>
<td>-0.948016</td>
</tr>
<tr>
<th>...</th>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<th>95</th>
<td>-0.102788</td>
<td>-0.463211</td>
<td>1.054835</td>
</tr>
<tr>
<th>96</th>
<td>-0.102788</td>
<td>-0.522483</td>
<td>1.054835</td>
</tr>
<tr>
<th>97</th>
<td>0.851901</td>
<td>2.174393</td>
<td>-0.948016</td>
</tr>
<tr>
<th>98</th>
<td>-0.866540</td>
<td>0.277689</td>
<td>1.054835</td>
</tr>
<tr>
<th>99</th>
<td>-0.198257</td>
<td>1.640945</td>
<td>-0.948016</td>
</tr>
</tbody>
</table>
<p>100 rows × 3 columns</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># просмотр распределения возраста на базе нормализованных данных</span>
<span class="n">sns</span><span class="o">.</span><span class="n">histplot</span><span class="p">(</span><span class="n">X_train</span><span class="p">[</span><span class="s1">'Возраст'</span><span class="p">],</span> <span class="n">kde</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'green'</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre><AxesSubplot:xlabel='Возраст', ylabel='Count'></pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># просмотр распределения зарплаты на базе нормализованных данных</span>
<span class="n">sns</span><span class="o">.</span><span class="n">histplot</span><span class="p">(</span><span class="n">X_train</span><span class="p">[</span><span class="s1">'Зарплата'</span><span class="p">],</span> <span class="n">kde</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'blue'</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre><AxesSubplot:xlabel='Зарплата', ylabel='Count'></pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="7"></a> <br /></p>
<h2>
7. Метод K-ближайших соседей (K Nearest Neighbor(KNN)
</h2>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>K Nearest Neighbour (KNN) - это алгоритм "обучения с учителем" использующихся в осноном для зада классификации
или регрессии. Он наиболее эффективен для зада классификации, в которых алгоритм определяет к какому
классификационному признаку отнести исходную точку путем определения K-ближайщих точек. KNN классифицирует точку
данных, базируясь на известной классификации других точек (на базе тренировочных данных).</p>
<p>KNN простой алгоритм, работающий на базе пространственной близости/расстояния и не нуждается в построении
модели, поскольку он настраивает несколько параметров и делает предположения.
KNN универсален, но становится медленнее по мере увеличения признаков (фич).</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Создание классификатора</span>
<span class="n">classifierKNN</span> <span class="o">=</span> <span class="n">KNeighborsClassifier</span><span class="p">(</span><span class="n">n_neighbors</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> <span class="n">metric</span> <span class="o">=</span> <span class="s1">'minkowski'</span><span class="p">,</span> <span class="n">p</span> <span class="o">=</span> <span class="mi">2</span><span class="p">)</span>
<span class="c1"># Обучение классификатора на тренировочных данных</span>
<span class="n">classifierKNN</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="o">.</span><span class="n">values</span><span class="p">,</span> <span class="n">y_train</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>KNeighborsClassifier()</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Метрика minkowski здесь означает MinkowskiDistance, которая рассчитывается по формуле как сумма ( | x - y | ^
p) ^( 1/p )</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Применение классификации к тестовым данным.</span>
<span class="n">y_pred</span> <span class="o">=</span> <span class="n">classifierKNN</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="c1"># Результат предсказания покупок на тестовых данных.</span>
<span class="n">y_pred</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1,
1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1], dtype=int8)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">y_test</span><span class="o">.</span><span class="n">values</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1,
1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1], dtype=int8)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Оценка результатов KNN классификации</span>
<span class="c1"># Смотрим матрицу ошибок.</span>
<span class="n">cm1</span> <span class="o">=</span> <span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span><span class="n">y_pred</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">cm1</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>[[63 5]
[ 2 30]]
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># Она же, но графически.</span>
<span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">cm1</span><span class="p">,</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'d'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Из 100 значений предсказаний, только 7 ошибочных.</p>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>Отчет о классификации
</h3>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">classification_report</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">))</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre> precision recall f1-score support
0 0.97 0.93 0.95 68
1 0.86 0.94 0.90 32
accuracy 0.93 100
macro avg 0.91 0.93 0.92 100
weighted avg 0.93 0.93 0.93 100
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Общая точность (accuracy) составляет 93%, а точность (precision), полнота (recall) и F1-мера для предсказания
"не покупок" выше 94%, а для проноза покупок близка к 90%.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># значение ошибки.</span>
<span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">y_pred</span> <span class="o">!=</span> <span class="n">y_test</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>0.07</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="8"></a> <br /></p>
<h2>8. Выбор значения K
</h2>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>В методе KNN выбор значения k очень важен. При маленьком значении k "шум" будет оказывать сильное воздействие
на итоговый результат. Большое значение делает его затратным с точки зрения вычислений и противоречит основной
идее KNN, что близкие точки могут иметь схожие плотности или классы. Значение по умолчанию для количества
k-соседей - 5.</p>
<p>Далее в цикле пробуем применить значения k от 1 до 40 с записью значения ошибки в массив, в дальнейшем с
построением графика по списку ошибок для определения оптимального значения k.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">error_rate</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">40</span><span class="p">):</span>
<span class="c1"># создание KNN классификатора с заданным значением k</span>
<span class="n">knn</span> <span class="o">=</span> <span class="n">KNeighborsClassifier</span><span class="p">(</span><span class="n">n_neighbors</span> <span class="o">=</span> <span class="n">i</span><span class="p">)</span>
<span class="c1"># обучение его на тренировочных данных</span>
<span class="n">knn</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="o">.</span><span class="n">values</span><span class="p">,</span> <span class="n">y_train</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="c1"># прогноз покупок на тестовых данных</span>
<span class="n">pred_i</span> <span class="o">=</span> <span class="n">knn</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="c1"># сохранение значения ошибки</span>
<span class="n">error_rate</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">pred_i</span> <span class="o">!=</span> <span class="n">y_test</span><span class="p">))</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># графическое представление процента ошибок</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">40</span><span class="p">),</span> <span class="n">error_rate</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'red'</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s1">'dashed'</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">'o'</span><span class="p">,</span> <span class="n">markerfacecolor</span><span class="o">=</span><span class="s1">'yellow'</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">6</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Процент ошибок в зависимости от значения K'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'K'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'Процент ошибок'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>Text(0, 0.5, 'Процент ошибок')</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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c7b11lu7Xr16BR2GiIiISKOmTp26xDkXdwzHkknOevXqRVWV5pUVERGRwmdmsbOw/I+qNUVEREQKiJIzERERkQKi5ExERESkgCg5ExERESkgSs5ERERECoiSMxEREZECouRMREREpIAoORMREREpIErORERERAqIkjMRERHJj0kTYWAvqGji7ydNDDqiglQy0zeJiIhIAZs0EUYOh/FrYD9gyjwYNtyvG3J6oKEVGpWciYiISO6NGukTs4OBZvj78Wv8ctmMkjMRERHJvU/n+xKzaPuFl8tmlJyJiIhI7u3UA6bELJsSXi6bUXImIiIiuTdyFJzbEl4HNuDvh7X2y2Uz6hAgIiIiuTfkdHj7HTju77AG2H5bGHWLOgPEoeRMRERE8qNHT3BtoF0z+NHhSswSULWmiIiI5McVV8CyZbDPPlBVFXQ0BUvJmYiIiORP8+YQCsEnn8CaNUFHU5CUnImIiEjuff45/PjHvsQsFILaWpg+PeioCpKSMxEREcm9996D116DFi18cgaq2kxAHQJEREQk96qqoFUr2GknaNoUXnkFBg8OOqqCpORMREREcm/qVNhtN5+YARx6aLDxFDBVa4qIiEhubdoE06bVVWcCfPEF/PGPsHp1cHEVKCVnIiIiklvffQf77Qf771+3bPZsGDkSPvgguLgKlKo1RUREJLe23hpeemnzZZH2ZlVVmydtopIzERERybFNm+ov69IFundXj804lJyJiIhIbh10EJx9dv3loZCSsziUnImIiEjubNzoE7COHeuvGzwYFiyA77/Pf1wFTMmZiIiI5M4nn8DatZv31Iy47DJYsQLatMl/XAVMHQJEREQkdyLVlvGSs7Zt8xtLkVDJmYiIiOROVRW0awfbbx9//ahRcN11eQ2p0KnkTERERHLnoIOgWzdokqA8aPp0P9aZErT/UXImIiIiuXPyyQ2vD4Xg8cf9QLXt2+cnpgKnak0RERHJje++g3nzwLnE20QGo506NT8xFQElZyIiIpIbjz8OvXrBnDmJt4meKUAAJWciIiKSK1VVvqqyd+/E27Rv7+fdNMtfXAVObc5EREQkN6qqfMlYY4nXW2/lJ54ioZIzERERyb61a+HDD+OPbyYNUnImIiIi2ffhh7BhQ3LJ2Sef+HHQXnop93EVASVnIiIikn19+sDDD8MBBzS+bbduUF2tTgFhanMm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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Из графика видно, допустимый уровень ошибок при K от 5 до 18, а при значении K выше 35 уровень ошибок
максимальный.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># анализ результатов при значении K = 10</span>
<span class="n">knn10</span> <span class="o">=</span> <span class="n">KNeighborsClassifier</span><span class="p">(</span><span class="n">n_neighbors</span> <span class="o">=</span> <span class="mi">10</span><span class="p">)</span>
<span class="n">knn10</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="o">.</span><span class="n">values</span><span class="p">,</span><span class="n">y_train</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="n">pred10</span> <span class="o">=</span> <span class="n">knn10</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'При K=10'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred10</span><span class="p">))</span>
<span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred10</span><span class="p">),</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'d'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">classification_report</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred10</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>При K=10
[[65 3]
[ 3 29]]
precision recall f1-score support
0 0.96 0.96 0.96 68
1 0.91 0.91 0.91 32
accuracy 0.94 100
macro avg 0.93 0.93 0.93 100
weighted avg 0.94 0.94 0.94 100
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
K = 5 и K = 10 имеют почти одинаковую точность, полноту и F1-меру.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">knn35</span> <span class="o">=</span> <span class="n">KNeighborsClassifier</span><span class="p">(</span><span class="n">n_neighbors</span> <span class="o">=</span> <span class="mi">35</span><span class="p">)</span>
<span class="n">knn35</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="o">.</span><span class="n">values</span><span class="p">,</span> <span class="n">y_train</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="n">pred35</span> <span class="o">=</span> <span class="n">knn35</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'При K=35'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred35</span><span class="p">))</span>
<span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred35</span><span class="p">),</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'d'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">classification_report</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred35</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>При K=35
[[65 3]
[10 22]]
precision recall f1-score support
0 0.87 0.96 0.91 68
1 0.88 0.69 0.77 32
accuracy 0.87 100
macro avg 0.87 0.82 0.84 100
weighted avg 0.87 0.87 0.87 100
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="9"></a> <br /></p>
<h2>9. Метод опорных векторов (SVM)
</h2>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Метод опорных векторов (SVM, Support vector machines) использует гиперплоскость, чтобы классифицировать данные
по 2 классам.</p>
<p>Метод опорных векторов - это метод "обучения с учителем", использующий классификацию, регрессию и определение
выбросов (outlier).
Главное преимущество SVM заключается в том, что он эффективен в многомерном пространстве, даже когда количество
выборок меньше количества измерений. Но в случаях, когда измерения превышают количество образцов, есть
вероятность переобучения.</p>
<p>Основная цель алгоритма SVM - создать оптимальную линию или границу решения, представляющую собой
гиперплоскость, которая может разделить n-мерное пространство на классы, чтобы в будущем можно было поместить
новую точку данных в правильную категорию.</p>
<p>В отличие от других классификаторов, которые обращают внимание на все точки, этот метод сосредотачиваются
только на точках, которые труднее всего классифицировать.</p>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Гиперплоскость - это подпространство, размерность которого на единицу меньше, чем размер его окружающего
пространства или пространства, окружающего объект. Если пространство</p>
<ul>
<li>трехмерно, то его гиперплоскости являются двумерными,</li>
<li>двумерно, его гиперплоскости являются одномерными линиями,</li>
<li>одномерное, его гиперплоскость представляет собой единственную точку. </li>
</ul>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>SVM использует набор математических функций, известных как ядро, для создания границы оптимального решения,
принимая данные в качестве входных. Наиболее предпочтительный вид функции ядра - это RBF. Потому что он
локализован и имеет конечный отклик по всей оси абсцисс.</p>
<p>Если данные слишком похожи или их сложно разделить по какой-либо причине, или из-за того, что они нелинейны,
тогда SVM с ядром может добавить еще одно измерение с «гиперплоскостью», которая может разделить точки данных.
</p>
<p>Значениями ядра могут быть:</p>
<ul>
<li>linear</li>
<li>poly</li>
<li>rbf (по умолчанию)</li>
<li>sigmoid</li>
<li>precomputed</li>
</ul>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>SVM с линейным ядром
</h3>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Это ядро лучше всего подходит для задач классификации, когда данные разделены линейно, как задача классификации
текста.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># обучение модели</span>
<span class="n">classifierLin</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s1">'linear'</span><span class="p">)</span>
<span class="n">classifierLin</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">classifierLin</span><span class="o">.</span><span class="n">gamma</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">classifierLin</span><span class="o">.</span><span class="n">C</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>scale
1.0
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># проверка на тестовых данных</span>
<span class="n">y_pred_svc</span> <span class="o">=</span> <span class="n">classifierLin</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
<span class="n">y_pred_svc</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1,
0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1], dtype=int8)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># анализ результатов</span>
<span class="c1"># матрица ошибок</span>
<span class="n">cm2</span> <span class="o">=</span> <span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">y_pred_svc</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">cm2</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>[[66 2]
[10 22]]
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">cm2</span><span class="p">,</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'d'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
11 неверных прогнозов из 100.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">classification_report</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">y_pred_svc</span><span class="p">))</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre> precision recall f1-score support
0 0.87 0.97 0.92 68
1 0.92 0.69 0.79 32
accuracy 0.88 100
macro avg 0.89 0.83 0.85 100
weighted avg 0.88 0.88 0.87 100
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Точность 88%, но полнота для совершенных покупок всего 69%.</p>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>SVM с ядром RBF (Radial Basis Function)</h3>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># обучение модели</span>
<span class="n">classifierrbf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s1">'rbf'</span><span class="p">)</span>
<span class="n">classifierrbf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">classifierLin</span><span class="o">.</span><span class="n">gamma</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">classifierLin</span><span class="o">.</span><span class="n">C</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>scale
1.0
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># проверка на тестовых данных</span>
<span class="n">y_pred_rbf</span> <span class="o">=</span> <span class="n">classifierrbf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
<span class="n">y_pred_rbf</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1,
1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1], dtype=int8)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># анализ результатов</span>
<span class="c1"># матрица ошибок</span>
<span class="n">cm3</span> <span class="o">=</span> <span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">y_pred_rbf</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">cm3</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>[[64 4]
[ 3 29]]
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
7 неверных прогнозов из 100.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">classification_report</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span><span class="n">y_pred_rbf</span><span class="p">))</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre> precision recall f1-score support
0 0.96 0.94 0.95 68
1 0.88 0.91 0.89 32
accuracy 0.93 100
macro avg 0.92 0.92 0.92 100
weighted avg 0.93 0.93 0.93 100
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Общая точность (accuracy) составляет 93%, а точность (precision), полнота (recall) и F1-мера для предсказания
"не покупок" выше 94%, а для проноза покупок близка к 90%.</p>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p><a id="10"></a> <br /></p>
<h2>10. Настройка гиперпараметров
</h2>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Оптимизация гиперпараметров - это метод выбора набора оптимальных гиперпараметров для алгоритма обучения.
Модель машинного обучения может иметь разные ограничения, веса или скорости обучения для обобщения различных
шаблонов данных.
Эти меры называются гиперпараметрами и должны быть настроены так, чтобы модель могла оптимально решить проблему
машинного обучения. Основное различие между параметрами и гиперпараметрами заключается в том, что параметры
изучаются автоматически, а значения гиперпараметров устанавливаются вручную.</p>
<p>Результатом оптимизации гиперпараметров является единый набор хорошо работающих гиперпараметров, которые можно
настроить для модели для достижения наилучших результатов.
Для получения оптимальных гиперпараметров существуют различные подходы к поиску, такие как: поиск по сетке (Grid
Search), случайный поиск (Random Search), байесовская оптимизация (Bayesian optimization), оптимизация на основе
градиента (Gradient-based optimization), оптимизация на основе эволюции (Evolutionary optimization), на основе
популяции (Population-based).
Рассмотрим поиск по сетке.</p>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Поиск по сетке - это своего рода процесс настройки, который выбирает лучшие параметры для алгоритма для
оптимизации его производительности, но его выполнения требует довольно много времени. Параметры оценивания,
используемого для применения этих методов, оптимизируются с помощью поиска по сетке с перекрестной проверкой по
сетке параметров.
Функция GridSearchCV реализует методы «соответствия» и «оценки».</p>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>При обучении SVM необходимо учитывать два параметра:</p>
<ul>
<li>
<p>C</p>
</li>
<li>
<p>gamma</p>
</li>
</ul>
<p>Используя поиск по сетке, можно найти наилучшее оптимальное значение для C и гаммы, а также лучшее ядро для
SVM.</p>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>Параметр C</h3>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Реализация SVC основана на libsvm (библиотека для машин опорных векторов). C - параметр регуляризации в SVC и
его значение с плавающей запятой по умолчанию 1. Сила регуляризации обратно пропорциональна C. Она должна быть
строго положительной.</p>
<p>C определяет компромисс между увеличением размера поля и обеспечением того, чтобы точки обучения лежали на
правильной стороне поля. Если значение C мало, это создаст разделяющую гиперплоскость с большим запасом, что
может неправильно классифицировать больше точек и приведет к большему количеству ошибок обучения модели. Если же
значение C очень велико, оптимизатор выберет разделяющую гиперплоскость с меньшим запасом, которая будет
правильно классифицировать тренировочные точки, но может привести к переобучению.</p>
<p>Выбор значения C имеет решающее значение для SVC и может быть выполнен путем настройки гиперпараметров.</p>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<h3>Параметр gamma</h3>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Параметры гаммы можно рассматривать как инверсию радиуса влияния выборок, выбранных моделью в качестве опорных
векторов, и это коэффициент ядра для 'rbf', 'poly' и 'sigmoid'. Значение гаммы по умолчанию - 'scale'. и его
значение равно 1 / (n_features * X.var()).</p>
<p>Когда гамма очень мала, модель слишком ограничена и не может уловить сложность или «форму» данных. Но более
высокое значение гаммы точно соответствует точкам обучающих данных, но приведет к переобучению.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># поиск опимальных гиперпараметров</span>
<span class="n">g</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">estimator</span><span class="o">=</span><span class="n">SVC</span><span class="p">(),</span>
<span class="n">param_grid</span><span class="o">=</span><span class="p">{</span><span class="s1">'C'</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="s1">'gamma'</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mf">0.1</span><span class="p">,</span><span class="mf">0.01</span><span class="p">,</span><span class="mf">0.001</span><span class="p">,</span><span class="mf">0.0001</span><span class="p">,</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.2</span><span class="p">],</span> <span class="s1">'kernel'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'linear'</span><span class="p">,</span> <span class="s1">'rbf'</span><span class="p">)})</span>
<span class="n">g</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>GridSearchCV(estimator=SVC(),
param_grid={'C': [1, 10],
'gamma': [1, 0.1, 0.01, 0.001, 0.0001, 1.1, 1.2],
'kernel': ('linear', 'rbf')})</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p>Поиск по сетке дает комбинацию значений, которая имеет наивысшую точность среди всех значений.</p>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">best_params_</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>{'C': 1, 'gamma': 1, 'kernel': 'rbf'}</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Лучшие параметры для метода SVM с ядром rbf определились как gamma = 1 и C = 1.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">best_estimator_</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>SVC(C=1, gamma=1)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># анализ на тестовых данных по полученным параметрам.</span>
<span class="n">grid_pred</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="c1"># оценка результатов</span>
<span class="nb">print</span><span class="p">(</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">grid_pred</span><span class="p">))</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>[[64 4]
[ 2 30]]
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span><span class="n">grid_pred</span><span class="p">),</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'d'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Spectral'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output">
<img src="data:image/png;base64,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" />
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
6 неверных предсказаний из 100.</p>
</div>
</div>
</div>
<div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class="highlight hl-ipython3">
<pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">classification_report</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">grid_pred</span><span class="p">))</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre> precision recall f1-score support
0 0.97 0.94 0.96 68
1 0.88 0.94 0.91 32
accuracy 0.94 100
macro avg 0.93 0.94 0.93 100
weighted avg 0.94 0.94 0.94 100
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<div style="background-color: lightyellow; border-radius: 5px; color: braun; display: fill; font-family: "Segoe UI"; font-size: 110%; letter-spacing: 0.5px;">
<p style="color: braun; padding: 10px;">
Общая точность (accuracy) составляет 94%, а точность (precision), полнота (recall) и F1-мера для предсказания
"не покупок" выше 94%, а для проноза покупок близка к 92%.</p>
</div>
</div>
</div>
<div class="jp-Cell-inputWrapper">
<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
<p style="text-align: right;">
<xs><span style="font-size: xx-small;">Основано на https://www.kaggle.com/sandhyakrishnan02/knn-svm-svm-with-kernel-hyperparameter</span></xs>
</p>
</div>
</div>
<div><br /></div><div><br /></div>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>
<style type="text/css">
pre {
line-height: 125%;
}
td.linenos .normal {
color: inherit;
background-color: transparent;
padding-left: 5px;
padding-right: 5px;
}
span.linenos {
color: inherit;
background-color: transparent;
padding-left: 5px;
padding-right: 5px;
}
td.linenos .special {
color: #000000;
background-color: #ffffc0;
padding-left: 5px;
padding-right: 5px;
}
span.linenos.special {
color: #000000;
background-color: #ffffc0;
padding-left: 5px;
padding-right: 5px;
}
.highlight .hll {
background-color: var(--jp-cell-editor-active-background)
}
.highlight {
background: var(--jp-cell-editor-background);
color: var(--jp-mirror-editor-variable-color)
}
.highlight .c {
color: var(--jp-mirror-editor-comment-color);
font-style: italic
}
/* Comment */
.highlight .err {
color: var(--jp-mirror-editor-error-color)
}
/* Error */
.highlight .k {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold
}
/* Keyword */
.highlight .o {
color: var(--jp-mirror-editor-operator-color);
font-weight: bold
}
/* Operator */
.highlight .p {
color: var(--jp-mirror-editor-punctuation-color)
}
/* Punctuation */
.highlight .ch {
color: var(--jp-mirror-editor-comment-color);
font-style: italic
}
/* Comment.Hashbang */
.highlight .cm {
color: var(--jp-mirror-editor-comment-color);
font-style: italic
}
/* Comment.Multiline */
.highlight .cp {
color: var(--jp-mirror-editor-comment-color);
font-style: italic
}
/* Comment.Preproc */
.highlight .cpf {
color: var(--jp-mirror-editor-comment-color);
font-style: italic
}
/* Comment.PreprocFile */
.highlight .c1 {
color: var(--jp-mirror-editor-comment-color);
font-style: italic
}
/* Comment.Single */
.highlight .cs {
color: var(--jp-mirror-editor-comment-color);
font-style: italic
}
/* Comment.Special */
.highlight .kc {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold
}
/* Keyword.Constant */
.highlight .kd {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold
}
/* Keyword.Declaration */
.highlight .kn {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold
}
/* Keyword.Namespace */
.highlight .kp {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold
}
/* Keyword.Pseudo */
.highlight .kr {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold
}
/* Keyword.Reserved */
.highlight .kt {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold
}
/* Keyword.Type */
.highlight .m {
color: var(--jp-mirror-editor-number-color)
}
/* Literal.Number */
.highlight .s {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String */
.highlight .ow {
color: var(--jp-mirror-editor-operator-color);
font-weight: bold
}
/* Operator.Word */
.highlight .w {
color: var(--jp-mirror-editor-variable-color)
}
/* Text.Whitespace */
.highlight .mb {
color: var(--jp-mirror-editor-number-color)
}
/* Literal.Number.Bin */
.highlight .mf {
color: var(--jp-mirror-editor-number-color)
}
/* Literal.Number.Float */
.highlight .mh {
color: var(--jp-mirror-editor-number-color)
}
/* Literal.Number.Hex */
.highlight .mi {
color: var(--jp-mirror-editor-number-color)
}
/* Literal.Number.Integer */
.highlight .mo {
color: var(--jp-mirror-editor-number-color)
}
/* Literal.Number.Oct */
.highlight .sa {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Affix */
.highlight .sb {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Backtick */
.highlight .sc {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Char */
.highlight .dl {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Delimiter */
.highlight .sd {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Doc */
.highlight .s2 {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Double */
.highlight .se {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Escape */
.highlight .sh {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Heredoc */
.highlight .si {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Interpol */
.highlight .sx {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Other */
.highlight .sr {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Regex */
.highlight .s1 {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Single */
.highlight .ss {
color: var(--jp-mirror-editor-string-color)
}
/* Literal.String.Symbol */
.highlight .il {
color: var(--jp-mirror-editor-number-color)
}
/* Literal.Number.Integer.Long */
</style>
<style type="text/css">
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*
* Mozilla scrollbar styling
*/
/* use standard opaque scrollbars for most nodes */
[data-jp-theme-scrollbars='true'] {
scrollbar-color: rgb(var(--jp-scrollbar-thumb-color)) var(--jp-scrollbar-background-color);
}
/* for code nodes, use a transparent style of scrollbar. These selectors
* will match lower in the tree, and so will override the above */
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
}
/*
* Webkit scrollbar styling
*/
/* use standard opaque scrollbars for most nodes */
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar,
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-corner {
background: var(--jp-scrollbar-background-color);
}
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-thumb {
background: rgb(var(--jp-scrollbar-thumb-color));
border: var(--jp-scrollbar-thumb-margin) solid transparent;
background-clip: content-box;
border-radius: var(--jp-scrollbar-thumb-radius);
}
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:horizontal {
border-left: var(--jp-scrollbar-endpad) solid var(--jp-scrollbar-background-color);
border-right: var(--jp-scrollbar-endpad) solid var(--jp-scrollbar-background-color);
}
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:vertical {
border-top: var(--jp-scrollbar-endpad) solid var(--jp-scrollbar-background-color);
border-bottom: var(--jp-scrollbar-endpad) solid var(--jp-scrollbar-background-color);
}
/* for code nodes, use a transparent style of scrollbar */
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar,
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar,
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar-corner,
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar-corner {
background-color: transparent;
}
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar-thumb,
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar-thumb {
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
border: var(--jp-scrollbar-thumb-margin) solid transparent;
background-clip: content-box;
border-radius: var(--jp-scrollbar-thumb-radius);
}
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar-track:horizontal {
border-left: var(--jp-scrollbar-endpad) solid transparent;
border-right: var(--jp-scrollbar-endpad) solid transparent;
}
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar-track:vertical {
border-top: var(--jp-scrollbar-endpad) solid transparent;
border-bottom: var(--jp-scrollbar-endpad) solid transparent;
}
/*
* Phosphor
*/
.lm-ScrollBar[data-orientation='horizontal'] {
min-height: 16px;
max-height: 16px;
min-width: 45px;
border-top: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='vertical'] {
min-width: 16px;
max-width: 16px;
min-height: 45px;
border-left: 1px solid #a0a0a0;
}
.lm-ScrollBar-button {
background-color: #f0f0f0;
background-position: center center;
min-height: 15px;
max-height: 15px;
min-width: 15px;
max-width: 15px;
}
.lm-ScrollBar-button:hover {
background-color: #dadada;
}
.lm-ScrollBar-button.lm-mod-active {
background-color: #cdcdcd;
}
.lm-ScrollBar-track {
background: #f0f0f0;
}
.lm-ScrollBar-thumb {
background: #cdcdcd;
}
.lm-ScrollBar-thumb:hover {
background: #bababa;
}
.lm-ScrollBar-thumb.lm-mod-active {
background: #a0a0a0;
}
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
height: 100%;
min-width: 15px;
border-left: 1px solid #a0a0a0;
border-right: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
width: 100%;
min-height: 15px;
border-top: 1px solid #a0a0a0;
border-bottom: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-button[data-action='decrement'] {
background-image: var(--jp-icon-caret-left);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-button[data-action='increment'] {
background-image: var(--jp-icon-caret-right);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-button[data-action='decrement'] {
background-image: var(--jp-icon-caret-up);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-button[data-action='increment'] {
background-image: var(--jp-icon-caret-down);
background-size: 17px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-Widget,
/* </DEPRECATED> */
.lm-Widget {
box-sizing: border-box;
position: relative;
overflow: hidden;
cursor: default;
}
/* <DEPRECATED> */
.p-Widget.p-mod-hidden,
/* </DEPRECATED> */
.lm-Widget.lm-mod-hidden {
display: none !important;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-CommandPalette,
/* </DEPRECATED> */
.lm-CommandPalette {
display: flex;
flex-direction: column;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-CommandPalette-search,
/* </DEPRECATED> */
.lm-CommandPalette-search {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-CommandPalette-content,
/* </DEPRECATED> */
.lm-CommandPalette-content {
flex: 1 1 auto;
margin: 0;
padding: 0;
min-height: 0;
overflow: auto;
list-style-type: none;
}
/* <DEPRECATED> */
.p-CommandPalette-header,
/* </DEPRECATED> */
.lm-CommandPalette-header {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/* <DEPRECATED> */
.p-CommandPalette-item,
/* </DEPRECATED> */
.lm-CommandPalette-item {
display: flex;
flex-direction: row;
}
/* <DEPRECATED> */
.p-CommandPalette-itemIcon,
/* </DEPRECATED> */
.lm-CommandPalette-itemIcon {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-CommandPalette-itemContent,
/* </DEPRECATED> */
.lm-CommandPalette-itemContent {
flex: 1 1 auto;
overflow: hidden;
}
/* <DEPRECATED> */
.p-CommandPalette-itemShortcut,
/* </DEPRECATED> */
.lm-CommandPalette-itemShortcut {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-CommandPalette-itemLabel,
/* </DEPRECATED> */
.lm-CommandPalette-itemLabel {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-DockPanel,
/* </DEPRECATED> */
.lm-DockPanel {
z-index: 0;
}
/* <DEPRECATED> */
.p-DockPanel-widget,
/* </DEPRECATED> */
.lm-DockPanel-widget {
z-index: 0;
}
/* <DEPRECATED> */
.p-DockPanel-tabBar,
/* </DEPRECATED> */
.lm-DockPanel-tabBar {
z-index: 1;
}
/* <DEPRECATED> */
.p-DockPanel-handle,
/* </DEPRECATED> */
.lm-DockPanel-handle {
z-index: 2;
}
/* <DEPRECATED> */
.p-DockPanel-handle.p-mod-hidden,
/* </DEPRECATED> */
.lm-DockPanel-handle.lm-mod-hidden {
display: none !important;
}
/* <DEPRECATED> */
.p-DockPanel-handle:after,
/* </DEPRECATED> */
.lm-DockPanel-handle:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
content: '';
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='horizontal'],
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='horizontal'] {
cursor: ew-resize;
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='vertical'],
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='vertical'] {
cursor: ns-resize;
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='horizontal']:after,
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='horizontal']:after {
left: 50%;
min-width: 8px;
transform: translateX(-50%);
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='vertical']:after,
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='vertical']:after {
top: 50%;
min-height: 8px;
transform: translateY(-50%);
}
/* <DEPRECATED> */
.p-DockPanel-overlay,
/* </DEPRECATED> */
.lm-DockPanel-overlay {
z-index: 3;
box-sizing: border-box;
pointer-events: none;
}
/* <DEPRECATED> */
.p-DockPanel-overlay.p-mod-hidden,
/* </DEPRECATED> */
.lm-DockPanel-overlay.lm-mod-hidden {
display: none !important;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-Menu,
/* </DEPRECATED> */
.lm-Menu {
z-index: 10000;
position: absolute;
white-space: nowrap;
overflow-x: hidden;
overflow-y: auto;
outline: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-Menu-content,
/* </DEPRECATED> */
.lm-Menu-content {
margin: 0;
padding: 0;
display: table;
list-style-type: none;
}
/* <DEPRECATED> */
.p-Menu-item,
/* </DEPRECATED> */
.lm-Menu-item {
display: table-row;
}
/* <DEPRECATED> */
.p-Menu-item.p-mod-hidden,
.p-Menu-item.p-mod-collapsed,
/* </DEPRECATED> */
.lm-Menu-item.lm-mod-hidden,
.lm-Menu-item.lm-mod-collapsed {
display: none !important;
}
/* <DEPRECATED> */
.p-Menu-itemIcon,
.p-Menu-itemSubmenuIcon,
/* </DEPRECATED> */
.lm-Menu-itemIcon,
.lm-Menu-itemSubmenuIcon {
display: table-cell;
text-align: center;
}
/* <DEPRECATED> */
.p-Menu-itemLabel,
/* </DEPRECATED> */
.lm-Menu-itemLabel {
display: table-cell;
text-align: left;
}
/* <DEPRECATED> */
.p-Menu-itemShortcut,
/* </DEPRECATED> */
.lm-Menu-itemShortcut {
display: table-cell;
text-align: right;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-MenuBar,
/* </DEPRECATED> */
.lm-MenuBar {
outline: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-MenuBar-content,
/* </DEPRECATED> */
.lm-MenuBar-content {
margin: 0;
padding: 0;
display: flex;
flex-direction: row;
list-style-type: none;
}
/* <DEPRECATED> */
.p--MenuBar-item,
/* </DEPRECATED> */
.lm-MenuBar-item {
box-sizing: border-box;
}
/* <DEPRECATED> */
.p-MenuBar-itemIcon,
.p-MenuBar-itemLabel,
/* </DEPRECATED> */
.lm-MenuBar-itemIcon,
.lm-MenuBar-itemLabel {
display: inline-block;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-ScrollBar,
/* </DEPRECATED> */
.lm-ScrollBar {
display: flex;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-ScrollBar[data-orientation='horizontal'],
/* </DEPRECATED> */
.lm-ScrollBar[data-orientation='horizontal'] {
flex-direction: row;
}
/* <DEPRECATED> */
.p-ScrollBar[data-orientation='vertical'],
/* </DEPRECATED> */
.lm-ScrollBar[data-orientation='vertical'] {
flex-direction: column;
}
/* <DEPRECATED> */
.p-ScrollBar-button,
/* </DEPRECATED> */
.lm-ScrollBar-button {
box-sizing: border-box;
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-ScrollBar-track,
/* </DEPRECATED> */
.lm-ScrollBar-track {
box-sizing: border-box;
position: relative;
overflow: hidden;
flex: 1 1 auto;
}
/* <DEPRECATED> */
.p-ScrollBar-thumb,
/* </DEPRECATED> */
.lm-ScrollBar-thumb {
box-sizing: border-box;
position: absolute;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-SplitPanel-child,
/* </DEPRECATED> */
.lm-SplitPanel-child {
z-index: 0;
}
/* <DEPRECATED> */
.p-SplitPanel-handle,
/* </DEPRECATED> */
.lm-SplitPanel-handle {
z-index: 1;
}
/* <DEPRECATED> */
.p-SplitPanel-handle.p-mod-hidden,
/* </DEPRECATED> */
.lm-SplitPanel-handle.lm-mod-hidden {
display: none !important;
}
/* <DEPRECATED> */
.p-SplitPanel-handle:after,
/* </DEPRECATED> */
.lm-SplitPanel-handle:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
content: '';
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='horizontal']>.p-SplitPanel-handle,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='horizontal']>.lm-SplitPanel-handle {
cursor: ew-resize;
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='vertical']>.p-SplitPanel-handle,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='vertical']>.lm-SplitPanel-handle {
cursor: ns-resize;
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='horizontal']>.p-SplitPanel-handle:after,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='horizontal']>.lm-SplitPanel-handle:after {
left: 50%;
min-width: 8px;
transform: translateX(-50%);
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='vertical']>.p-SplitPanel-handle:after,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='vertical']>.lm-SplitPanel-handle:after {
top: 50%;
min-height: 8px;
transform: translateY(-50%);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-TabBar,
/* </DEPRECATED> */
.lm-TabBar {
display: flex;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='horizontal'],
/* </DEPRECATED> */
.lm-TabBar[data-orientation='horizontal'] {
flex-direction: row;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='vertical'],
/* </DEPRECATED> */
.lm-TabBar[data-orientation='vertical'] {
flex-direction: column;
}
/* <DEPRECATED> */
.p-TabBar-content,
/* </DEPRECATED> */
.lm-TabBar-content {
margin: 0;
padding: 0;
display: flex;
flex: 1 1 auto;
list-style-type: none;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='horizontal']>.p-TabBar-content,
/* </DEPRECATED> */
.lm-TabBar[data-orientation='horizontal']>.lm-TabBar-content {
flex-direction: row;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='vertical']>.p-TabBar-content,
/* </DEPRECATED> */
.lm-TabBar[data-orientation='vertical']>.lm-TabBar-content {
flex-direction: column;
}
/* <DEPRECATED> */
.p-TabBar-tab,
/* </DEPRECATED> */
.lm-TabBar-tab {
display: flex;
flex-direction: row;
box-sizing: border-box;
overflow: hidden;
}
/* <DEPRECATED> */
.p-TabBar-tabIcon,
.p-TabBar-tabCloseIcon,
/* </DEPRECATED> */
.lm-TabBar-tabIcon,
.lm-TabBar-tabCloseIcon {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-TabBar-tabLabel,
/* </DEPRECATED> */
.lm-TabBar-tabLabel {
flex: 1 1 auto;
overflow: hidden;
white-space: nowrap;
}
/* <DEPRECATED> */
.p-TabBar-tab.p-mod-hidden,
/* </DEPRECATED> */
.lm-TabBar-tab.lm-mod-hidden {
display: none !important;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging .p-TabBar-tab,
/* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
position: relative;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab,
/* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
left: 0;
transition: left 150ms ease;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab,
/* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
top: 0;
transition: top 150ms ease;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging
/* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
transition: none;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-TabPanel-tabBar,
/* </DEPRECATED> */
.lm-TabPanel-tabBar {
z-index: 1;
}
/* <DEPRECATED> */
.p-TabPanel-stackedPanel,
/* </DEPRECATED> */
.lm-TabPanel-stackedPanel {
z-index: 0;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
@charset "UTF-8";
/*!
Copyright 2015-present Palantir Technologies, Inc. All rights reserved.
Licensed under the Apache License, Version 2.0.
*/
html {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
*,
*::before,
*::after {
-webkit-box-sizing: inherit;
box-sizing: inherit;
}
body {
text-transform: none;
line-height: 1.28581;
letter-spacing: 0;
font-size: 14px;
font-weight: 400;
color: #182026;
font-family: -apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", "Icons16", sans-serif;
}
p {
margin-top: 0;
margin-bottom: 10px;
}
small {
font-size: 12px;
}
strong {
font-weight: 600;
}
::-moz-selection {
background: rgba(125, 188, 255, 0.6);
}
::selection {
background: rgba(125, 188, 255, 0.6);
}
.bp3-heading {
color: #182026;
font-weight: 600;
margin: 0 0 10px;
padding: 0;
}
.bp3-dark .bp3-heading {
color: #f5f8fa;
}
h1.bp3-heading,
.bp3-running-text h1 {
line-height: 40px;
font-size: 36px;
}
h2.bp3-heading,
.bp3-running-text h2 {
line-height: 32px;
font-size: 28px;
}
h3.bp3-heading,
.bp3-running-text h3 {
line-height: 25px;
font-size: 22px;
}
h4.bp3-heading,
.bp3-running-text h4 {
line-height: 21px;
font-size: 18px;
}
h5.bp3-heading,
.bp3-running-text h5 {
line-height: 19px;
font-size: 16px;
}
h6.bp3-heading,
.bp3-running-text h6 {
line-height: 16px;
font-size: 14px;
}
.bp3-ui-text {
text-transform: none;
line-height: 1.28581;
letter-spacing: 0;
font-size: 14px;
font-weight: 400;
}
.bp3-monospace-text {
text-transform: none;
font-family: monospace;
}
.bp3-text-muted {
color: #5c7080;
}
.bp3-dark .bp3-text-muted {
color: #a7b6c2;
}
.bp3-text-disabled {
color: rgba(92, 112, 128, 0.6);
}
.bp3-dark .bp3-text-disabled {
color: rgba(167, 182, 194, 0.6);
}
.bp3-text-overflow-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
}
.bp3-running-text {
line-height: 1.5;
font-size: 14px;
}
.bp3-running-text h1 {
color: #182026;
font-weight: 600;
margin-top: 40px;
margin-bottom: 20px;
}
.bp3-dark .bp3-running-text h1 {
color: #f5f8fa;
}
.bp3-running-text h2 {
color: #182026;
font-weight: 600;
margin-top: 40px;
margin-bottom: 20px;
}
.bp3-dark .bp3-running-text h2 {
color: #f5f8fa;
}
.bp3-running-text h3 {
color: #182026;
font-weight: 600;
margin-top: 40px;
margin-bottom: 20px;
}
.bp3-dark .bp3-running-text h3 {
color: #f5f8fa;
}
.bp3-running-text h4 {
color: #182026;
font-weight: 600;
margin-top: 40px;
margin-bottom: 20px;
}
.bp3-dark .bp3-running-text h4 {
color: #f5f8fa;
}
.bp3-running-text h5 {
color: #182026;
font-weight: 600;
margin-top: 40px;
margin-bottom: 20px;
}
.bp3-dark .bp3-running-text h5 {
color: #f5f8fa;
}
.bp3-running-text h6 {
color: #182026;
font-weight: 600;
margin-top: 40px;
margin-bottom: 20px;
}
.bp3-dark .bp3-running-text h6 {
color: #f5f8fa;
}
.bp3-running-text hr {
margin: 20px 0;
border: none;
border-bottom: 1px solid rgba(16, 22, 26, 0.15);
}
.bp3-dark .bp3-running-text hr {
border-color: rgba(255, 255, 255, 0.15);
}
.bp3-running-text p {
margin: 0 0 10px;
padding: 0;
}
.bp3-text-large {
font-size: 16px;
}
.bp3-text-small {
font-size: 12px;
}
a {
text-decoration: none;
color: #106ba3;
}
a:hover {
cursor: pointer;
text-decoration: underline;
color: #106ba3;
}
a .bp3-icon,
a .bp3-icon-standard,
a .bp3-icon-large {
color: inherit;
}
a code,
.bp3-dark a code {
color: inherit;
}
.bp3-dark a,
.bp3-dark a:hover {
color: #48aff0;
}
.bp3-dark a .bp3-icon,
.bp3-dark a .bp3-icon-standard,
.bp3-dark a .bp3-icon-large,
.bp3-dark a:hover .bp3-icon,
.bp3-dark a:hover .bp3-icon-standard,
.bp3-dark a:hover .bp3-icon-large {
color: inherit;
}
.bp3-running-text code,
.bp3-code {
text-transform: none;
font-family: monospace;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2);
background: rgba(255, 255, 255, 0.7);
padding: 2px 5px;
color: #5c7080;
font-size: smaller;
}
.bp3-dark .bp3-running-text code,
.bp3-running-text .bp3-dark code,
.bp3-dark .bp3-code {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
background: rgba(16, 22, 26, 0.3);
color: #a7b6c2;
}
.bp3-running-text a>code,
a>.bp3-code {
color: #137cbd;
}
.bp3-dark .bp3-running-text a>code,
.bp3-running-text .bp3-dark a>code,
.bp3-dark a>.bp3-code {
color: inherit;
}
.bp3-running-text pre,
.bp3-code-block {
text-transform: none;
font-family: monospace;
display: block;
margin: 10px 0;
border-radius: 3px;
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.15);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.15);
background: rgba(255, 255, 255, 0.7);
padding: 13px 15px 12px;
line-height: 1.4;
color: #182026;
font-size: 13px;
word-break: break-all;
word-wrap: break-word;
}
.bp3-dark .bp3-running-text pre,
.bp3-running-text .bp3-dark pre,
.bp3-dark .bp3-code-block {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
background: rgba(16, 22, 26, 0.3);
color: #f5f8fa;
}
.bp3-running-text pre>code,
.bp3-code-block>code {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
padding: 0;
color: inherit;
font-size: inherit;
}
.bp3-running-text kbd,
.bp3-key {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
border-radius: 3px;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
background: #ffffff;
min-width: 24px;
height: 24px;
padding: 3px 6px;
vertical-align: middle;
line-height: 24px;
color: #5c7080;
font-family: inherit;
font-size: 12px;
}
.bp3-running-text kbd .bp3-icon,
.bp3-key .bp3-icon,
.bp3-running-text kbd .bp3-icon-standard,
.bp3-key .bp3-icon-standard,
.bp3-running-text kbd .bp3-icon-large,
.bp3-key .bp3-icon-large {
margin-right: 5px;
}
.bp3-dark .bp3-running-text kbd,
.bp3-running-text .bp3-dark kbd,
.bp3-dark .bp3-key {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
background: #394b59;
color: #a7b6c2;
}
.bp3-running-text blockquote,
.bp3-blockquote {
margin: 0 0 10px;
border-left: solid 4px rgba(167, 182, 194, 0.5);
padding: 0 20px;
}
.bp3-dark .bp3-running-text blockquote,
.bp3-running-text .bp3-dark blockquote,
.bp3-dark .bp3-blockquote {
border-color: rgba(115, 134, 148, 0.5);
}
.bp3-running-text ul,
.bp3-running-text ol,
.bp3-list {
margin: 10px 0;
padding-left: 30px;
}
.bp3-running-text ul li:not(:last-child),
.bp3-running-text ol li:not(:last-child),
.bp3-list li:not(:last-child) {
margin-bottom: 5px;
}
.bp3-running-text ul ol,
.bp3-running-text ol ol,
.bp3-list ol,
.bp3-running-text ul ul,
.bp3-running-text ol ul,
.bp3-list ul {
margin-top: 5px;
}
.bp3-list-unstyled {
margin: 0;
padding: 0;
list-style: none;
}
.bp3-list-unstyled li {
padding: 0;
}
.bp3-rtl {
text-align: right;
}
.bp3-dark {
color: #f5f8fa;
}
:focus {
outline: rgba(19, 124, 189, 0.6) auto 2px;
outline-offset: 2px;
-moz-outline-radius: 6px;
}
.bp3-focus-disabled :focus {
outline: none !important;
}
.bp3-focus-disabled :focus~.bp3-control-indicator {
outline: none !important;
}
.bp3-alert {
max-width: 400px;
padding: 20px;
}
.bp3-alert-body {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.bp3-alert-body .bp3-icon {
margin-top: 0;
margin-right: 20px;
font-size: 40px;
}
.bp3-alert-footer {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: reverse;
-ms-flex-direction: row-reverse;
flex-direction: row-reverse;
margin-top: 10px;
}
.bp3-alert-footer .bp3-button {
margin-left: 10px;
}
.bp3-breadcrumbs {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin: 0;
cursor: default;
height: 30px;
padding: 0;
list-style: none;
}
.bp3-breadcrumbs>li {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bp3-breadcrumbs>li::after {
display: block;
margin: 0 5px;
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.71 7.29l-4-4a1.003 1.003 0 0 0-1.42 1.42L8.59 8 5.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 0 0 1.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z' fill='%235C7080'/%3e%3c/svg%3e");
width: 16px;
height: 16px;
content: "";
}
.bp3-breadcrumbs>li:last-of-type::after {
display: none;
}
.bp3-breadcrumb,
.bp3-breadcrumb-current,
.bp3-breadcrumbs-collapsed {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
font-size: 16px;
}
.bp3-breadcrumb,
.bp3-breadcrumbs-collapsed {
color: #5c7080;
}
.bp3-breadcrumb:hover {
text-decoration: none;
}
.bp3-breadcrumb.bp3-disabled {
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-breadcrumb .bp3-icon {
margin-right: 5px;
}
.bp3-breadcrumb-current {
color: inherit;
font-weight: 600;
}
.bp3-breadcrumb-current .bp3-input {
vertical-align: baseline;
font-size: inherit;
font-weight: inherit;
}
.bp3-breadcrumbs-collapsed {
margin-right: 2px;
border: none;
border-radius: 3px;
background: #ced9e0;
cursor: pointer;
padding: 1px 5px;
vertical-align: text-bottom;
}
.bp3-breadcrumbs-collapsed::before {
display: block;
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%235C7080'%3e%3ccircle cx='2' cy='8.03' r='2'/%3e%3ccircle cx='14' cy='8.03' r='2'/%3e%3ccircle cx='8' cy='8.03' r='2'/%3e%3c/g%3e%3c/svg%3e") center no-repeat;
width: 16px;
height: 16px;
content: "";
}
.bp3-breadcrumbs-collapsed:hover {
background: #bfccd6;
text-decoration: none;
color: #182026;
}
.bp3-dark .bp3-breadcrumb,
.bp3-dark .bp3-breadcrumbs-collapsed {
color: #a7b6c2;
}
.bp3-dark .bp3-breadcrumbs>li::after {
color: #a7b6c2;
}
.bp3-dark .bp3-breadcrumb.bp3-disabled {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-breadcrumb-current {
color: #f5f8fa;
}
.bp3-dark .bp3-breadcrumbs-collapsed {
background: rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-breadcrumbs-collapsed:hover {
background: rgba(16, 22, 26, 0.6);
color: #f5f8fa;
}
.bp3-button {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
border: none;
border-radius: 3px;
cursor: pointer;
padding: 5px 10px;
vertical-align: middle;
text-align: left;
font-size: 14px;
min-width: 30px;
min-height: 30px;
}
.bp3-button>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-button>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-button::before,
.bp3-button>* {
margin-right: 7px;
}
.bp3-button:empty::before,
.bp3-button> :last-child {
margin-right: 0;
}
.bp3-button:empty {
padding: 0 !important;
}
.bp3-button:disabled,
.bp3-button.bp3-disabled {
cursor: not-allowed;
}
.bp3-button.bp3-fill {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
}
.bp3-button.bp3-align-right,
.bp3-align-right .bp3-button {
text-align: right;
}
.bp3-button.bp3-align-left,
.bp3-align-left .bp3-button {
text-align: left;
}
.bp3-button:not([class*="bp3-intent-"]) {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-color: #f5f8fa;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0));
color: #182026;
}
.bp3-button:not([class*="bp3-intent-"]):hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-clip: padding-box;
background-color: #ebf1f5;
}
.bp3-button:not([class*="bp3-intent-"]):active,
.bp3-button:not([class*="bp3-intent-"]).bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #d8e1e8;
background-image: none;
}
.bp3-button:not([class*="bp3-intent-"]):disabled,
.bp3-button:not([class*="bp3-intent-"]).bp3-disabled {
outline: none;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(206, 217, 224, 0.5);
background-image: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active,
.bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active:hover,
.bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active,
.bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active:hover {
background: rgba(206, 217, 224, 0.7);
}
.bp3-button.bp3-intent-primary {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #137cbd;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
color: #ffffff;
}
.bp3-button.bp3-intent-primary:hover,
.bp3-button.bp3-intent-primary:active,
.bp3-button.bp3-intent-primary.bp3-active {
color: #ffffff;
}
.bp3-button.bp3-intent-primary:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #106ba3;
}
.bp3-button.bp3-intent-primary:active,
.bp3-button.bp3-intent-primary.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #0e5a8a;
background-image: none;
}
.bp3-button.bp3-intent-primary:disabled,
.bp3-button.bp3-intent-primary.bp3-disabled {
border-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(19, 124, 189, 0.5);
background-image: none;
color: rgba(255, 255, 255, 0.6);
}
.bp3-button.bp3-intent-success {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #0f9960;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
color: #ffffff;
}
.bp3-button.bp3-intent-success:hover,
.bp3-button.bp3-intent-success:active,
.bp3-button.bp3-intent-success.bp3-active {
color: #ffffff;
}
.bp3-button.bp3-intent-success:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #0d8050;
}
.bp3-button.bp3-intent-success:active,
.bp3-button.bp3-intent-success.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #0a6640;
background-image: none;
}
.bp3-button.bp3-intent-success:disabled,
.bp3-button.bp3-intent-success.bp3-disabled {
border-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(15, 153, 96, 0.5);
background-image: none;
color: rgba(255, 255, 255, 0.6);
}
.bp3-button.bp3-intent-warning {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #d9822b;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
color: #ffffff;
}
.bp3-button.bp3-intent-warning:hover,
.bp3-button.bp3-intent-warning:active,
.bp3-button.bp3-intent-warning.bp3-active {
color: #ffffff;
}
.bp3-button.bp3-intent-warning:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #bf7326;
}
.bp3-button.bp3-intent-warning:active,
.bp3-button.bp3-intent-warning.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #a66321;
background-image: none;
}
.bp3-button.bp3-intent-warning:disabled,
.bp3-button.bp3-intent-warning.bp3-disabled {
border-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(217, 130, 43, 0.5);
background-image: none;
color: rgba(255, 255, 255, 0.6);
}
.bp3-button.bp3-intent-danger {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #db3737;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
color: #ffffff;
}
.bp3-button.bp3-intent-danger:hover,
.bp3-button.bp3-intent-danger:active,
.bp3-button.bp3-intent-danger.bp3-active {
color: #ffffff;
}
.bp3-button.bp3-intent-danger:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #c23030;
}
.bp3-button.bp3-intent-danger:active,
.bp3-button.bp3-intent-danger.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #a82a2a;
background-image: none;
}
.bp3-button.bp3-intent-danger:disabled,
.bp3-button.bp3-intent-danger.bp3-disabled {
border-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(219, 55, 55, 0.5);
background-image: none;
color: rgba(255, 255, 255, 0.6);
}
.bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head {
stroke: #ffffff;
}
.bp3-button.bp3-large,
.bp3-large .bp3-button {
min-width: 40px;
min-height: 40px;
padding: 5px 15px;
font-size: 16px;
}
.bp3-button.bp3-large::before,
.bp3-button.bp3-large>*,
.bp3-large .bp3-button::before,
.bp3-large .bp3-button>* {
margin-right: 10px;
}
.bp3-button.bp3-large:empty::before,
.bp3-button.bp3-large> :last-child,
.bp3-large .bp3-button:empty::before,
.bp3-large .bp3-button> :last-child {
margin-right: 0;
}
.bp3-button.bp3-small,
.bp3-small .bp3-button {
min-width: 24px;
min-height: 24px;
padding: 0 7px;
}
.bp3-button.bp3-loading {
position: relative;
}
.bp3-button.bp3-loading[class*="bp3-icon-"]::before {
visibility: hidden;
}
.bp3-button.bp3-loading .bp3-button-spinner {
position: absolute;
margin: 0;
}
.bp3-button.bp3-loading> :not(.bp3-button-spinner) {
visibility: hidden;
}
.bp3-button[class*="bp3-icon-"]::before {
line-height: 1;
font-family: "Icons16", sans-serif;
font-size: 16px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
color: #5c7080;
}
.bp3-button .bp3-icon,
.bp3-button .bp3-icon-standard,
.bp3-button .bp3-icon-large {
color: #5c7080;
}
.bp3-button .bp3-icon.bp3-align-right,
.bp3-button .bp3-icon-standard.bp3-align-right,
.bp3-button .bp3-icon-large.bp3-align-right {
margin-left: 7px;
}
.bp3-button .bp3-icon:first-child:last-child,
.bp3-button .bp3-spinner+.bp3-icon:last-child {
margin: 0 -7px;
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]) {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #394b59;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0));
color: #f5f8fa;
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover,
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):active,
.bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active {
color: #f5f8fa;
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #30404d;
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):active,
.bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #202b33;
background-image: none;
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled,
.bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(57, 75, 89, 0.5);
background-image: none;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active,
.bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active {
background: rgba(57, 75, 89, 0.7);
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-button-spinner .bp3-spinner-head {
background: rgba(16, 22, 26, 0.5);
stroke: #8a9ba8;
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"])[class*="bp3-icon-"]::before {
color: #a7b6c2;
}
.bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon,
.bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-standard,
.bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-large {
color: #a7b6c2;
}
.bp3-dark .bp3-button[class*="bp3-intent-"] {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-button[class*="bp3-intent-"]:hover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-button[class*="bp3-intent-"]:active,
.bp3-dark .bp3-button[class*="bp3-intent-"].bp3-active {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
}
.bp3-dark .bp3-button[class*="bp3-intent-"]:disabled,
.bp3-dark .bp3-button[class*="bp3-intent-"].bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background-image: none;
color: rgba(255, 255, 255, 0.3);
}
.bp3-dark .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head {
stroke: #8a9ba8;
}
.bp3-button:disabled::before,
.bp3-button:disabled .bp3-icon,
.bp3-button:disabled .bp3-icon-standard,
.bp3-button:disabled .bp3-icon-large,
.bp3-button.bp3-disabled::before,
.bp3-button.bp3-disabled .bp3-icon,
.bp3-button.bp3-disabled .bp3-icon-standard,
.bp3-button.bp3-disabled .bp3-icon-large,
.bp3-button[class*="bp3-intent-"]::before,
.bp3-button[class*="bp3-intent-"] .bp3-icon,
.bp3-button[class*="bp3-intent-"] .bp3-icon-standard,
.bp3-button[class*="bp3-intent-"] .bp3-icon-large {
color: inherit !important;
}
.bp3-button.bp3-minimal {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
}
.bp3-button.bp3-minimal:hover {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(167, 182, 194, 0.3);
text-decoration: none;
color: #182026;
}
.bp3-button.bp3-minimal:active,
.bp3-button.bp3-minimal.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(115, 134, 148, 0.3);
color: #182026;
}
.bp3-button.bp3-minimal:disabled,
.bp3-button.bp3-minimal:disabled:hover,
.bp3-button.bp3-minimal.bp3-disabled,
.bp3-button.bp3-minimal.bp3-disabled:hover {
background: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-button.bp3-minimal:disabled.bp3-active,
.bp3-button.bp3-minimal:disabled:hover.bp3-active,
.bp3-button.bp3-minimal.bp3-disabled.bp3-active,
.bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active {
background: rgba(115, 134, 148, 0.3);
}
.bp3-dark .bp3-button.bp3-minimal {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: inherit;
}
.bp3-dark .bp3-button.bp3-minimal:hover,
.bp3-dark .bp3-button.bp3-minimal:active,
.bp3-dark .bp3-button.bp3-minimal.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
}
.bp3-dark .bp3-button.bp3-minimal:hover {
background: rgba(138, 155, 168, 0.15);
}
.bp3-dark .bp3-button.bp3-minimal:active,
.bp3-dark .bp3-button.bp3-minimal.bp3-active {
background: rgba(138, 155, 168, 0.3);
color: #f5f8fa;
}
.bp3-dark .bp3-button.bp3-minimal:disabled,
.bp3-dark .bp3-button.bp3-minimal:disabled:hover,
.bp3-dark .bp3-button.bp3-minimal.bp3-disabled,
.bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover {
background: none;
cursor: not-allowed;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-button.bp3-minimal:disabled.bp3-active,
.bp3-dark .bp3-button.bp3-minimal:disabled:hover.bp3-active,
.bp3-dark .bp3-button.bp3-minimal.bp3-disabled.bp3-active,
.bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active {
background: rgba(138, 155, 168, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-primary {
color: #106ba3;
}
.bp3-button.bp3-minimal.bp3-intent-primary:hover,
.bp3-button.bp3-minimal.bp3-intent-primary:active,
.bp3-button.bp3-minimal.bp3-intent-primary.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #106ba3;
}
.bp3-button.bp3-minimal.bp3-intent-primary:hover {
background: rgba(19, 124, 189, 0.15);
color: #106ba3;
}
.bp3-button.bp3-minimal.bp3-intent-primary:active,
.bp3-button.bp3-minimal.bp3-intent-primary.bp3-active {
background: rgba(19, 124, 189, 0.3);
color: #106ba3;
}
.bp3-button.bp3-minimal.bp3-intent-primary:disabled,
.bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled {
background: none;
color: rgba(16, 107, 163, 0.5);
}
.bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active,
.bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active {
background: rgba(19, 124, 189, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head {
stroke: #106ba3;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary {
color: #48aff0;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:hover {
background: rgba(19, 124, 189, 0.2);
color: #48aff0;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active {
background: rgba(19, 124, 189, 0.3);
color: #48aff0;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled {
background: none;
color: rgba(72, 175, 240, 0.5);
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active {
background: rgba(19, 124, 189, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-success {
color: #0d8050;
}
.bp3-button.bp3-minimal.bp3-intent-success:hover,
.bp3-button.bp3-minimal.bp3-intent-success:active,
.bp3-button.bp3-minimal.bp3-intent-success.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #0d8050;
}
.bp3-button.bp3-minimal.bp3-intent-success:hover {
background: rgba(15, 153, 96, 0.15);
color: #0d8050;
}
.bp3-button.bp3-minimal.bp3-intent-success:active,
.bp3-button.bp3-minimal.bp3-intent-success.bp3-active {
background: rgba(15, 153, 96, 0.3);
color: #0d8050;
}
.bp3-button.bp3-minimal.bp3-intent-success:disabled,
.bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled {
background: none;
color: rgba(13, 128, 80, 0.5);
}
.bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active,
.bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active {
background: rgba(15, 153, 96, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-success .bp3-button-spinner .bp3-spinner-head {
stroke: #0d8050;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success {
color: #3dcc91;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:hover {
background: rgba(15, 153, 96, 0.2);
color: #3dcc91;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-active {
background: rgba(15, 153, 96, 0.3);
color: #3dcc91;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled {
background: none;
color: rgba(61, 204, 145, 0.5);
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active {
background: rgba(15, 153, 96, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-warning {
color: #bf7326;
}
.bp3-button.bp3-minimal.bp3-intent-warning:hover,
.bp3-button.bp3-minimal.bp3-intent-warning:active,
.bp3-button.bp3-minimal.bp3-intent-warning.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #bf7326;
}
.bp3-button.bp3-minimal.bp3-intent-warning:hover {
background: rgba(217, 130, 43, 0.15);
color: #bf7326;
}
.bp3-button.bp3-minimal.bp3-intent-warning:active,
.bp3-button.bp3-minimal.bp3-intent-warning.bp3-active {
background: rgba(217, 130, 43, 0.3);
color: #bf7326;
}
.bp3-button.bp3-minimal.bp3-intent-warning:disabled,
.bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled {
background: none;
color: rgba(191, 115, 38, 0.5);
}
.bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active,
.bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active {
background: rgba(217, 130, 43, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head {
stroke: #bf7326;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning {
color: #ffb366;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:hover {
background: rgba(217, 130, 43, 0.2);
color: #ffb366;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active {
background: rgba(217, 130, 43, 0.3);
color: #ffb366;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled {
background: none;
color: rgba(255, 179, 102, 0.5);
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active {
background: rgba(217, 130, 43, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-danger {
color: #c23030;
}
.bp3-button.bp3-minimal.bp3-intent-danger:hover,
.bp3-button.bp3-minimal.bp3-intent-danger:active,
.bp3-button.bp3-minimal.bp3-intent-danger.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #c23030;
}
.bp3-button.bp3-minimal.bp3-intent-danger:hover {
background: rgba(219, 55, 55, 0.15);
color: #c23030;
}
.bp3-button.bp3-minimal.bp3-intent-danger:active,
.bp3-button.bp3-minimal.bp3-intent-danger.bp3-active {
background: rgba(219, 55, 55, 0.3);
color: #c23030;
}
.bp3-button.bp3-minimal.bp3-intent-danger:disabled,
.bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled {
background: none;
color: rgba(194, 48, 48, 0.5);
}
.bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active,
.bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active {
background: rgba(219, 55, 55, 0.3);
}
.bp3-button.bp3-minimal.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head {
stroke: #c23030;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger {
color: #ff7373;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:hover {
background: rgba(219, 55, 55, 0.2);
color: #ff7373;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active {
background: rgba(219, 55, 55, 0.3);
color: #ff7373;
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled {
background: none;
color: rgba(255, 115, 115, 0.5);
}
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active,
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active {
background: rgba(219, 55, 55, 0.3);
}
a.bp3-button {
text-align: center;
text-decoration: none;
-webkit-transition: none;
transition: none;
}
a.bp3-button,
a.bp3-button:hover,
a.bp3-button:active {
color: #182026;
}
a.bp3-button.bp3-disabled {
color: rgba(92, 112, 128, 0.6);
}
.bp3-button-text {
-webkit-box-flex: 0;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
}
.bp3-button.bp3-align-left .bp3-button-text,
.bp3-button.bp3-align-right .bp3-button-text,
.bp3-button-group.bp3-align-left .bp3-button-text,
.bp3-button-group.bp3-align-right .bp3-button-text {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
.bp3-button-group {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
}
.bp3-button-group .bp3-button {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
position: relative;
z-index: 4;
}
.bp3-button-group .bp3-button:focus {
z-index: 5;
}
.bp3-button-group .bp3-button:hover {
z-index: 6;
}
.bp3-button-group .bp3-button:active,
.bp3-button-group .bp3-button.bp3-active {
z-index: 7;
}
.bp3-button-group .bp3-button:disabled,
.bp3-button-group .bp3-button.bp3-disabled {
z-index: 3;
}
.bp3-button-group .bp3-button[class*="bp3-intent-"] {
z-index: 9;
}
.bp3-button-group .bp3-button[class*="bp3-intent-"]:focus {
z-index: 10;
}
.bp3-button-group .bp3-button[class*="bp3-intent-"]:hover {
z-index: 11;
}
.bp3-button-group .bp3-button[class*="bp3-intent-"]:active,
.bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-active {
z-index: 12;
}
.bp3-button-group .bp3-button[class*="bp3-intent-"]:disabled,
.bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-disabled {
z-index: 8;
}
.bp3-button-group:not(.bp3-minimal)>.bp3-popover-wrapper:not(:first-child) .bp3-button,
.bp3-button-group:not(.bp3-minimal)>.bp3-button:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.bp3-button-group:not(.bp3-minimal)>.bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-button-group:not(.bp3-minimal)>.bp3-button:not(:last-child) {
margin-right: -1px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.bp3-button-group.bp3-minimal .bp3-button {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
}
.bp3-button-group.bp3-minimal .bp3-button:hover {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(167, 182, 194, 0.3);
text-decoration: none;
color: #182026;
}
.bp3-button-group.bp3-minimal .bp3-button:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(115, 134, 148, 0.3);
color: #182026;
}
.bp3-button-group.bp3-minimal .bp3-button:disabled,
.bp3-button-group.bp3-minimal .bp3-button:disabled:hover,
.bp3-button-group.bp3-minimal .bp3-button.bp3-disabled,
.bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover {
background: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active,
.bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active {
background: rgba(115, 134, 148, 0.3);
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: inherit;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover {
background: rgba(138, 155, 168, 0.15);
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active {
background: rgba(138, 155, 168, 0.3);
color: #f5f8fa;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover {
background: none;
cursor: not-allowed;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active {
background: rgba(138, 155, 168, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary {
color: #106ba3;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #106ba3;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover {
background: rgba(19, 124, 189, 0.15);
color: #106ba3;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active {
background: rgba(19, 124, 189, 0.3);
color: #106ba3;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled {
background: none;
color: rgba(16, 107, 163, 0.5);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active {
background: rgba(19, 124, 189, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head {
stroke: #106ba3;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary {
color: #48aff0;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover {
background: rgba(19, 124, 189, 0.2);
color: #48aff0;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active {
background: rgba(19, 124, 189, 0.3);
color: #48aff0;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled {
background: none;
color: rgba(72, 175, 240, 0.5);
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active {
background: rgba(19, 124, 189, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success {
color: #0d8050;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #0d8050;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover {
background: rgba(15, 153, 96, 0.15);
color: #0d8050;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active {
background: rgba(15, 153, 96, 0.3);
color: #0d8050;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled {
background: none;
color: rgba(13, 128, 80, 0.5);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active {
background: rgba(15, 153, 96, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success .bp3-button-spinner .bp3-spinner-head {
stroke: #0d8050;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success {
color: #3dcc91;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover {
background: rgba(15, 153, 96, 0.2);
color: #3dcc91;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active {
background: rgba(15, 153, 96, 0.3);
color: #3dcc91;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled {
background: none;
color: rgba(61, 204, 145, 0.5);
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active {
background: rgba(15, 153, 96, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning {
color: #bf7326;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #bf7326;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover {
background: rgba(217, 130, 43, 0.15);
color: #bf7326;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active {
background: rgba(217, 130, 43, 0.3);
color: #bf7326;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled {
background: none;
color: rgba(191, 115, 38, 0.5);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active {
background: rgba(217, 130, 43, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head {
stroke: #bf7326;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning {
color: #ffb366;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover {
background: rgba(217, 130, 43, 0.2);
color: #ffb366;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active {
background: rgba(217, 130, 43, 0.3);
color: #ffb366;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled {
background: none;
color: rgba(255, 179, 102, 0.5);
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active {
background: rgba(217, 130, 43, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger {
color: #c23030;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #c23030;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover {
background: rgba(219, 55, 55, 0.15);
color: #c23030;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active {
background: rgba(219, 55, 55, 0.3);
color: #c23030;
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled {
background: none;
color: rgba(194, 48, 48, 0.5);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active,
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active {
background: rgba(219, 55, 55, 0.3);
}
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head {
stroke: #c23030;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger {
color: #ff7373;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover {
background: rgba(219, 55, 55, 0.2);
color: #ff7373;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active {
background: rgba(219, 55, 55, 0.3);
color: #ff7373;
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled {
background: none;
color: rgba(255, 115, 115, 0.5);
}
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active,
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active {
background: rgba(219, 55, 55, 0.3);
}
.bp3-button-group .bp3-popover-wrapper,
.bp3-button-group .bp3-popover-target {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
.bp3-button-group.bp3-fill {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
}
.bp3-button-group .bp3-button.bp3-fill,
.bp3-button-group.bp3-fill .bp3-button:not(.bp3-fixed) {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
.bp3-button-group.bp3-vertical {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: stretch;
-ms-flex-align: stretch;
align-items: stretch;
vertical-align: top;
}
.bp3-button-group.bp3-vertical.bp3-fill {
width: unset;
height: 100%;
}
.bp3-button-group.bp3-vertical .bp3-button {
margin-right: 0 !important;
width: 100%;
}
.bp3-button-group.bp3-vertical:not(.bp3-minimal)>.bp3-popover-wrapper:first-child .bp3-button,
.bp3-button-group.bp3-vertical:not(.bp3-minimal)>.bp3-button:first-child {
border-radius: 3px 3px 0 0;
}
.bp3-button-group.bp3-vertical:not(.bp3-minimal)>.bp3-popover-wrapper:last-child .bp3-button,
.bp3-button-group.bp3-vertical:not(.bp3-minimal)>.bp3-button:last-child {
border-radius: 0 0 3px 3px;
}
.bp3-button-group.bp3-vertical:not(.bp3-minimal)>.bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-button-group.bp3-vertical:not(.bp3-minimal)>.bp3-button:not(:last-child) {
margin-bottom: -1px;
}
.bp3-button-group.bp3-align-left .bp3-button {
text-align: left;
}
.bp3-dark .bp3-button-group:not(.bp3-minimal)>.bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-dark .bp3-button-group:not(.bp3-minimal)>.bp3-button:not(:last-child) {
margin-right: 1px;
}
.bp3-dark .bp3-button-group.bp3-vertical>.bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-dark .bp3-button-group.bp3-vertical>.bp3-button:not(:last-child) {
margin-bottom: 1px;
}
.bp3-callout {
line-height: 1.5;
font-size: 14px;
position: relative;
border-radius: 3px;
background-color: rgba(138, 155, 168, 0.15);
width: 100%;
padding: 10px 12px 9px;
}
.bp3-callout[class*="bp3-icon-"] {
padding-left: 40px;
}
.bp3-callout[class*="bp3-icon-"]::before {
line-height: 1;
font-family: "Icons20", sans-serif;
font-size: 20px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
position: absolute;
top: 10px;
left: 10px;
color: #5c7080;
}
.bp3-callout.bp3-callout-icon {
padding-left: 40px;
}
.bp3-callout.bp3-callout-icon>.bp3-icon:first-child {
position: absolute;
top: 10px;
left: 10px;
color: #5c7080;
}
.bp3-callout .bp3-heading {
margin-top: 0;
margin-bottom: 5px;
line-height: 20px;
}
.bp3-callout .bp3-heading:last-child {
margin-bottom: 0;
}
.bp3-dark .bp3-callout {
background-color: rgba(138, 155, 168, 0.2);
}
.bp3-dark .bp3-callout[class*="bp3-icon-"]::before {
color: #a7b6c2;
}
.bp3-callout.bp3-intent-primary {
background-color: rgba(19, 124, 189, 0.15);
}
.bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-primary>.bp3-icon:first-child,
.bp3-callout.bp3-intent-primary .bp3-heading {
color: #106ba3;
}
.bp3-dark .bp3-callout.bp3-intent-primary {
background-color: rgba(19, 124, 189, 0.25);
}
.bp3-dark .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-primary>.bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-primary .bp3-heading {
color: #48aff0;
}
.bp3-callout.bp3-intent-success {
background-color: rgba(15, 153, 96, 0.15);
}
.bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-success>.bp3-icon:first-child,
.bp3-callout.bp3-intent-success .bp3-heading {
color: #0d8050;
}
.bp3-dark .bp3-callout.bp3-intent-success {
background-color: rgba(15, 153, 96, 0.25);
}
.bp3-dark .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-success>.bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-success .bp3-heading {
color: #3dcc91;
}
.bp3-callout.bp3-intent-warning {
background-color: rgba(217, 130, 43, 0.15);
}
.bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-warning>.bp3-icon:first-child,
.bp3-callout.bp3-intent-warning .bp3-heading {
color: #bf7326;
}
.bp3-dark .bp3-callout.bp3-intent-warning {
background-color: rgba(217, 130, 43, 0.25);
}
.bp3-dark .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-warning>.bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-warning .bp3-heading {
color: #ffb366;
}
.bp3-callout.bp3-intent-danger {
background-color: rgba(219, 55, 55, 0.15);
}
.bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-danger>.bp3-icon:first-child,
.bp3-callout.bp3-intent-danger .bp3-heading {
color: #c23030;
}
.bp3-dark .bp3-callout.bp3-intent-danger {
background-color: rgba(219, 55, 55, 0.25);
}
.bp3-dark .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-danger>.bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-danger .bp3-heading {
color: #ff7373;
}
.bp3-running-text .bp3-callout {
margin: 20px 0;
}
.bp3-card {
border-radius: 3px;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
background-color: #ffffff;
padding: 20px;
-webkit-transition: -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-card.bp3-dark,
.bp3-dark .bp3-card {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
background-color: #30404d;
}
.bp3-elevation-0 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
}
.bp3-elevation-0.bp3-dark,
.bp3-dark .bp3-elevation-0 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
}
.bp3-elevation-1 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-elevation-1.bp3-dark,
.bp3-dark .bp3-elevation-1 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-elevation-2 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2);
}
.bp3-elevation-2.bp3-dark,
.bp3-dark .bp3-elevation-2 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4);
}
.bp3-elevation-3 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
}
.bp3-elevation-3.bp3-dark,
.bp3-dark .bp3-elevation-3 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
}
.bp3-elevation-4 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
}
.bp3-elevation-4.bp3-dark,
.bp3-dark .bp3-elevation-4 {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
}
.bp3-card.bp3-interactive:hover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
cursor: pointer;
}
.bp3-card.bp3-interactive:hover.bp3-dark,
.bp3-dark .bp3-card.bp3-interactive:hover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
}
.bp3-card.bp3-interactive:active {
opacity: 0.9;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
-webkit-transition-duration: 0;
transition-duration: 0;
}
.bp3-card.bp3-interactive:active.bp3-dark,
.bp3-dark .bp3-card.bp3-interactive:active {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-collapse {
height: 0;
overflow-y: hidden;
-webkit-transition: height 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: height 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-collapse .bp3-collapse-body {
-webkit-transition: -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-collapse .bp3-collapse-body[aria-hidden="true"] {
display: none;
}
.bp3-context-menu .bp3-popover-target {
display: block;
}
.bp3-context-menu-popover-target {
position: fixed;
}
.bp3-divider {
margin: 5px;
border-right: 1px solid rgba(16, 22, 26, 0.15);
border-bottom: 1px solid rgba(16, 22, 26, 0.15);
}
.bp3-dark .bp3-divider {
border-color: rgba(16, 22, 26, 0.4);
}
.bp3-dialog-container {
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
width: 100%;
min-height: 100%;
pointer-events: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-dialog-container.bp3-overlay-enter>.bp3-dialog,
.bp3-dialog-container.bp3-overlay-appear>.bp3-dialog {
opacity: 0;
-webkit-transform: scale(0.5);
transform: scale(0.5);
}
.bp3-dialog-container.bp3-overlay-enter-active>.bp3-dialog,
.bp3-dialog-container.bp3-overlay-appear-active>.bp3-dialog {
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
-webkit-transition-property: opacity, -webkit-transform;
transition-property: opacity, -webkit-transform;
transition-property: opacity, transform;
transition-property: opacity, transform, -webkit-transform;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-dialog-container.bp3-overlay-exit>.bp3-dialog {
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
.bp3-dialog-container.bp3-overlay-exit-active>.bp3-dialog {
opacity: 0;
-webkit-transform: scale(0.5);
transform: scale(0.5);
-webkit-transition-property: opacity, -webkit-transform;
transition-property: opacity, -webkit-transform;
transition-property: opacity, transform;
transition-property: opacity, transform, -webkit-transform;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-dialog {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
margin: 30px 0;
border-radius: 6px;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
background: #ebf1f5;
width: 500px;
padding-bottom: 20px;
pointer-events: all;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.bp3-dialog:focus {
outline: 0;
}
.bp3-dialog.bp3-dark,
.bp3-dark .bp3-dialog {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
background: #293742;
color: #f5f8fa;
}
.bp3-dialog-header {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border-radius: 6px 6px 0 0;
-webkit-box-shadow: 0 1px 0 rgba(16, 22, 26, 0.15);
box-shadow: 0 1px 0 rgba(16, 22, 26, 0.15);
background: #ffffff;
min-height: 40px;
padding-right: 5px;
padding-left: 20px;
}
.bp3-dialog-header .bp3-icon-large,
.bp3-dialog-header .bp3-icon {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
margin-right: 10px;
color: #5c7080;
}
.bp3-dialog-header .bp3-heading {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
margin: 0;
line-height: inherit;
}
.bp3-dialog-header .bp3-heading:last-child {
margin-right: 20px;
}
.bp3-dark .bp3-dialog-header {
-webkit-box-shadow: 0 1px 0 rgba(16, 22, 26, 0.4);
box-shadow: 0 1px 0 rgba(16, 22, 26, 0.4);
background: #30404d;
}
.bp3-dark .bp3-dialog-header .bp3-icon-large,
.bp3-dark .bp3-dialog-header .bp3-icon {
color: #a7b6c2;
}
.bp3-dialog-body {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
margin: 20px;
line-height: 18px;
}
.bp3-dialog-footer {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
margin: 0 20px;
}
.bp3-dialog-footer-actions {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
}
.bp3-dialog-footer-actions .bp3-button {
margin-left: 10px;
}
.bp3-drawer {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
margin: 0;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
background: #ffffff;
padding: 0;
}
.bp3-drawer:focus {
outline: 0;
}
.bp3-drawer.bp3-position-top {
top: 0;
right: 0;
left: 0;
height: 50%;
}
.bp3-drawer.bp3-position-top.bp3-overlay-enter,
.bp3-drawer.bp3-position-top.bp3-overlay-appear {
-webkit-transform: translateY(-100%);
transform: translateY(-100%);
}
.bp3-drawer.bp3-position-top.bp3-overlay-enter-active,
.bp3-drawer.bp3-position-top.bp3-overlay-appear-active {
-webkit-transform: translateY(0);
transform: translateY(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-position-top.bp3-overlay-exit {
-webkit-transform: translateY(0);
transform: translateY(0);
}
.bp3-drawer.bp3-position-top.bp3-overlay-exit-active {
-webkit-transform: translateY(-100%);
transform: translateY(-100%);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-position-bottom {
right: 0;
bottom: 0;
left: 0;
height: 50%;
}
.bp3-drawer.bp3-position-bottom.bp3-overlay-enter,
.bp3-drawer.bp3-position-bottom.bp3-overlay-appear {
-webkit-transform: translateY(100%);
transform: translateY(100%);
}
.bp3-drawer.bp3-position-bottom.bp3-overlay-enter-active,
.bp3-drawer.bp3-position-bottom.bp3-overlay-appear-active {
-webkit-transform: translateY(0);
transform: translateY(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-position-bottom.bp3-overlay-exit {
-webkit-transform: translateY(0);
transform: translateY(0);
}
.bp3-drawer.bp3-position-bottom.bp3-overlay-exit-active {
-webkit-transform: translateY(100%);
transform: translateY(100%);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-position-left {
top: 0;
bottom: 0;
left: 0;
width: 50%;
}
.bp3-drawer.bp3-position-left.bp3-overlay-enter,
.bp3-drawer.bp3-position-left.bp3-overlay-appear {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.bp3-drawer.bp3-position-left.bp3-overlay-enter-active,
.bp3-drawer.bp3-position-left.bp3-overlay-appear-active {
-webkit-transform: translateX(0);
transform: translateX(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-position-left.bp3-overlay-exit {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.bp3-drawer.bp3-position-left.bp3-overlay-exit-active {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-position-right {
top: 0;
right: 0;
bottom: 0;
width: 50%;
}
.bp3-drawer.bp3-position-right.bp3-overlay-enter,
.bp3-drawer.bp3-position-right.bp3-overlay-appear {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.bp3-drawer.bp3-position-right.bp3-overlay-enter-active,
.bp3-drawer.bp3-position-right.bp3-overlay-appear-active {
-webkit-transform: translateX(0);
transform: translateX(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-position-right.bp3-overlay-exit {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.bp3-drawer.bp3-position-right.bp3-overlay-exit-active {
-webkit-transform: translateX(100%);
transform: translateX(100%);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right):not(.bp3-vertical) {
top: 0;
right: 0;
bottom: 0;
width: 50%;
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right):not(.bp3-vertical).bp3-overlay-enter,
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right):not(.bp3-vertical).bp3-overlay-appear {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right):not(.bp3-vertical).bp3-overlay-enter-active,
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right):not(.bp3-vertical).bp3-overlay-appear-active {
-webkit-transform: translateX(0);
transform: translateX(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right):not(.bp3-vertical).bp3-overlay-exit {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right):not(.bp3-vertical).bp3-overlay-exit-active {
-webkit-transform: translateX(100%);
transform: translateX(100%);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right).bp3-vertical {
right: 0;
bottom: 0;
left: 0;
height: 50%;
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right).bp3-vertical.bp3-overlay-enter,
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right).bp3-vertical.bp3-overlay-appear {
-webkit-transform: translateY(100%);
transform: translateY(100%);
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right).bp3-vertical.bp3-overlay-enter-active,
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right).bp3-vertical.bp3-overlay-appear-active {
-webkit-transform: translateY(0);
transform: translateY(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right).bp3-vertical.bp3-overlay-exit {
-webkit-transform: translateY(0);
transform: translateY(0);
}
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(.bp3-position-right).bp3-vertical.bp3-overlay-exit-active {
-webkit-transform: translateY(100%);
transform: translateY(100%);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-drawer.bp3-dark,
.bp3-dark .bp3-drawer {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
background: #30404d;
color: #f5f8fa;
}
.bp3-drawer-header {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: relative;
border-radius: 0;
-webkit-box-shadow: 0 1px 0 rgba(16, 22, 26, 0.15);
box-shadow: 0 1px 0 rgba(16, 22, 26, 0.15);
min-height: 40px;
padding: 5px;
padding-left: 20px;
}
.bp3-drawer-header .bp3-icon-large,
.bp3-drawer-header .bp3-icon {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
margin-right: 10px;
color: #5c7080;
}
.bp3-drawer-header .bp3-heading {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
margin: 0;
line-height: inherit;
}
.bp3-drawer-header .bp3-heading:last-child {
margin-right: 20px;
}
.bp3-dark .bp3-drawer-header {
-webkit-box-shadow: 0 1px 0 rgba(16, 22, 26, 0.4);
box-shadow: 0 1px 0 rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-drawer-header .bp3-icon-large,
.bp3-dark .bp3-drawer-header .bp3-icon {
color: #a7b6c2;
}
.bp3-drawer-body {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
overflow: auto;
line-height: 18px;
}
.bp3-drawer-footer {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
position: relative;
-webkit-box-shadow: inset 0 1px 0 rgba(16, 22, 26, 0.15);
box-shadow: inset 0 1px 0 rgba(16, 22, 26, 0.15);
padding: 10px 20px;
}
.bp3-dark .bp3-drawer-footer {
-webkit-box-shadow: inset 0 1px 0 rgba(16, 22, 26, 0.4);
box-shadow: inset 0 1px 0 rgba(16, 22, 26, 0.4);
}
.bp3-editable-text {
display: inline-block;
position: relative;
cursor: text;
max-width: 100%;
vertical-align: top;
white-space: nowrap;
}
.bp3-editable-text::before {
position: absolute;
top: -3px;
right: -3px;
bottom: -3px;
left: -3px;
border-radius: 3px;
content: "";
-webkit-transition: background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-editable-text:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15);
}
.bp3-editable-text.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
background-color: #ffffff;
}
.bp3-editable-text.bp3-disabled::before {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-editable-text.bp3-intent-primary .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-primary .bp3-editable-text-content {
color: #137cbd;
}
.bp3-editable-text.bp3-intent-primary:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4);
}
.bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-editable-text.bp3-intent-success .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-success .bp3-editable-text-content {
color: #0f9960;
}
.bp3-editable-text.bp3-intent-success:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4);
box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4);
}
.bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-editable-text.bp3-intent-warning .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-warning .bp3-editable-text-content {
color: #d9822b;
}
.bp3-editable-text.bp3-intent-warning:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4);
box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4);
}
.bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-editable-text.bp3-intent-danger .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-danger .bp3-editable-text-content {
color: #db3737;
}
.bp3-editable-text.bp3-intent-danger:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4);
box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4);
}
.bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-dark .bp3-editable-text:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15);
}
.bp3-dark .bp3-editable-text.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
background-color: rgba(16, 22, 26, 0.3);
}
.bp3-dark .bp3-editable-text.bp3-disabled::before {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-dark .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content {
color: #48aff0;
}
.bp3-dark .bp3-editable-text.bp3-intent-primary:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4);
box-shadow: 0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4);
}
.bp3-dark .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-editable-text.bp3-intent-success .bp3-editable-text-content {
color: #3dcc91;
}
.bp3-dark .bp3-editable-text.bp3-intent-success:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4);
box-shadow: 0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4);
}
.bp3-dark .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content {
color: #ffb366;
}
.bp3-dark .bp3-editable-text.bp3-intent-warning:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4);
box-shadow: 0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4);
}
.bp3-dark .bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-editable-text.bp3-intent-danger .bp3-editable-text-content {
color: #ff7373;
}
.bp3-dark .bp3-editable-text.bp3-intent-danger:hover::before {
-webkit-box-shadow: 0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4);
box-shadow: 0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4);
}
.bp3-dark .bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before {
-webkit-box-shadow: 0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-editable-text-input,
.bp3-editable-text-content {
display: inherit;
position: relative;
min-width: inherit;
max-width: inherit;
vertical-align: top;
text-transform: inherit;
letter-spacing: inherit;
color: inherit;
font: inherit;
resize: none;
}
.bp3-editable-text-input {
border: none;
-webkit-box-shadow: none;
box-shadow: none;
background: none;
width: 100%;
padding: 0;
white-space: pre-wrap;
}
.bp3-editable-text-input::-webkit-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-editable-text-input::-moz-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-editable-text-input:-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-editable-text-input::-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-editable-text-input::placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-editable-text-input:focus {
outline: none;
}
.bp3-editable-text-input::-ms-clear {
display: none;
}
.bp3-editable-text-content {
overflow: hidden;
padding-right: 2px;
text-overflow: ellipsis;
white-space: pre;
}
.bp3-editable-text-editing>.bp3-editable-text-content {
position: absolute;
left: 0;
visibility: hidden;
}
.bp3-editable-text-placeholder>.bp3-editable-text-content {
color: rgba(92, 112, 128, 0.6);
}
.bp3-dark .bp3-editable-text-placeholder>.bp3-editable-text-content {
color: rgba(167, 182, 194, 0.6);
}
.bp3-editable-text.bp3-multiline {
display: block;
}
.bp3-editable-text.bp3-multiline .bp3-editable-text-content {
overflow: auto;
white-space: pre-wrap;
word-wrap: break-word;
}
.bp3-control-group {
-webkit-transform: translateZ(0);
transform: translateZ(0);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: stretch;
-ms-flex-align: stretch;
align-items: stretch;
}
.bp3-control-group>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-control-group>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-control-group .bp3-button,
.bp3-control-group .bp3-html-select,
.bp3-control-group .bp3-input,
.bp3-control-group .bp3-select {
position: relative;
}
.bp3-control-group .bp3-input {
z-index: 2;
border-radius: inherit;
}
.bp3-control-group .bp3-input:focus {
z-index: 14;
border-radius: 3px;
}
.bp3-control-group .bp3-input[class*="bp3-intent"] {
z-index: 13;
}
.bp3-control-group .bp3-input[class*="bp3-intent"]:focus {
z-index: 15;
}
.bp3-control-group .bp3-input[readonly],
.bp3-control-group .bp3-input:disabled,
.bp3-control-group .bp3-input.bp3-disabled {
z-index: 1;
}
.bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input {
z-index: 13;
}
.bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input:focus {
z-index: 15;
}
.bp3-control-group .bp3-button,
.bp3-control-group .bp3-html-select select,
.bp3-control-group .bp3-select select {
-webkit-transform: translateZ(0);
transform: translateZ(0);
z-index: 4;
border-radius: inherit;
}
.bp3-control-group .bp3-button:focus,
.bp3-control-group .bp3-html-select select:focus,
.bp3-control-group .bp3-select select:focus {
z-index: 5;
}
.bp3-control-group .bp3-button:hover,
.bp3-control-group .bp3-html-select select:hover,
.bp3-control-group .bp3-select select:hover {
z-index: 6;
}
.bp3-control-group .bp3-button:active,
.bp3-control-group .bp3-html-select select:active,
.bp3-control-group .bp3-select select:active {
z-index: 7;
}
.bp3-control-group .bp3-button[readonly],
.bp3-control-group .bp3-button:disabled,
.bp3-control-group .bp3-button.bp3-disabled,
.bp3-control-group .bp3-html-select select[readonly],
.bp3-control-group .bp3-html-select select:disabled,
.bp3-control-group .bp3-html-select select.bp3-disabled,
.bp3-control-group .bp3-select select[readonly],
.bp3-control-group .bp3-select select:disabled,
.bp3-control-group .bp3-select select.bp3-disabled {
z-index: 3;
}
.bp3-control-group .bp3-button[class*="bp3-intent"],
.bp3-control-group .bp3-html-select select[class*="bp3-intent"],
.bp3-control-group .bp3-select select[class*="bp3-intent"] {
z-index: 9;
}
.bp3-control-group .bp3-button[class*="bp3-intent"]:focus,
.bp3-control-group .bp3-html-select select[class*="bp3-intent"]:focus,
.bp3-control-group .bp3-select select[class*="bp3-intent"]:focus {
z-index: 10;
}
.bp3-control-group .bp3-button[class*="bp3-intent"]:hover,
.bp3-control-group .bp3-html-select select[class*="bp3-intent"]:hover,
.bp3-control-group .bp3-select select[class*="bp3-intent"]:hover {
z-index: 11;
}
.bp3-control-group .bp3-button[class*="bp3-intent"]:active,
.bp3-control-group .bp3-html-select select[class*="bp3-intent"]:active,
.bp3-control-group .bp3-select select[class*="bp3-intent"]:active {
z-index: 12;
}
.bp3-control-group .bp3-button[class*="bp3-intent"][readonly],
.bp3-control-group .bp3-button[class*="bp3-intent"]:disabled,
.bp3-control-group .bp3-button[class*="bp3-intent"].bp3-disabled,
.bp3-control-group .bp3-html-select select[class*="bp3-intent"][readonly],
.bp3-control-group .bp3-html-select select[class*="bp3-intent"]:disabled,
.bp3-control-group .bp3-html-select select[class*="bp3-intent"].bp3-disabled,
.bp3-control-group .bp3-select select[class*="bp3-intent"][readonly],
.bp3-control-group .bp3-select select[class*="bp3-intent"]:disabled,
.bp3-control-group .bp3-select select[class*="bp3-intent"].bp3-disabled {
z-index: 8;
}
.bp3-control-group .bp3-input-group>.bp3-icon,
.bp3-control-group .bp3-input-group>.bp3-button,
.bp3-control-group .bp3-input-group>.bp3-input-action {
z-index: 16;
}
.bp3-control-group .bp3-select::after,
.bp3-control-group .bp3-html-select::after,
.bp3-control-group .bp3-select>.bp3-icon,
.bp3-control-group .bp3-html-select>.bp3-icon {
z-index: 17;
}
.bp3-control-group:not(.bp3-vertical)>* {
margin-right: -1px;
}
.bp3-dark .bp3-control-group:not(.bp3-vertical)>* {
margin-right: 0;
}
.bp3-dark .bp3-control-group:not(.bp3-vertical)>.bp3-button+.bp3-button {
margin-left: 1px;
}
.bp3-control-group .bp3-popover-wrapper,
.bp3-control-group .bp3-popover-target {
border-radius: inherit;
}
.bp3-control-group> :first-child {
border-radius: 3px 0 0 3px;
}
.bp3-control-group> :last-child {
margin-right: 0;
border-radius: 0 3px 3px 0;
}
.bp3-control-group> :only-child {
margin-right: 0;
border-radius: 3px;
}
.bp3-control-group .bp3-input-group .bp3-button {
border-radius: 3px;
}
.bp3-control-group>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
.bp3-control-group.bp3-fill>*:not(.bp3-fixed) {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
.bp3-control-group.bp3-vertical {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.bp3-control-group.bp3-vertical>* {
margin-top: -1px;
}
.bp3-control-group.bp3-vertical> :first-child {
margin-top: 0;
border-radius: 3px 3px 0 0;
}
.bp3-control-group.bp3-vertical> :last-child {
border-radius: 0 0 3px 3px;
}
.bp3-control {
display: block;
position: relative;
margin-bottom: 10px;
cursor: pointer;
text-transform: none;
}
.bp3-control input:checked~.bp3-control-indicator {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #137cbd;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
color: #ffffff;
}
.bp3-control:hover input:checked~.bp3-control-indicator {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #106ba3;
}
.bp3-control input:not(:disabled):active:checked~.bp3-control-indicator {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background: #0e5a8a;
}
.bp3-control input:disabled:checked~.bp3-control-indicator {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(19, 124, 189, 0.5);
}
.bp3-dark .bp3-control input:checked~.bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-control:hover input:checked~.bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #106ba3;
}
.bp3-dark .bp3-control input:not(:disabled):active:checked~.bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #0e5a8a;
}
.bp3-dark .bp3-control input:disabled:checked~.bp3-control-indicator {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(14, 90, 138, 0.5);
}
.bp3-control:not(.bp3-align-right) {
padding-left: 26px;
}
.bp3-control:not(.bp3-align-right) .bp3-control-indicator {
margin-left: -26px;
}
.bp3-control.bp3-align-right {
padding-right: 26px;
}
.bp3-control.bp3-align-right .bp3-control-indicator {
margin-right: -26px;
}
.bp3-control.bp3-disabled {
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-control.bp3-inline {
display: inline-block;
margin-right: 20px;
}
.bp3-control input {
position: absolute;
top: 0;
left: 0;
opacity: 0;
z-index: -1;
}
.bp3-control .bp3-control-indicator {
display: inline-block;
position: relative;
margin-top: -3px;
margin-right: 10px;
border: none;
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-clip: padding-box;
background-color: #f5f8fa;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0));
cursor: pointer;
width: 1em;
height: 1em;
vertical-align: middle;
font-size: 16px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-control .bp3-control-indicator::before {
display: block;
width: 1em;
height: 1em;
content: "";
}
.bp3-control:hover .bp3-control-indicator {
background-color: #ebf1f5;
}
.bp3-control input:not(:disabled):active~.bp3-control-indicator {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background: #d8e1e8;
}
.bp3-control input:disabled~.bp3-control-indicator {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(206, 217, 224, 0.5);
cursor: not-allowed;
}
.bp3-control input:focus~.bp3-control-indicator {
outline: rgba(19, 124, 189, 0.6) auto 2px;
outline-offset: 2px;
-moz-outline-radius: 6px;
}
.bp3-control.bp3-align-right .bp3-control-indicator {
float: right;
margin-top: 1px;
margin-left: 10px;
}
.bp3-control.bp3-large {
font-size: 16px;
}
.bp3-control.bp3-large:not(.bp3-align-right) {
padding-left: 30px;
}
.bp3-control.bp3-large:not(.bp3-align-right) .bp3-control-indicator {
margin-left: -30px;
}
.bp3-control.bp3-large.bp3-align-right {
padding-right: 30px;
}
.bp3-control.bp3-large.bp3-align-right .bp3-control-indicator {
margin-right: -30px;
}
.bp3-control.bp3-large .bp3-control-indicator {
font-size: 20px;
}
.bp3-control.bp3-large.bp3-align-right .bp3-control-indicator {
margin-top: 0;
}
.bp3-control.bp3-checkbox input:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #137cbd;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
color: #ffffff;
}
.bp3-control.bp3-checkbox:hover input:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
background-color: #106ba3;
}
.bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background: #0e5a8a;
}
.bp3-control.bp3-checkbox input:disabled:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(19, 124, 189, 0.5);
}
.bp3-dark .bp3-control.bp3-checkbox input:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-control.bp3-checkbox:hover input:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #106ba3;
}
.bp3-dark .bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #0e5a8a;
}
.bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate~.bp3-control-indicator {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(14, 90, 138, 0.5);
}
.bp3-control.bp3-checkbox .bp3-control-indicator {
border-radius: 3px;
}
.bp3-control.bp3-checkbox input:checked~.bp3-control-indicator::before {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 0 0-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0 0 12 5z' fill='white'/%3e%3c/svg%3e");
}
.bp3-control.bp3-checkbox input:indeterminate~.bp3-control-indicator::before {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1z' fill='white'/%3e%3c/svg%3e");
}
.bp3-control.bp3-radio .bp3-control-indicator {
border-radius: 50%;
}
.bp3-control.bp3-radio input:checked~.bp3-control-indicator::before {
background-image: radial-gradient(#ffffff, #ffffff 28%, transparent 32%);
}
.bp3-control.bp3-radio input:checked:disabled~.bp3-control-indicator::before {
opacity: 0.5;
}
.bp3-control.bp3-radio input:focus~.bp3-control-indicator {
-moz-outline-radius: 16px;
}
.bp3-control.bp3-switch input~.bp3-control-indicator {
background: rgba(167, 182, 194, 0.5);
}
.bp3-control.bp3-switch:hover input~.bp3-control-indicator {
background: rgba(115, 134, 148, 0.5);
}
.bp3-control.bp3-switch input:not(:disabled):active~.bp3-control-indicator {
background: rgba(92, 112, 128, 0.5);
}
.bp3-control.bp3-switch input:disabled~.bp3-control-indicator {
background: rgba(206, 217, 224, 0.5);
}
.bp3-control.bp3-switch input:disabled~.bp3-control-indicator::before {
background: rgba(255, 255, 255, 0.8);
}
.bp3-control.bp3-switch input:checked~.bp3-control-indicator {
background: #137cbd;
}
.bp3-control.bp3-switch:hover input:checked~.bp3-control-indicator {
background: #106ba3;
}
.bp3-control.bp3-switch input:checked:not(:disabled):active~.bp3-control-indicator {
background: #0e5a8a;
}
.bp3-control.bp3-switch input:checked:disabled~.bp3-control-indicator {
background: rgba(19, 124, 189, 0.5);
}
.bp3-control.bp3-switch input:checked:disabled~.bp3-control-indicator::before {
background: rgba(255, 255, 255, 0.8);
}
.bp3-control.bp3-switch:not(.bp3-align-right) {
padding-left: 38px;
}
.bp3-control.bp3-switch:not(.bp3-align-right) .bp3-control-indicator {
margin-left: -38px;
}
.bp3-control.bp3-switch.bp3-align-right {
padding-right: 38px;
}
.bp3-control.bp3-switch.bp3-align-right .bp3-control-indicator {
margin-right: -38px;
}
.bp3-control.bp3-switch .bp3-control-indicator {
border: none;
border-radius: 1.75em;
-webkit-box-shadow: none !important;
box-shadow: none !important;
width: auto;
min-width: 1.75em;
-webkit-transition: background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-control.bp3-switch .bp3-control-indicator::before {
position: absolute;
left: 0;
margin: 2px;
border-radius: 50%;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2);
background: #ffffff;
width: calc(1em - 4px);
height: calc(1em - 4px);
-webkit-transition: left 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: left 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-control.bp3-switch input:checked~.bp3-control-indicator::before {
left: calc(100% - 1em);
}
.bp3-control.bp3-switch.bp3-large:not(.bp3-align-right) {
padding-left: 45px;
}
.bp3-control.bp3-switch.bp3-large:not(.bp3-align-right) .bp3-control-indicator {
margin-left: -45px;
}
.bp3-control.bp3-switch.bp3-large.bp3-align-right {
padding-right: 45px;
}
.bp3-control.bp3-switch.bp3-large.bp3-align-right .bp3-control-indicator {
margin-right: -45px;
}
.bp3-dark .bp3-control.bp3-switch input~.bp3-control-indicator {
background: rgba(16, 22, 26, 0.5);
}
.bp3-dark .bp3-control.bp3-switch:hover input~.bp3-control-indicator {
background: rgba(16, 22, 26, 0.7);
}
.bp3-dark .bp3-control.bp3-switch input:not(:disabled):active~.bp3-control-indicator {
background: rgba(16, 22, 26, 0.9);
}
.bp3-dark .bp3-control.bp3-switch input:disabled~.bp3-control-indicator {
background: rgba(57, 75, 89, 0.5);
}
.bp3-dark .bp3-control.bp3-switch input:disabled~.bp3-control-indicator::before {
background: rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-control.bp3-switch input:checked~.bp3-control-indicator {
background: #137cbd;
}
.bp3-dark .bp3-control.bp3-switch:hover input:checked~.bp3-control-indicator {
background: #106ba3;
}
.bp3-dark .bp3-control.bp3-switch input:checked:not(:disabled):active~.bp3-control-indicator {
background: #0e5a8a;
}
.bp3-dark .bp3-control.bp3-switch input:checked:disabled~.bp3-control-indicator {
background: rgba(14, 90, 138, 0.5);
}
.bp3-dark .bp3-control.bp3-switch input:checked:disabled~.bp3-control-indicator::before {
background: rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-control.bp3-switch .bp3-control-indicator::before {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background: #394b59;
}
.bp3-dark .bp3-control.bp3-switch input:checked~.bp3-control-indicator::before {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-control.bp3-switch .bp3-switch-inner-text {
text-align: center;
font-size: 0.7em;
}
.bp3-control.bp3-switch .bp3-control-indicator-child:first-child {
visibility: hidden;
margin-right: 1.2em;
margin-left: 0.5em;
line-height: 0;
}
.bp3-control.bp3-switch .bp3-control-indicator-child:last-child {
visibility: visible;
margin-right: 0.5em;
margin-left: 1.2em;
line-height: 1em;
}
.bp3-control.bp3-switch input:checked~.bp3-control-indicator .bp3-control-indicator-child:first-child {
visibility: visible;
line-height: 1em;
}
.bp3-control.bp3-switch input:checked~.bp3-control-indicator .bp3-control-indicator-child:last-child {
visibility: hidden;
line-height: 0;
}
.bp3-dark .bp3-control {
color: #f5f8fa;
}
.bp3-dark .bp3-control.bp3-disabled {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-control .bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #394b59;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0));
}
.bp3-dark .bp3-control:hover .bp3-control-indicator {
background-color: #30404d;
}
.bp3-dark .bp3-control input:not(:disabled):active~.bp3-control-indicator {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background: #202b33;
}
.bp3-dark .bp3-control input:disabled~.bp3-control-indicator {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(57, 75, 89, 0.5);
cursor: not-allowed;
}
.bp3-dark .bp3-control.bp3-checkbox input:disabled:checked~.bp3-control-indicator,
.bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate~.bp3-control-indicator {
color: rgba(167, 182, 194, 0.6);
}
.bp3-file-input {
display: inline-block;
position: relative;
cursor: pointer;
height: 30px;
}
.bp3-file-input input {
opacity: 0;
margin: 0;
min-width: 200px;
}
.bp3-file-input input:disabled+.bp3-file-upload-input,
.bp3-file-input input.bp3-disabled+.bp3-file-upload-input {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(206, 217, 224, 0.5);
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
resize: none;
}
.bp3-file-input input:disabled+.bp3-file-upload-input::after,
.bp3-file-input input.bp3-disabled+.bp3-file-upload-input::after {
outline: none;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(206, 217, 224, 0.5);
background-image: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-file-input input:disabled+.bp3-file-upload-input::after.bp3-active,
.bp3-file-input input:disabled+.bp3-file-upload-input::after.bp3-active:hover,
.bp3-file-input input.bp3-disabled+.bp3-file-upload-input::after.bp3-active,
.bp3-file-input input.bp3-disabled+.bp3-file-upload-input::after.bp3-active:hover {
background: rgba(206, 217, 224, 0.7);
}
.bp3-dark .bp3-file-input input:disabled+.bp3-file-upload-input,
.bp3-dark .bp3-file-input input.bp3-disabled+.bp3-file-upload-input {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(57, 75, 89, 0.5);
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-input input:disabled+.bp3-file-upload-input::after,
.bp3-dark .bp3-file-input input.bp3-disabled+.bp3-file-upload-input::after {
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(57, 75, 89, 0.5);
background-image: none;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-input input:disabled+.bp3-file-upload-input::after.bp3-active,
.bp3-dark .bp3-file-input input.bp3-disabled+.bp3-file-upload-input::after.bp3-active {
background: rgba(57, 75, 89, 0.7);
}
.bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input {
color: #182026;
}
.bp3-dark .bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input {
color: #f5f8fa;
}
.bp3-file-input.bp3-fill {
width: 100%;
}
.bp3-file-input.bp3-large,
.bp3-large .bp3-file-input {
height: 40px;
}
.bp3-file-input .bp3-file-upload-input-custom-text::after {
content: attr(bp3-button-text);
}
.bp3-file-upload-input {
outline: none;
border: none;
border-radius: 3px;
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
background: #ffffff;
height: 30px;
padding: 0 10px;
vertical-align: middle;
line-height: 30px;
color: #182026;
font-size: 14px;
font-weight: 400;
-webkit-transition: -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
position: absolute;
top: 0;
right: 0;
left: 0;
padding-right: 80px;
color: rgba(92, 112, 128, 0.6);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-file-upload-input::-webkit-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-file-upload-input::-moz-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-file-upload-input:-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-file-upload-input::-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-file-upload-input::placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-file-upload-input:focus,
.bp3-file-upload-input.bp3-active {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-file-upload-input[type="search"],
.bp3-file-upload-input.bp3-round {
border-radius: 30px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding-left: 10px;
}
.bp3-file-upload-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.15);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.15);
}
.bp3-file-upload-input:disabled,
.bp3-file-upload-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(206, 217, 224, 0.5);
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
resize: none;
}
.bp3-file-upload-input::after {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-color: #f5f8fa;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0));
color: #182026;
min-width: 24px;
min-height: 24px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
position: absolute;
top: 0;
right: 0;
margin: 3px;
border-radius: 3px;
width: 70px;
text-align: center;
line-height: 24px;
content: "Browse";
}
.bp3-file-upload-input::after:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-clip: padding-box;
background-color: #ebf1f5;
}
.bp3-file-upload-input::after:active,
.bp3-file-upload-input::after.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #d8e1e8;
background-image: none;
}
.bp3-file-upload-input::after:disabled,
.bp3-file-upload-input::after.bp3-disabled {
outline: none;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(206, 217, 224, 0.5);
background-image: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-file-upload-input::after:disabled.bp3-active,
.bp3-file-upload-input::after:disabled.bp3-active:hover,
.bp3-file-upload-input::after.bp3-disabled.bp3-active,
.bp3-file-upload-input::after.bp3-disabled.bp3-active:hover {
background: rgba(206, 217, 224, 0.7);
}
.bp3-file-upload-input:hover::after {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-clip: padding-box;
background-color: #ebf1f5;
}
.bp3-file-upload-input:active::after {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #d8e1e8;
background-image: none;
}
.bp3-large .bp3-file-upload-input {
height: 40px;
line-height: 40px;
font-size: 16px;
padding-right: 95px;
}
.bp3-large .bp3-file-upload-input[type="search"],
.bp3-large .bp3-file-upload-input.bp3-round {
padding: 0 15px;
}
.bp3-large .bp3-file-upload-input::after {
min-width: 30px;
min-height: 30px;
margin: 5px;
width: 85px;
line-height: 30px;
}
.bp3-dark .bp3-file-upload-input {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
background: rgba(16, 22, 26, 0.3);
color: #f5f8fa;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input::-webkit-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input::-moz-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input:-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input::-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input::placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input:focus {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-file-upload-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-file-upload-input:disabled,
.bp3-dark .bp3-file-upload-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(57, 75, 89, 0.5);
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input::after {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #394b59;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0));
color: #f5f8fa;
}
.bp3-dark .bp3-file-upload-input::after:hover,
.bp3-dark .bp3-file-upload-input::after:active,
.bp3-dark .bp3-file-upload-input::after.bp3-active {
color: #f5f8fa;
}
.bp3-dark .bp3-file-upload-input::after:hover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #30404d;
}
.bp3-dark .bp3-file-upload-input::after:active,
.bp3-dark .bp3-file-upload-input::after.bp3-active {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #202b33;
background-image: none;
}
.bp3-dark .bp3-file-upload-input::after:disabled,
.bp3-dark .bp3-file-upload-input::after.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(57, 75, 89, 0.5);
background-image: none;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-file-upload-input::after:disabled.bp3-active,
.bp3-dark .bp3-file-upload-input::after.bp3-disabled.bp3-active {
background: rgba(57, 75, 89, 0.7);
}
.bp3-dark .bp3-file-upload-input::after .bp3-button-spinner .bp3-spinner-head {
background: rgba(16, 22, 26, 0.5);
stroke: #8a9ba8;
}
.bp3-dark .bp3-file-upload-input:hover::after {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #30404d;
}
.bp3-dark .bp3-file-upload-input:active::after {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #202b33;
background-image: none;
}
.bp3-file-upload-input::after {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
}
.bp3-form-group {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
margin: 0 0 15px;
}
.bp3-form-group label.bp3-label {
margin-bottom: 5px;
}
.bp3-form-group .bp3-control {
margin-top: 7px;
}
.bp3-form-group .bp3-form-helper-text {
margin-top: 5px;
color: #5c7080;
font-size: 12px;
}
.bp3-form-group.bp3-intent-primary .bp3-form-helper-text {
color: #106ba3;
}
.bp3-form-group.bp3-intent-success .bp3-form-helper-text {
color: #0d8050;
}
.bp3-form-group.bp3-intent-warning .bp3-form-helper-text {
color: #bf7326;
}
.bp3-form-group.bp3-intent-danger .bp3-form-helper-text {
color: #c23030;
}
.bp3-form-group.bp3-inline {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.bp3-form-group.bp3-inline.bp3-large label.bp3-label {
margin: 0 10px 0 0;
line-height: 40px;
}
.bp3-form-group.bp3-inline label.bp3-label {
margin: 0 10px 0 0;
line-height: 30px;
}
.bp3-form-group.bp3-disabled .bp3-label,
.bp3-form-group.bp3-disabled .bp3-text-muted,
.bp3-form-group.bp3-disabled .bp3-form-helper-text {
color: rgba(92, 112, 128, 0.6) !important;
}
.bp3-dark .bp3-form-group.bp3-intent-primary .bp3-form-helper-text {
color: #48aff0;
}
.bp3-dark .bp3-form-group.bp3-intent-success .bp3-form-helper-text {
color: #3dcc91;
}
.bp3-dark .bp3-form-group.bp3-intent-warning .bp3-form-helper-text {
color: #ffb366;
}
.bp3-dark .bp3-form-group.bp3-intent-danger .bp3-form-helper-text {
color: #ff7373;
}
.bp3-dark .bp3-form-group .bp3-form-helper-text {
color: #a7b6c2;
}
.bp3-dark .bp3-form-group.bp3-disabled .bp3-label,
.bp3-dark .bp3-form-group.bp3-disabled .bp3-text-muted,
.bp3-dark .bp3-form-group.bp3-disabled .bp3-form-helper-text {
color: rgba(167, 182, 194, 0.6) !important;
}
.bp3-input-group {
display: block;
position: relative;
}
.bp3-input-group .bp3-input {
position: relative;
width: 100%;
}
.bp3-input-group .bp3-input:not(:first-child) {
padding-left: 30px;
}
.bp3-input-group .bp3-input:not(:last-child) {
padding-right: 30px;
}
.bp3-input-group .bp3-input-action,
.bp3-input-group>.bp3-button,
.bp3-input-group>.bp3-icon {
position: absolute;
top: 0;
}
.bp3-input-group .bp3-input-action:first-child,
.bp3-input-group>.bp3-button:first-child,
.bp3-input-group>.bp3-icon:first-child {
left: 0;
}
.bp3-input-group .bp3-input-action:last-child,
.bp3-input-group>.bp3-button:last-child,
.bp3-input-group>.bp3-icon:last-child {
right: 0;
}
.bp3-input-group .bp3-button {
min-width: 24px;
min-height: 24px;
margin: 3px;
padding: 0 7px;
}
.bp3-input-group .bp3-button:empty {
padding: 0;
}
.bp3-input-group>.bp3-icon {
z-index: 1;
color: #5c7080;
}
.bp3-input-group>.bp3-icon:empty {
line-height: 1;
font-family: "Icons16", sans-serif;
font-size: 16px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
.bp3-input-group>.bp3-icon,
.bp3-input-group .bp3-input-action>.bp3-spinner {
margin: 7px;
}
.bp3-input-group .bp3-tag {
margin: 5px;
}
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:not(:hover):not(:focus),
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) {
color: #5c7080;
}
.bp3-dark .bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:not(:hover):not(:focus),
.bp3-dark .bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) {
color: #a7b6c2;
}
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon,
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard,
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large,
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon,
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard,
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large {
color: #5c7080;
}
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:disabled,
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:disabled {
color: rgba(92, 112, 128, 0.6) !important;
}
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:disabled .bp3-icon,
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:disabled .bp3-icon-standard,
.bp3-input-group .bp3-input:not(:focus)+.bp3-button.bp3-minimal:disabled .bp3-icon-large,
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon,
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-standard,
.bp3-input-group .bp3-input:not(:focus)+.bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-large {
color: rgba(92, 112, 128, 0.6) !important;
}
.bp3-input-group.bp3-disabled {
cursor: not-allowed;
}
.bp3-input-group.bp3-disabled .bp3-icon {
color: rgba(92, 112, 128, 0.6);
}
.bp3-input-group.bp3-large .bp3-button {
min-width: 30px;
min-height: 30px;
margin: 5px;
}
.bp3-input-group.bp3-large>.bp3-icon,
.bp3-input-group.bp3-large .bp3-input-action>.bp3-spinner {
margin: 12px;
}
.bp3-input-group.bp3-large .bp3-input {
height: 40px;
line-height: 40px;
font-size: 16px;
}
.bp3-input-group.bp3-large .bp3-input[type="search"],
.bp3-input-group.bp3-large .bp3-input.bp3-round {
padding: 0 15px;
}
.bp3-input-group.bp3-large .bp3-input:not(:first-child) {
padding-left: 40px;
}
.bp3-input-group.bp3-large .bp3-input:not(:last-child) {
padding-right: 40px;
}
.bp3-input-group.bp3-small .bp3-button {
min-width: 20px;
min-height: 20px;
margin: 2px;
}
.bp3-input-group.bp3-small .bp3-tag {
min-width: 20px;
min-height: 20px;
margin: 2px;
}
.bp3-input-group.bp3-small>.bp3-icon,
.bp3-input-group.bp3-small .bp3-input-action>.bp3-spinner {
margin: 4px;
}
.bp3-input-group.bp3-small .bp3-input {
height: 24px;
padding-right: 8px;
padding-left: 8px;
line-height: 24px;
font-size: 12px;
}
.bp3-input-group.bp3-small .bp3-input[type="search"],
.bp3-input-group.bp3-small .bp3-input.bp3-round {
padding: 0 12px;
}
.bp3-input-group.bp3-small .bp3-input:not(:first-child) {
padding-left: 24px;
}
.bp3-input-group.bp3-small .bp3-input:not(:last-child) {
padding-right: 24px;
}
.bp3-input-group.bp3-fill {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 100%;
}
.bp3-input-group.bp3-round .bp3-button,
.bp3-input-group.bp3-round .bp3-input,
.bp3-input-group.bp3-round .bp3-tag {
border-radius: 30px;
}
.bp3-dark .bp3-input-group .bp3-icon {
color: #a7b6c2;
}
.bp3-dark .bp3-input-group.bp3-disabled .bp3-icon {
color: rgba(167, 182, 194, 0.6);
}
.bp3-input-group.bp3-intent-primary .bp3-input {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-primary .bp3-input:focus {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-primary .bp3-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #137cbd;
box-shadow: inset 0 0 0 1px #137cbd;
}
.bp3-input-group.bp3-intent-primary .bp3-input:disabled,
.bp3-input-group.bp3-intent-primary .bp3-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input-group.bp3-intent-primary>.bp3-icon {
color: #106ba3;
}
.bp3-dark .bp3-input-group.bp3-intent-primary>.bp3-icon {
color: #48aff0;
}
.bp3-input-group.bp3-intent-success .bp3-input {
-webkit-box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-success .bp3-input:focus {
-webkit-box-shadow: 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-success .bp3-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #0f9960;
box-shadow: inset 0 0 0 1px #0f9960;
}
.bp3-input-group.bp3-intent-success .bp3-input:disabled,
.bp3-input-group.bp3-intent-success .bp3-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input-group.bp3-intent-success>.bp3-icon {
color: #0d8050;
}
.bp3-dark .bp3-input-group.bp3-intent-success>.bp3-icon {
color: #3dcc91;
}
.bp3-input-group.bp3-intent-warning .bp3-input {
-webkit-box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-warning .bp3-input:focus {
-webkit-box-shadow: 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-warning .bp3-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #d9822b;
box-shadow: inset 0 0 0 1px #d9822b;
}
.bp3-input-group.bp3-intent-warning .bp3-input:disabled,
.bp3-input-group.bp3-intent-warning .bp3-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input-group.bp3-intent-warning>.bp3-icon {
color: #bf7326;
}
.bp3-dark .bp3-input-group.bp3-intent-warning>.bp3-icon {
color: #ffb366;
}
.bp3-input-group.bp3-intent-danger .bp3-input {
-webkit-box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-danger .bp3-input:focus {
-webkit-box-shadow: 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input-group.bp3-intent-danger .bp3-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #db3737;
box-shadow: inset 0 0 0 1px #db3737;
}
.bp3-input-group.bp3-intent-danger .bp3-input:disabled,
.bp3-input-group.bp3-intent-danger .bp3-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input-group.bp3-intent-danger>.bp3-icon {
color: #c23030;
}
.bp3-dark .bp3-input-group.bp3-intent-danger>.bp3-icon {
color: #ff7373;
}
.bp3-input {
outline: none;
border: none;
border-radius: 3px;
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
background: #ffffff;
height: 30px;
padding: 0 10px;
vertical-align: middle;
line-height: 30px;
color: #182026;
font-size: 14px;
font-weight: 400;
-webkit-transition: -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.bp3-input::-webkit-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input::-moz-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input:-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input::-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input::placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input:focus,
.bp3-input.bp3-active {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input[type="search"],
.bp3-input.bp3-round {
border-radius: 30px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding-left: 10px;
}
.bp3-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.15);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.15);
}
.bp3-input:disabled,
.bp3-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(206, 217, 224, 0.5);
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
resize: none;
}
.bp3-input.bp3-large {
height: 40px;
line-height: 40px;
font-size: 16px;
}
.bp3-input.bp3-large[type="search"],
.bp3-input.bp3-large.bp3-round {
padding: 0 15px;
}
.bp3-input.bp3-small {
height: 24px;
padding-right: 8px;
padding-left: 8px;
line-height: 24px;
font-size: 12px;
}
.bp3-input.bp3-small[type="search"],
.bp3-input.bp3-small.bp3-round {
padding: 0 12px;
}
.bp3-input.bp3-fill {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 100%;
}
.bp3-dark .bp3-input {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
background: rgba(16, 22, 26, 0.3);
color: #f5f8fa;
}
.bp3-dark .bp3-input::-webkit-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-input::-moz-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-input:-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-input::-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-input::placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-input:focus {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input:disabled,
.bp3-dark .bp3-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(57, 75, 89, 0.5);
color: rgba(167, 182, 194, 0.6);
}
.bp3-input.bp3-intent-primary {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-primary:focus {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-primary[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #137cbd;
box-shadow: inset 0 0 0 1px #137cbd;
}
.bp3-input.bp3-intent-primary:disabled,
.bp3-input.bp3-intent-primary.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-dark .bp3-input.bp3-intent-primary {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-primary:focus {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-primary[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #137cbd;
box-shadow: inset 0 0 0 1px #137cbd;
}
.bp3-dark .bp3-input.bp3-intent-primary:disabled,
.bp3-dark .bp3-input.bp3-intent-primary.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input.bp3-intent-success {
-webkit-box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-success:focus {
-webkit-box-shadow: 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-success[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #0f9960;
box-shadow: inset 0 0 0 1px #0f9960;
}
.bp3-input.bp3-intent-success:disabled,
.bp3-input.bp3-intent-success.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-dark .bp3-input.bp3-intent-success {
-webkit-box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-success:focus {
-webkit-box-shadow: 0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-success[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #0f9960;
box-shadow: inset 0 0 0 1px #0f9960;
}
.bp3-dark .bp3-input.bp3-intent-success:disabled,
.bp3-dark .bp3-input.bp3-intent-success.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input.bp3-intent-warning {
-webkit-box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-warning:focus {
-webkit-box-shadow: 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-warning[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #d9822b;
box-shadow: inset 0 0 0 1px #d9822b;
}
.bp3-input.bp3-intent-warning:disabled,
.bp3-input.bp3-intent-warning.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-dark .bp3-input.bp3-intent-warning {
-webkit-box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-warning:focus {
-webkit-box-shadow: 0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-warning[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #d9822b;
box-shadow: inset 0 0 0 1px #d9822b;
}
.bp3-dark .bp3-input.bp3-intent-warning:disabled,
.bp3-dark .bp3-input.bp3-intent-warning.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input.bp3-intent-danger {
-webkit-box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-danger:focus {
-webkit-box-shadow: 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-input.bp3-intent-danger[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #db3737;
box-shadow: inset 0 0 0 1px #db3737;
}
.bp3-input.bp3-intent-danger:disabled,
.bp3-input.bp3-intent-danger.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-dark .bp3-input.bp3-intent-danger {
-webkit-box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-danger:focus {
-webkit-box-shadow: 0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-input.bp3-intent-danger[readonly] {
-webkit-box-shadow: inset 0 0 0 1px #db3737;
box-shadow: inset 0 0 0 1px #db3737;
}
.bp3-dark .bp3-input.bp3-intent-danger:disabled,
.bp3-dark .bp3-input.bp3-intent-danger.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-input::-ms-clear {
display: none;
}
textarea.bp3-input {
max-width: 100%;
padding: 10px;
}
textarea.bp3-input,
textarea.bp3-input.bp3-large,
textarea.bp3-input.bp3-small {
height: auto;
line-height: inherit;
}
textarea.bp3-input.bp3-small {
padding: 8px;
}
.bp3-dark textarea.bp3-input {
-webkit-box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
background: rgba(16, 22, 26, 0.3);
color: #f5f8fa;
}
.bp3-dark textarea.bp3-input::-webkit-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark textarea.bp3-input::-moz-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark textarea.bp3-input:-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark textarea.bp3-input::-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark textarea.bp3-input::placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark textarea.bp3-input:focus {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark textarea.bp3-input[readonly] {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark textarea.bp3-input:disabled,
.bp3-dark textarea.bp3-input.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(57, 75, 89, 0.5);
color: rgba(167, 182, 194, 0.6);
}
label.bp3-label {
display: block;
margin-top: 0;
margin-bottom: 15px;
}
label.bp3-label .bp3-html-select,
label.bp3-label .bp3-input,
label.bp3-label .bp3-select,
label.bp3-label .bp3-slider,
label.bp3-label .bp3-popover-wrapper {
display: block;
margin-top: 5px;
text-transform: none;
}
label.bp3-label .bp3-button-group {
margin-top: 5px;
}
label.bp3-label .bp3-select select,
label.bp3-label .bp3-html-select select {
width: 100%;
vertical-align: top;
font-weight: 400;
}
label.bp3-label.bp3-disabled,
label.bp3-label.bp3-disabled .bp3-text-muted {
color: rgba(92, 112, 128, 0.6);
}
label.bp3-label.bp3-inline {
line-height: 30px;
}
label.bp3-label.bp3-inline .bp3-html-select,
label.bp3-label.bp3-inline .bp3-input,
label.bp3-label.bp3-inline .bp3-input-group,
label.bp3-label.bp3-inline .bp3-select,
label.bp3-label.bp3-inline .bp3-popover-wrapper {
display: inline-block;
margin: 0 0 0 5px;
vertical-align: top;
}
label.bp3-label.bp3-inline .bp3-button-group {
margin: 0 0 0 5px;
}
label.bp3-label.bp3-inline .bp3-input-group .bp3-input {
margin-left: 0;
}
label.bp3-label.bp3-inline.bp3-large {
line-height: 40px;
}
label.bp3-label:not(.bp3-inline) .bp3-popover-target {
display: block;
}
.bp3-dark label.bp3-label {
color: #f5f8fa;
}
.bp3-dark label.bp3-label.bp3-disabled,
.bp3-dark label.bp3-label.bp3-disabled .bp3-text-muted {
color: rgba(167, 182, 194, 0.6);
}
.bp3-numeric-input .bp3-button-group.bp3-vertical>.bp3-button {
-webkit-box-flex: 1;
-ms-flex: 1 1 14px;
flex: 1 1 14px;
width: 30px;
min-height: 0;
padding: 0;
}
.bp3-numeric-input .bp3-button-group.bp3-vertical>.bp3-button:first-child {
border-radius: 0 3px 0 0;
}
.bp3-numeric-input .bp3-button-group.bp3-vertical>.bp3-button:last-child {
border-radius: 0 0 3px 0;
}
.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child>.bp3-button:first-child {
border-radius: 3px 0 0 0;
}
.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child>.bp3-button:last-child {
border-radius: 0 0 0 3px;
}
.bp3-numeric-input.bp3-large .bp3-button-group.bp3-vertical>.bp3-button {
width: 40px;
}
form {
display: block;
}
.bp3-html-select select,
.bp3-select select {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
border: none;
border-radius: 3px;
cursor: pointer;
padding: 5px 10px;
vertical-align: middle;
text-align: left;
font-size: 14px;
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-color: #f5f8fa;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0));
color: #182026;
border-radius: 3px;
width: 100%;
height: 30px;
padding: 0 25px 0 10px;
-moz-appearance: none;
-webkit-appearance: none;
}
.bp3-html-select select>*,
.bp3-select select>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-html-select select>.bp3-fill,
.bp3-select select>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-html-select select::before,
.bp3-select select::before,
.bp3-html-select select>*,
.bp3-select select>* {
margin-right: 7px;
}
.bp3-html-select select:empty::before,
.bp3-select select:empty::before,
.bp3-html-select select> :last-child,
.bp3-select select> :last-child {
margin-right: 0;
}
.bp3-html-select select:hover,
.bp3-select select:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-clip: padding-box;
background-color: #ebf1f5;
}
.bp3-html-select select:active,
.bp3-select select:active,
.bp3-html-select select.bp3-active,
.bp3-select select.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #d8e1e8;
background-image: none;
}
.bp3-html-select select:disabled,
.bp3-select select:disabled,
.bp3-html-select select.bp3-disabled,
.bp3-select select.bp3-disabled {
outline: none;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(206, 217, 224, 0.5);
background-image: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-html-select select:disabled.bp3-active,
.bp3-select select:disabled.bp3-active,
.bp3-html-select select:disabled.bp3-active:hover,
.bp3-select select:disabled.bp3-active:hover,
.bp3-html-select select.bp3-disabled.bp3-active,
.bp3-select select.bp3-disabled.bp3-active,
.bp3-html-select select.bp3-disabled.bp3-active:hover,
.bp3-select select.bp3-disabled.bp3-active:hover {
background: rgba(206, 217, 224, 0.7);
}
.bp3-html-select.bp3-minimal select,
.bp3-select.bp3-minimal select {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
}
.bp3-html-select.bp3-minimal select:hover,
.bp3-select.bp3-minimal select:hover {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(167, 182, 194, 0.3);
text-decoration: none;
color: #182026;
}
.bp3-html-select.bp3-minimal select:active,
.bp3-select.bp3-minimal select:active,
.bp3-html-select.bp3-minimal select.bp3-active,
.bp3-select.bp3-minimal select.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: rgba(115, 134, 148, 0.3);
color: #182026;
}
.bp3-html-select.bp3-minimal select:disabled,
.bp3-select.bp3-minimal select:disabled,
.bp3-html-select.bp3-minimal select:disabled:hover,
.bp3-select.bp3-minimal select:disabled:hover,
.bp3-html-select.bp3-minimal select.bp3-disabled,
.bp3-select.bp3-minimal select.bp3-disabled,
.bp3-html-select.bp3-minimal select.bp3-disabled:hover,
.bp3-select.bp3-minimal select.bp3-disabled:hover {
background: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-html-select.bp3-minimal select:disabled.bp3-active,
.bp3-select.bp3-minimal select:disabled.bp3-active,
.bp3-html-select.bp3-minimal select:disabled:hover.bp3-active,
.bp3-select.bp3-minimal select:disabled:hover.bp3-active,
.bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-disabled.bp3-active,
.bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active,
.bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active {
background: rgba(115, 134, 148, 0.3);
}
.bp3-dark .bp3-html-select.bp3-minimal select,
.bp3-html-select.bp3-minimal .bp3-dark select,
.bp3-dark .bp3-select.bp3-minimal select,
.bp3-select.bp3-minimal .bp3-dark select {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: inherit;
}
.bp3-dark .bp3-html-select.bp3-minimal select:hover,
.bp3-html-select.bp3-minimal .bp3-dark select:hover,
.bp3-dark .bp3-select.bp3-minimal select:hover,
.bp3-select.bp3-minimal .bp3-dark select:hover,
.bp3-dark .bp3-html-select.bp3-minimal select:active,
.bp3-html-select.bp3-minimal .bp3-dark select:active,
.bp3-dark .bp3-select.bp3-minimal select:active,
.bp3-select.bp3-minimal .bp3-dark select:active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
}
.bp3-dark .bp3-html-select.bp3-minimal select:hover,
.bp3-html-select.bp3-minimal .bp3-dark select:hover,
.bp3-dark .bp3-select.bp3-minimal select:hover,
.bp3-select.bp3-minimal .bp3-dark select:hover {
background: rgba(138, 155, 168, 0.15);
}
.bp3-dark .bp3-html-select.bp3-minimal select:active,
.bp3-html-select.bp3-minimal .bp3-dark select:active,
.bp3-dark .bp3-select.bp3-minimal select:active,
.bp3-select.bp3-minimal .bp3-dark select:active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-active {
background: rgba(138, 155, 168, 0.3);
color: #f5f8fa;
}
.bp3-dark .bp3-html-select.bp3-minimal select:disabled,
.bp3-html-select.bp3-minimal .bp3-dark select:disabled,
.bp3-dark .bp3-select.bp3-minimal select:disabled,
.bp3-select.bp3-minimal .bp3-dark select:disabled,
.bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover,
.bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover,
.bp3-dark .bp3-select.bp3-minimal select:disabled:hover,
.bp3-select.bp3-minimal .bp3-dark select:disabled:hover,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-disabled,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover,
.bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover,
.bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover {
background: none;
cursor: not-allowed;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-html-select.bp3-minimal select:disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select:disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select:disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select:disabled.bp3-active,
.bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select:disabled:hover.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active {
background: rgba(138, 155, 168, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-primary,
.bp3-select.bp3-minimal select.bp3-intent-primary {
color: #106ba3;
}
.bp3-html-select.bp3-minimal select.bp3-intent-primary:hover,
.bp3-select.bp3-minimal select.bp3-intent-primary:hover,
.bp3-html-select.bp3-minimal select.bp3-intent-primary:active,
.bp3-select.bp3-minimal select.bp3-intent-primary:active,
.bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #106ba3;
}
.bp3-html-select.bp3-minimal select.bp3-intent-primary:hover,
.bp3-select.bp3-minimal select.bp3-intent-primary:hover {
background: rgba(19, 124, 189, 0.15);
color: #106ba3;
}
.bp3-html-select.bp3-minimal select.bp3-intent-primary:active,
.bp3-select.bp3-minimal select.bp3-intent-primary:active,
.bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active {
background: rgba(19, 124, 189, 0.3);
color: #106ba3;
}
.bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled,
.bp3-select.bp3-minimal select.bp3-intent-primary:disabled,
.bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled,
.bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled {
background: none;
color: rgba(16, 107, 163, 0.5);
}
.bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active,
.bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active {
background: rgba(19, 124, 189, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head,
.bp3-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head {
stroke: #106ba3;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary {
color: #48aff0;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:hover,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover {
background: rgba(19, 124, 189, 0.2);
color: #48aff0;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active {
background: rgba(19, 124, 189, 0.3);
color: #48aff0;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled {
background: none;
color: rgba(72, 175, 240, 0.5);
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active {
background: rgba(19, 124, 189, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-success,
.bp3-select.bp3-minimal select.bp3-intent-success {
color: #0d8050;
}
.bp3-html-select.bp3-minimal select.bp3-intent-success:hover,
.bp3-select.bp3-minimal select.bp3-intent-success:hover,
.bp3-html-select.bp3-minimal select.bp3-intent-success:active,
.bp3-select.bp3-minimal select.bp3-intent-success:active,
.bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-success.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #0d8050;
}
.bp3-html-select.bp3-minimal select.bp3-intent-success:hover,
.bp3-select.bp3-minimal select.bp3-intent-success:hover {
background: rgba(15, 153, 96, 0.15);
color: #0d8050;
}
.bp3-html-select.bp3-minimal select.bp3-intent-success:active,
.bp3-select.bp3-minimal select.bp3-intent-success:active,
.bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-success.bp3-active {
background: rgba(15, 153, 96, 0.3);
color: #0d8050;
}
.bp3-html-select.bp3-minimal select.bp3-intent-success:disabled,
.bp3-select.bp3-minimal select.bp3-intent-success:disabled,
.bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled,
.bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled {
background: none;
color: rgba(13, 128, 80, 0.5);
}
.bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active,
.bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active {
background: rgba(15, 153, 96, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head,
.bp3-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head {
stroke: #0d8050;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success {
color: #3dcc91;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:hover,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:hover,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover {
background: rgba(15, 153, 96, 0.2);
color: #3dcc91;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active {
background: rgba(15, 153, 96, 0.3);
color: #3dcc91;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled {
background: none;
color: rgba(61, 204, 145, 0.5);
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active {
background: rgba(15, 153, 96, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-warning,
.bp3-select.bp3-minimal select.bp3-intent-warning {
color: #bf7326;
}
.bp3-html-select.bp3-minimal select.bp3-intent-warning:hover,
.bp3-select.bp3-minimal select.bp3-intent-warning:hover,
.bp3-html-select.bp3-minimal select.bp3-intent-warning:active,
.bp3-select.bp3-minimal select.bp3-intent-warning:active,
.bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #bf7326;
}
.bp3-html-select.bp3-minimal select.bp3-intent-warning:hover,
.bp3-select.bp3-minimal select.bp3-intent-warning:hover {
background: rgba(217, 130, 43, 0.15);
color: #bf7326;
}
.bp3-html-select.bp3-minimal select.bp3-intent-warning:active,
.bp3-select.bp3-minimal select.bp3-intent-warning:active,
.bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active {
background: rgba(217, 130, 43, 0.3);
color: #bf7326;
}
.bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled,
.bp3-select.bp3-minimal select.bp3-intent-warning:disabled,
.bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled,
.bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled {
background: none;
color: rgba(191, 115, 38, 0.5);
}
.bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active,
.bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active {
background: rgba(217, 130, 43, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head,
.bp3-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head {
stroke: #bf7326;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning {
color: #ffb366;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:hover,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover {
background: rgba(217, 130, 43, 0.2);
color: #ffb366;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active {
background: rgba(217, 130, 43, 0.3);
color: #ffb366;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled {
background: none;
color: rgba(255, 179, 102, 0.5);
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active {
background: rgba(217, 130, 43, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-danger,
.bp3-select.bp3-minimal select.bp3-intent-danger {
color: #c23030;
}
.bp3-html-select.bp3-minimal select.bp3-intent-danger:hover,
.bp3-select.bp3-minimal select.bp3-intent-danger:hover,
.bp3-html-select.bp3-minimal select.bp3-intent-danger:active,
.bp3-select.bp3-minimal select.bp3-intent-danger:active,
.bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active {
-webkit-box-shadow: none;
box-shadow: none;
background: none;
color: #c23030;
}
.bp3-html-select.bp3-minimal select.bp3-intent-danger:hover,
.bp3-select.bp3-minimal select.bp3-intent-danger:hover {
background: rgba(219, 55, 55, 0.15);
color: #c23030;
}
.bp3-html-select.bp3-minimal select.bp3-intent-danger:active,
.bp3-select.bp3-minimal select.bp3-intent-danger:active,
.bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active {
background: rgba(219, 55, 55, 0.3);
color: #c23030;
}
.bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled,
.bp3-select.bp3-minimal select.bp3-intent-danger:disabled,
.bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled,
.bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled {
background: none;
color: rgba(194, 48, 48, 0.5);
}
.bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active,
.bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active {
background: rgba(219, 55, 55, 0.3);
}
.bp3-html-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head,
.bp3-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head {
stroke: #c23030;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger {
color: #ff7373;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:hover,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover {
background: rgba(219, 55, 55, 0.2);
color: #ff7373;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active {
background: rgba(219, 55, 55, 0.3);
color: #ff7373;
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled {
background: none;
color: rgba(255, 115, 115, 0.5);
}
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active,
.bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active,
.bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active,
.bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active,
.bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active {
background: rgba(219, 55, 55, 0.3);
}
.bp3-html-select.bp3-large select,
.bp3-select.bp3-large select {
height: 40px;
padding-right: 35px;
font-size: 16px;
}
.bp3-dark .bp3-html-select select,
.bp3-dark .bp3-select select {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #394b59;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0));
color: #f5f8fa;
}
.bp3-dark .bp3-html-select select:hover,
.bp3-dark .bp3-select select:hover,
.bp3-dark .bp3-html-select select:active,
.bp3-dark .bp3-select select:active,
.bp3-dark .bp3-html-select select.bp3-active,
.bp3-dark .bp3-select select.bp3-active {
color: #f5f8fa;
}
.bp3-dark .bp3-html-select select:hover,
.bp3-dark .bp3-select select:hover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #30404d;
}
.bp3-dark .bp3-html-select select:active,
.bp3-dark .bp3-select select:active,
.bp3-dark .bp3-html-select select.bp3-active,
.bp3-dark .bp3-select select.bp3-active {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #202b33;
background-image: none;
}
.bp3-dark .bp3-html-select select:disabled,
.bp3-dark .bp3-select select:disabled,
.bp3-dark .bp3-html-select select.bp3-disabled,
.bp3-dark .bp3-select select.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(57, 75, 89, 0.5);
background-image: none;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-html-select select:disabled.bp3-active,
.bp3-dark .bp3-select select:disabled.bp3-active,
.bp3-dark .bp3-html-select select.bp3-disabled.bp3-active,
.bp3-dark .bp3-select select.bp3-disabled.bp3-active {
background: rgba(57, 75, 89, 0.7);
}
.bp3-dark .bp3-html-select select .bp3-button-spinner .bp3-spinner-head,
.bp3-dark .bp3-select select .bp3-button-spinner .bp3-spinner-head {
background: rgba(16, 22, 26, 0.5);
stroke: #8a9ba8;
}
.bp3-html-select select:disabled,
.bp3-select select:disabled {
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(206, 217, 224, 0.5);
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-html-select .bp3-icon,
.bp3-select .bp3-icon,
.bp3-select::after {
position: absolute;
top: 7px;
right: 7px;
color: #5c7080;
pointer-events: none;
}
.bp3-html-select .bp3-disabled.bp3-icon,
.bp3-select .bp3-disabled.bp3-icon,
.bp3-disabled.bp3-select::after {
color: rgba(92, 112, 128, 0.6);
}
.bp3-html-select,
.bp3-select {
display: inline-block;
position: relative;
vertical-align: middle;
letter-spacing: normal;
}
.bp3-html-select select::-ms-expand,
.bp3-select select::-ms-expand {
display: none;
}
.bp3-html-select .bp3-icon,
.bp3-select .bp3-icon {
color: #5c7080;
}
.bp3-html-select .bp3-icon:hover,
.bp3-select .bp3-icon:hover {
color: #182026;
}
.bp3-dark .bp3-html-select .bp3-icon,
.bp3-dark .bp3-select .bp3-icon {
color: #a7b6c2;
}
.bp3-dark .bp3-html-select .bp3-icon:hover,
.bp3-dark .bp3-select .bp3-icon:hover {
color: #f5f8fa;
}
.bp3-html-select.bp3-large::after,
.bp3-html-select.bp3-large .bp3-icon,
.bp3-select.bp3-large::after,
.bp3-select.bp3-large .bp3-icon {
top: 12px;
right: 12px;
}
.bp3-html-select.bp3-fill,
.bp3-html-select.bp3-fill select,
.bp3-select.bp3-fill,
.bp3-select.bp3-fill select {
width: 100%;
}
.bp3-dark .bp3-html-select option,
.bp3-dark .bp3-select option {
background-color: #30404d;
color: #f5f8fa;
}
.bp3-dark .bp3-html-select::after,
.bp3-dark .bp3-select::after {
color: #a7b6c2;
}
.bp3-select::after {
line-height: 1;
font-family: "Icons16", sans-serif;
font-size: 16px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
content: "";
}
.bp3-running-text table,
table.bp3-html-table {
border-spacing: 0;
font-size: 14px;
}
.bp3-running-text table th,
table.bp3-html-table th,
.bp3-running-text table td,
table.bp3-html-table td {
padding: 11px;
vertical-align: top;
text-align: left;
}
.bp3-running-text table th,
table.bp3-html-table th {
color: #182026;
font-weight: 600;
}
.bp3-running-text table td,
table.bp3-html-table td {
color: #182026;
}
.bp3-running-text table tbody tr:first-child th,
table.bp3-html-table tbody tr:first-child th,
.bp3-running-text table tbody tr:first-child td,
table.bp3-html-table tbody tr:first-child td {
-webkit-box-shadow: inset 0 1px 0 0 rgba(16, 22, 26, 0.15);
box-shadow: inset 0 1px 0 0 rgba(16, 22, 26, 0.15);
}
.bp3-dark .bp3-running-text table th,
.bp3-running-text .bp3-dark table th,
.bp3-dark table.bp3-html-table th {
color: #f5f8fa;
}
.bp3-dark .bp3-running-text table td,
.bp3-running-text .bp3-dark table td,
.bp3-dark table.bp3-html-table td {
color: #f5f8fa;
}
.bp3-dark .bp3-running-text table tbody tr:first-child th,
.bp3-running-text .bp3-dark table tbody tr:first-child th,
.bp3-dark table.bp3-html-table tbody tr:first-child th,
.bp3-dark .bp3-running-text table tbody tr:first-child td,
.bp3-running-text .bp3-dark table tbody tr:first-child td,
.bp3-dark table.bp3-html-table tbody tr:first-child td {
-webkit-box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.15);
box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.15);
}
table.bp3-html-table.bp3-html-table-condensed th,
table.bp3-html-table.bp3-html-table-condensed td,
table.bp3-html-table.bp3-small th,
table.bp3-html-table.bp3-small td {
padding-top: 6px;
padding-bottom: 6px;
}
table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td {
background: rgba(191, 204, 214, 0.15);
}
table.bp3-html-table.bp3-html-table-bordered th:not(:first-child) {
-webkit-box-shadow: inset 1px 0 0 0 rgba(16, 22, 26, 0.15);
box-shadow: inset 1px 0 0 0 rgba(16, 22, 26, 0.15);
}
table.bp3-html-table.bp3-html-table-bordered tbody tr td {
-webkit-box-shadow: inset 0 1px 0 0 rgba(16, 22, 26, 0.15);
box-shadow: inset 0 1px 0 0 rgba(16, 22, 26, 0.15);
}
table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child) {
-webkit-box-shadow: inset 1px 1px 0 0 rgba(16, 22, 26, 0.15);
box-shadow: inset 1px 1px 0 0 rgba(16, 22, 26, 0.15);
}
table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td {
-webkit-box-shadow: none;
box-shadow: none;
}
table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:not(:first-child) {
-webkit-box-shadow: inset 1px 0 0 0 rgba(16, 22, 26, 0.15);
box-shadow: inset 1px 0 0 0 rgba(16, 22, 26, 0.15);
}
table.bp3-html-table.bp3-interactive tbody tr:hover td {
background-color: rgba(191, 204, 214, 0.3);
cursor: pointer;
}
table.bp3-html-table.bp3-interactive tbody tr:active td {
background-color: rgba(191, 204, 214, 0.4);
}
.bp3-dark table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td {
background: rgba(92, 112, 128, 0.15);
}
.bp3-dark table.bp3-html-table.bp3-html-table-bordered th:not(:first-child) {
-webkit-box-shadow: inset 1px 0 0 0 rgba(255, 255, 255, 0.15);
box-shadow: inset 1px 0 0 0 rgba(255, 255, 255, 0.15);
}
.bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td {
-webkit-box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.15);
box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.15);
}
.bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child) {
-webkit-box-shadow: inset 1px 1px 0 0 rgba(255, 255, 255, 0.15);
box-shadow: inset 1px 1px 0 0 rgba(255, 255, 255, 0.15);
}
.bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td {
-webkit-box-shadow: inset 1px 0 0 0 rgba(255, 255, 255, 0.15);
box-shadow: inset 1px 0 0 0 rgba(255, 255, 255, 0.15);
}
.bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:first-child {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-dark table.bp3-html-table.bp3-interactive tbody tr:hover td {
background-color: rgba(92, 112, 128, 0.3);
cursor: pointer;
}
.bp3-dark table.bp3-html-table.bp3-interactive tbody tr:active td {
background-color: rgba(92, 112, 128, 0.4);
}
.bp3-key-combo {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bp3-key-combo>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-key-combo>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-key-combo::before,
.bp3-key-combo>* {
margin-right: 5px;
}
.bp3-key-combo:empty::before,
.bp3-key-combo> :last-child {
margin-right: 0;
}
.bp3-hotkey-dialog {
top: 40px;
padding-bottom: 0;
}
.bp3-hotkey-dialog .bp3-dialog-body {
margin: 0;
padding: 0;
}
.bp3-hotkey-dialog .bp3-hotkey-label {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
}
.bp3-hotkey-column {
margin: auto;
max-height: 80vh;
overflow-y: auto;
padding: 30px;
}
.bp3-hotkey-column .bp3-heading {
margin-bottom: 20px;
}
.bp3-hotkey-column .bp3-heading:not(:first-child) {
margin-top: 40px;
}
.bp3-hotkey {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
margin-right: 0;
margin-left: 0;
}
.bp3-hotkey:not(:last-child) {
margin-bottom: 10px;
}
.bp3-icon {
display: inline-block;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
vertical-align: text-bottom;
}
.bp3-icon:not(:empty)::before {
content: "" !important;
content: unset !important;
}
.bp3-icon>svg {
display: block;
}
.bp3-icon>svg:not([fill]) {
fill: currentColor;
}
.bp3-icon.bp3-intent-primary,
.bp3-icon-standard.bp3-intent-primary,
.bp3-icon-large.bp3-intent-primary {
color: #106ba3;
}
.bp3-dark .bp3-icon.bp3-intent-primary,
.bp3-dark .bp3-icon-standard.bp3-intent-primary,
.bp3-dark .bp3-icon-large.bp3-intent-primary {
color: #48aff0;
}
.bp3-icon.bp3-intent-success,
.bp3-icon-standard.bp3-intent-success,
.bp3-icon-large.bp3-intent-success {
color: #0d8050;
}
.bp3-dark .bp3-icon.bp3-intent-success,
.bp3-dark .bp3-icon-standard.bp3-intent-success,
.bp3-dark .bp3-icon-large.bp3-intent-success {
color: #3dcc91;
}
.bp3-icon.bp3-intent-warning,
.bp3-icon-standard.bp3-intent-warning,
.bp3-icon-large.bp3-intent-warning {
color: #bf7326;
}
.bp3-dark .bp3-icon.bp3-intent-warning,
.bp3-dark .bp3-icon-standard.bp3-intent-warning,
.bp3-dark .bp3-icon-large.bp3-intent-warning {
color: #ffb366;
}
.bp3-icon.bp3-intent-danger,
.bp3-icon-standard.bp3-intent-danger,
.bp3-icon-large.bp3-intent-danger {
color: #c23030;
}
.bp3-dark .bp3-icon.bp3-intent-danger,
.bp3-dark .bp3-icon-standard.bp3-intent-danger,
.bp3-dark .bp3-icon-large.bp3-intent-danger {
color: #ff7373;
}
span.bp3-icon-standard {
line-height: 1;
font-family: "Icons16", sans-serif;
font-size: 16px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
}
span.bp3-icon-large {
line-height: 1;
font-family: "Icons20", sans-serif;
font-size: 20px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
}
span.bp3-icon:empty {
line-height: 1;
font-family: "Icons20";
font-size: inherit;
font-weight: 400;
font-style: normal;
}
span.bp3-icon:empty::before {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
.bp3-icon-add::before {
content: "";
}
.bp3-icon-add-column-left::before {
content: "";
}
.bp3-icon-add-column-right::before {
content: "";
}
.bp3-icon-add-row-bottom::before {
content: "";
}
.bp3-icon-add-row-top::before {
content: "";
}
.bp3-icon-add-to-artifact::before {
content: "";
}
.bp3-icon-add-to-folder::before {
content: "";
}
.bp3-icon-airplane::before {
content: "";
}
.bp3-icon-align-center::before {
content: "";
}
.bp3-icon-align-justify::before {
content: "";
}
.bp3-icon-align-left::before {
content: "";
}
.bp3-icon-align-right::before {
content: "";
}
.bp3-icon-alignment-bottom::before {
content: "";
}
.bp3-icon-alignment-horizontal-center::before {
content: "";
}
.bp3-icon-alignment-left::before {
content: "";
}
.bp3-icon-alignment-right::before {
content: "";
}
.bp3-icon-alignment-top::before {
content: "";
}
.bp3-icon-alignment-vertical-center::before {
content: "";
}
.bp3-icon-annotation::before {
content: "";
}
.bp3-icon-application::before {
content: "";
}
.bp3-icon-applications::before {
content: "";
}
.bp3-icon-archive::before {
content: "";
}
.bp3-icon-arrow-bottom-left::before {
content: "↙";
}
.bp3-icon-arrow-bottom-right::before {
content: "↘";
}
.bp3-icon-arrow-down::before {
content: "↓";
}
.bp3-icon-arrow-left::before {
content: "←";
}
.bp3-icon-arrow-right::before {
content: "→";
}
.bp3-icon-arrow-top-left::before {
content: "↖";
}
.bp3-icon-arrow-top-right::before {
content: "↗";
}
.bp3-icon-arrow-up::before {
content: "↑";
}
.bp3-icon-arrows-horizontal::before {
content: "↔";
}
.bp3-icon-arrows-vertical::before {
content: "↕";
}
.bp3-icon-asterisk::before {
content: "*";
}
.bp3-icon-automatic-updates::before {
content: "";
}
.bp3-icon-badge::before {
content: "";
}
.bp3-icon-ban-circle::before {
content: "";
}
.bp3-icon-bank-account::before {
content: "";
}
.bp3-icon-barcode::before {
content: "";
}
.bp3-icon-blank::before {
content: "";
}
.bp3-icon-blocked-person::before {
content: "";
}
.bp3-icon-bold::before {
content: "";
}
.bp3-icon-book::before {
content: "";
}
.bp3-icon-bookmark::before {
content: "";
}
.bp3-icon-box::before {
content: "";
}
.bp3-icon-briefcase::before {
content: "";
}
.bp3-icon-bring-data::before {
content: "";
}
.bp3-icon-build::before {
content: "";
}
.bp3-icon-calculator::before {
content: "";
}
.bp3-icon-calendar::before {
content: "";
}
.bp3-icon-camera::before {
content: "";
}
.bp3-icon-caret-down::before {
content: "⌄";
}
.bp3-icon-caret-left::before {
content: "〈";
}
.bp3-icon-caret-right::before {
content: "〉";
}
.bp3-icon-caret-up::before {
content: "⌃";
}
.bp3-icon-cell-tower::before {
content: "";
}
.bp3-icon-changes::before {
content: "";
}
.bp3-icon-chart::before {
content: "";
}
.bp3-icon-chat::before {
content: "";
}
.bp3-icon-chevron-backward::before {
content: "";
}
.bp3-icon-chevron-down::before {
content: "";
}
.bp3-icon-chevron-forward::before {
content: "";
}
.bp3-icon-chevron-left::before {
content: "";
}
.bp3-icon-chevron-right::before {
content: "";
}
.bp3-icon-chevron-up::before {
content: "";
}
.bp3-icon-circle::before {
content: "";
}
.bp3-icon-circle-arrow-down::before {
content: "";
}
.bp3-icon-circle-arrow-left::before {
content: "";
}
.bp3-icon-circle-arrow-right::before {
content: "";
}
.bp3-icon-circle-arrow-up::before {
content: "";
}
.bp3-icon-citation::before {
content: "";
}
.bp3-icon-clean::before {
content: "";
}
.bp3-icon-clipboard::before {
content: "";
}
.bp3-icon-cloud::before {
content: "☁";
}
.bp3-icon-cloud-download::before {
content: "";
}
.bp3-icon-cloud-upload::before {
content: "";
}
.bp3-icon-code::before {
content: "";
}
.bp3-icon-code-block::before {
content: "";
}
.bp3-icon-cog::before {
content: "";
}
.bp3-icon-collapse-all::before {
content: "";
}
.bp3-icon-column-layout::before {
content: "";
}
.bp3-icon-comment::before {
content: "";
}
.bp3-icon-comparison::before {
content: "";
}
.bp3-icon-compass::before {
content: "";
}
.bp3-icon-compressed::before {
content: "";
}
.bp3-icon-confirm::before {
content: "";
}
.bp3-icon-console::before {
content: "";
}
.bp3-icon-contrast::before {
content: "";
}
.bp3-icon-control::before {
content: "";
}
.bp3-icon-credit-card::before {
content: "";
}
.bp3-icon-cross::before {
content: "✗";
}
.bp3-icon-crown::before {
content: "";
}
.bp3-icon-cube::before {
content: "";
}
.bp3-icon-cube-add::before {
content: "";
}
.bp3-icon-cube-remove::before {
content: "";
}
.bp3-icon-curved-range-chart::before {
content: "";
}
.bp3-icon-cut::before {
content: "";
}
.bp3-icon-dashboard::before {
content: "";
}
.bp3-icon-data-lineage::before {
content: "";
}
.bp3-icon-database::before {
content: "";
}
.bp3-icon-delete::before {
content: "";
}
.bp3-icon-delta::before {
content: "Δ";
}
.bp3-icon-derive-column::before {
content: "";
}
.bp3-icon-desktop::before {
content: "";
}
.bp3-icon-diagram-tree::before {
content: "";
}
.bp3-icon-direction-left::before {
content: "";
}
.bp3-icon-direction-right::before {
content: "";
}
.bp3-icon-disable::before {
content: "";
}
.bp3-icon-document::before {
content: "";
}
.bp3-icon-document-open::before {
content: "";
}
.bp3-icon-document-share::before {
content: "";
}
.bp3-icon-dollar::before {
content: "$";
}
.bp3-icon-dot::before {
content: "•";
}
.bp3-icon-double-caret-horizontal::before {
content: "";
}
.bp3-icon-double-caret-vertical::before {
content: "";
}
.bp3-icon-double-chevron-down::before {
content: "";
}
.bp3-icon-double-chevron-left::before {
content: "";
}
.bp3-icon-double-chevron-right::before {
content: "";
}
.bp3-icon-double-chevron-up::before {
content: "";
}
.bp3-icon-doughnut-chart::before {
content: "";
}
.bp3-icon-download::before {
content: "";
}
.bp3-icon-drag-handle-horizontal::before {
content: "";
}
.bp3-icon-drag-handle-vertical::before {
content: "";
}
.bp3-icon-draw::before {
content: "";
}
.bp3-icon-drive-time::before {
content: "";
}
.bp3-icon-duplicate::before {
content: "";
}
.bp3-icon-edit::before {
content: "✎";
}
.bp3-icon-eject::before {
content: "⏏";
}
.bp3-icon-endorsed::before {
content: "";
}
.bp3-icon-envelope::before {
content: "✉";
}
.bp3-icon-equals::before {
content: "";
}
.bp3-icon-eraser::before {
content: "";
}
.bp3-icon-error::before {
content: "";
}
.bp3-icon-euro::before {
content: "€";
}
.bp3-icon-exchange::before {
content: "";
}
.bp3-icon-exclude-row::before {
content: "";
}
.bp3-icon-expand-all::before {
content: "";
}
.bp3-icon-export::before {
content: "";
}
.bp3-icon-eye-off::before {
content: "";
}
.bp3-icon-eye-on::before {
content: "";
}
.bp3-icon-eye-open::before {
content: "";
}
.bp3-icon-fast-backward::before {
content: "";
}
.bp3-icon-fast-forward::before {
content: "";
}
.bp3-icon-feed::before {
content: "";
}
.bp3-icon-feed-subscribed::before {
content: "";
}
.bp3-icon-film::before {
content: "";
}
.bp3-icon-filter::before {
content: "";
}
.bp3-icon-filter-keep::before {
content: "";
}
.bp3-icon-filter-list::before {
content: "";
}
.bp3-icon-filter-open::before {
content: "";
}
.bp3-icon-filter-remove::before {
content: "";
}
.bp3-icon-flag::before {
content: "⚑";
}
.bp3-icon-flame::before {
content: "";
}
.bp3-icon-flash::before {
content: "";
}
.bp3-icon-floppy-disk::before {
content: "";
}
.bp3-icon-flow-branch::before {
content: "";
}
.bp3-icon-flow-end::before {
content: "";
}
.bp3-icon-flow-linear::before {
content: "";
}
.bp3-icon-flow-review::before {
content: "";
}
.bp3-icon-flow-review-branch::before {
content: "";
}
.bp3-icon-flows::before {
content: "";
}
.bp3-icon-folder-close::before {
content: "";
}
.bp3-icon-folder-new::before {
content: "";
}
.bp3-icon-folder-open::before {
content: "";
}
.bp3-icon-folder-shared::before {
content: "";
}
.bp3-icon-folder-shared-open::before {
content: "";
}
.bp3-icon-follower::before {
content: "";
}
.bp3-icon-following::before {
content: "";
}
.bp3-icon-font::before {
content: "";
}
.bp3-icon-fork::before {
content: "";
}
.bp3-icon-form::before {
content: "";
}
.bp3-icon-full-circle::before {
content: "";
}
.bp3-icon-full-stacked-chart::before {
content: "";
}
.bp3-icon-fullscreen::before {
content: "";
}
.bp3-icon-function::before {
content: "";
}
.bp3-icon-gantt-chart::before {
content: "";
}
.bp3-icon-geolocation::before {
content: "";
}
.bp3-icon-geosearch::before {
content: "";
}
.bp3-icon-git-branch::before {
content: "";
}
.bp3-icon-git-commit::before {
content: "";
}
.bp3-icon-git-merge::before {
content: "";
}
.bp3-icon-git-new-branch::before {
content: "";
}
.bp3-icon-git-pull::before {
content: "";
}
.bp3-icon-git-push::before {
content: "";
}
.bp3-icon-git-repo::before {
content: "";
}
.bp3-icon-glass::before {
content: "";
}
.bp3-icon-globe::before {
content: "";
}
.bp3-icon-globe-network::before {
content: "";
}
.bp3-icon-graph::before {
content: "";
}
.bp3-icon-graph-remove::before {
content: "";
}
.bp3-icon-greater-than::before {
content: "";
}
.bp3-icon-greater-than-or-equal-to::before {
content: "";
}
.bp3-icon-grid::before {
content: "";
}
.bp3-icon-grid-view::before {
content: "";
}
.bp3-icon-group-objects::before {
content: "";
}
.bp3-icon-grouped-bar-chart::before {
content: "";
}
.bp3-icon-hand::before {
content: "";
}
.bp3-icon-hand-down::before {
content: "";
}
.bp3-icon-hand-left::before {
content: "";
}
.bp3-icon-hand-right::before {
content: "";
}
.bp3-icon-hand-up::before {
content: "";
}
.bp3-icon-header::before {
content: "";
}
.bp3-icon-header-one::before {
content: "";
}
.bp3-icon-header-two::before {
content: "";
}
.bp3-icon-headset::before {
content: "";
}
.bp3-icon-heart::before {
content: "♥";
}
.bp3-icon-heart-broken::before {
content: "";
}
.bp3-icon-heat-grid::before {
content: "";
}
.bp3-icon-heatmap::before {
content: "";
}
.bp3-icon-help::before {
content: "?";
}
.bp3-icon-helper-management::before {
content: "";
}
.bp3-icon-highlight::before {
content: "";
}
.bp3-icon-history::before {
content: "";
}
.bp3-icon-home::before {
content: "⌂";
}
.bp3-icon-horizontal-bar-chart::before {
content: "";
}
.bp3-icon-horizontal-bar-chart-asc::before {
content: "";
}
.bp3-icon-horizontal-bar-chart-desc::before {
content: "";
}
.bp3-icon-horizontal-distribution::before {
content: "";
}
.bp3-icon-id-number::before {
content: "";
}
.bp3-icon-image-rotate-left::before {
content: "";
}
.bp3-icon-image-rotate-right::before {
content: "";
}
.bp3-icon-import::before {
content: "";
}
.bp3-icon-inbox::before {
content: "";
}
.bp3-icon-inbox-filtered::before {
content: "";
}
.bp3-icon-inbox-geo::before {
content: "";
}
.bp3-icon-inbox-search::before {
content: "";
}
.bp3-icon-inbox-update::before {
content: "";
}
.bp3-icon-info-sign::before {
content: "ℹ";
}
.bp3-icon-inheritance::before {
content: "";
}
.bp3-icon-inner-join::before {
content: "";
}
.bp3-icon-insert::before {
content: "";
}
.bp3-icon-intersection::before {
content: "";
}
.bp3-icon-ip-address::before {
content: "";
}
.bp3-icon-issue::before {
content: "";
}
.bp3-icon-issue-closed::before {
content: "";
}
.bp3-icon-issue-new::before {
content: "";
}
.bp3-icon-italic::before {
content: "";
}
.bp3-icon-join-table::before {
content: "";
}
.bp3-icon-key::before {
content: "";
}
.bp3-icon-key-backspace::before {
content: "";
}
.bp3-icon-key-command::before {
content: "";
}
.bp3-icon-key-control::before {
content: "";
}
.bp3-icon-key-delete::before {
content: "";
}
.bp3-icon-key-enter::before {
content: "";
}
.bp3-icon-key-escape::before {
content: "";
}
.bp3-icon-key-option::before {
content: "";
}
.bp3-icon-key-shift::before {
content: "";
}
.bp3-icon-key-tab::before {
content: "";
}
.bp3-icon-known-vehicle::before {
content: "";
}
.bp3-icon-label::before {
content: "";
}
.bp3-icon-layer::before {
content: "";
}
.bp3-icon-layers::before {
content: "";
}
.bp3-icon-layout::before {
content: "";
}
.bp3-icon-layout-auto::before {
content: "";
}
.bp3-icon-layout-balloon::before {
content: "";
}
.bp3-icon-layout-circle::before {
content: "";
}
.bp3-icon-layout-grid::before {
content: "";
}
.bp3-icon-layout-group-by::before {
content: "";
}
.bp3-icon-layout-hierarchy::before {
content: "";
}
.bp3-icon-layout-linear::before {
content: "";
}
.bp3-icon-layout-skew-grid::before {
content: "";
}
.bp3-icon-layout-sorted-clusters::before {
content: "";
}
.bp3-icon-learning::before {
content: "";
}
.bp3-icon-left-join::before {
content: "";
}
.bp3-icon-less-than::before {
content: "";
}
.bp3-icon-less-than-or-equal-to::before {
content: "";
}
.bp3-icon-lifesaver::before {
content: "";
}
.bp3-icon-lightbulb::before {
content: "";
}
.bp3-icon-link::before {
content: "";
}
.bp3-icon-list::before {
content: "☰";
}
.bp3-icon-list-columns::before {
content: "";
}
.bp3-icon-list-detail-view::before {
content: "";
}
.bp3-icon-locate::before {
content: "";
}
.bp3-icon-lock::before {
content: "";
}
.bp3-icon-log-in::before {
content: "";
}
.bp3-icon-log-out::before {
content: "";
}
.bp3-icon-manual::before {
content: "";
}
.bp3-icon-manually-entered-data::before {
content: "";
}
.bp3-icon-map::before {
content: "";
}
.bp3-icon-map-create::before {
content: "";
}
.bp3-icon-map-marker::before {
content: "";
}
.bp3-icon-maximize::before {
content: "";
}
.bp3-icon-media::before {
content: "";
}
.bp3-icon-menu::before {
content: "";
}
.bp3-icon-menu-closed::before {
content: "";
}
.bp3-icon-menu-open::before {
content: "";
}
.bp3-icon-merge-columns::before {
content: "";
}
.bp3-icon-merge-links::before {
content: "";
}
.bp3-icon-minimize::before {
content: "";
}
.bp3-icon-minus::before {
content: "−";
}
.bp3-icon-mobile-phone::before {
content: "";
}
.bp3-icon-mobile-video::before {
content: "";
}
.bp3-icon-moon::before {
content: "";
}
.bp3-icon-more::before {
content: "";
}
.bp3-icon-mountain::before {
content: "";
}
.bp3-icon-move::before {
content: "";
}
.bp3-icon-mugshot::before {
content: "";
}
.bp3-icon-multi-select::before {
content: "";
}
.bp3-icon-music::before {
content: "";
}
.bp3-icon-new-drawing::before {
content: "";
}
.bp3-icon-new-grid-item::before {
content: "";
}
.bp3-icon-new-layer::before {
content: "";
}
.bp3-icon-new-layers::before {
content: "";
}
.bp3-icon-new-link::before {
content: "";
}
.bp3-icon-new-object::before {
content: "";
}
.bp3-icon-new-person::before {
content: "";
}
.bp3-icon-new-prescription::before {
content: "";
}
.bp3-icon-new-text-box::before {
content: "";
}
.bp3-icon-ninja::before {
content: "";
}
.bp3-icon-not-equal-to::before {
content: "";
}
.bp3-icon-notifications::before {
content: "";
}
.bp3-icon-notifications-updated::before {
content: "";
}
.bp3-icon-numbered-list::before {
content: "";
}
.bp3-icon-numerical::before {
content: "";
}
.bp3-icon-office::before {
content: "";
}
.bp3-icon-offline::before {
content: "";
}
.bp3-icon-oil-field::before {
content: "";
}
.bp3-icon-one-column::before {
content: "";
}
.bp3-icon-outdated::before {
content: "";
}
.bp3-icon-page-layout::before {
content: "";
}
.bp3-icon-panel-stats::before {
content: "";
}
.bp3-icon-panel-table::before {
content: "";
}
.bp3-icon-paperclip::before {
content: "";
}
.bp3-icon-paragraph::before {
content: "";
}
.bp3-icon-path::before {
content: "";
}
.bp3-icon-path-search::before {
content: "";
}
.bp3-icon-pause::before {
content: "";
}
.bp3-icon-people::before {
content: "";
}
.bp3-icon-percentage::before {
content: "";
}
.bp3-icon-person::before {
content: "";
}
.bp3-icon-phone::before {
content: "☎";
}
.bp3-icon-pie-chart::before {
content: "";
}
.bp3-icon-pin::before {
content: "";
}
.bp3-icon-pivot::before {
content: "";
}
.bp3-icon-pivot-table::before {
content: "";
}
.bp3-icon-play::before {
content: "";
}
.bp3-icon-plus::before {
content: "+";
}
.bp3-icon-polygon-filter::before {
content: "";
}
.bp3-icon-power::before {
content: "";
}
.bp3-icon-predictive-analysis::before {
content: "";
}
.bp3-icon-prescription::before {
content: "";
}
.bp3-icon-presentation::before {
content: "";
}
.bp3-icon-print::before {
content: "⎙";
}
.bp3-icon-projects::before {
content: "";
}
.bp3-icon-properties::before {
content: "";
}
.bp3-icon-property::before {
content: "";
}
.bp3-icon-publish-function::before {
content: "";
}
.bp3-icon-pulse::before {
content: "";
}
.bp3-icon-random::before {
content: "";
}
.bp3-icon-record::before {
content: "";
}
.bp3-icon-redo::before {
content: "";
}
.bp3-icon-refresh::before {
content: "";
}
.bp3-icon-regression-chart::before {
content: "";
}
.bp3-icon-remove::before {
content: "";
}
.bp3-icon-remove-column::before {
content: "";
}
.bp3-icon-remove-column-left::before {
content: "";
}
.bp3-icon-remove-column-right::before {
content: "";
}
.bp3-icon-remove-row-bottom::before {
content: "";
}
.bp3-icon-remove-row-top::before {
content: "";
}
.bp3-icon-repeat::before {
content: "";
}
.bp3-icon-reset::before {
content: "";
}
.bp3-icon-resolve::before {
content: "";
}
.bp3-icon-rig::before {
content: "";
}
.bp3-icon-right-join::before {
content: "";
}
.bp3-icon-ring::before {
content: "";
}
.bp3-icon-rotate-document::before {
content: "";
}
.bp3-icon-rotate-page::before {
content: "";
}
.bp3-icon-satellite::before {
content: "";
}
.bp3-icon-saved::before {
content: "";
}
.bp3-icon-scatter-plot::before {
content: "";
}
.bp3-icon-search::before {
content: "";
}
.bp3-icon-search-around::before {
content: "";
}
.bp3-icon-search-template::before {
content: "";
}
.bp3-icon-search-text::before {
content: "";
}
.bp3-icon-segmented-control::before {
content: "";
}
.bp3-icon-select::before {
content: "";
}
.bp3-icon-selection::before {
content: "⦿";
}
.bp3-icon-send-to::before {
content: "";
}
.bp3-icon-send-to-graph::before {
content: "";
}
.bp3-icon-send-to-map::before {
content: "";
}
.bp3-icon-series-add::before {
content: "";
}
.bp3-icon-series-configuration::before {
content: "";
}
.bp3-icon-series-derived::before {
content: "";
}
.bp3-icon-series-filtered::before {
content: "";
}
.bp3-icon-series-search::before {
content: "";
}
.bp3-icon-settings::before {
content: "";
}
.bp3-icon-share::before {
content: "";
}
.bp3-icon-shield::before {
content: "";
}
.bp3-icon-shop::before {
content: "";
}
.bp3-icon-shopping-cart::before {
content: "";
}
.bp3-icon-signal-search::before {
content: "";
}
.bp3-icon-sim-card::before {
content: "";
}
.bp3-icon-slash::before {
content: "";
}
.bp3-icon-small-cross::before {
content: "";
}
.bp3-icon-small-minus::before {
content: "";
}
.bp3-icon-small-plus::before {
content: "";
}
.bp3-icon-small-tick::before {
content: "";
}
.bp3-icon-snowflake::before {
content: "";
}
.bp3-icon-social-media::before {
content: "";
}
.bp3-icon-sort::before {
content: "";
}
.bp3-icon-sort-alphabetical::before {
content: "";
}
.bp3-icon-sort-alphabetical-desc::before {
content: "";
}
.bp3-icon-sort-asc::before {
content: "";
}
.bp3-icon-sort-desc::before {
content: "";
}
.bp3-icon-sort-numerical::before {
content: "";
}
.bp3-icon-sort-numerical-desc::before {
content: "";
}
.bp3-icon-split-columns::before {
content: "";
}
.bp3-icon-square::before {
content: "";
}
.bp3-icon-stacked-chart::before {
content: "";
}
.bp3-icon-star::before {
content: "★";
}
.bp3-icon-star-empty::before {
content: "☆";
}
.bp3-icon-step-backward::before {
content: "";
}
.bp3-icon-step-chart::before {
content: "";
}
.bp3-icon-step-forward::before {
content: "";
}
.bp3-icon-stop::before {
content: "";
}
.bp3-icon-stopwatch::before {
content: "";
}
.bp3-icon-strikethrough::before {
content: "";
}
.bp3-icon-style::before {
content: "";
}
.bp3-icon-swap-horizontal::before {
content: "";
}
.bp3-icon-swap-vertical::before {
content: "";
}
.bp3-icon-symbol-circle::before {
content: "";
}
.bp3-icon-symbol-cross::before {
content: "";
}
.bp3-icon-symbol-diamond::before {
content: "";
}
.bp3-icon-symbol-square::before {
content: "";
}
.bp3-icon-symbol-triangle-down::before {
content: "";
}
.bp3-icon-symbol-triangle-up::before {
content: "";
}
.bp3-icon-tag::before {
content: "";
}
.bp3-icon-take-action::before {
content: "";
}
.bp3-icon-taxi::before {
content: "";
}
.bp3-icon-text-highlight::before {
content: "";
}
.bp3-icon-th::before {
content: "";
}
.bp3-icon-th-derived::before {
content: "";
}
.bp3-icon-th-disconnect::before {
content: "";
}
.bp3-icon-th-filtered::before {
content: "";
}
.bp3-icon-th-list::before {
content: "";
}
.bp3-icon-thumbs-down::before {
content: "";
}
.bp3-icon-thumbs-up::before {
content: "";
}
.bp3-icon-tick::before {
content: "✓";
}
.bp3-icon-tick-circle::before {
content: "";
}
.bp3-icon-time::before {
content: "⏲";
}
.bp3-icon-timeline-area-chart::before {
content: "";
}
.bp3-icon-timeline-bar-chart::before {
content: "";
}
.bp3-icon-timeline-events::before {
content: "";
}
.bp3-icon-timeline-line-chart::before {
content: "";
}
.bp3-icon-tint::before {
content: "";
}
.bp3-icon-torch::before {
content: "";
}
.bp3-icon-tractor::before {
content: "";
}
.bp3-icon-train::before {
content: "";
}
.bp3-icon-translate::before {
content: "";
}
.bp3-icon-trash::before {
content: "";
}
.bp3-icon-tree::before {
content: "";
}
.bp3-icon-trending-down::before {
content: "";
}
.bp3-icon-trending-up::before {
content: "";
}
.bp3-icon-truck::before {
content: "";
}
.bp3-icon-two-columns::before {
content: "";
}
.bp3-icon-unarchive::before {
content: "";
}
.bp3-icon-underline::before {
content: "⎁";
}
.bp3-icon-undo::before {
content: "⎌";
}
.bp3-icon-ungroup-objects::before {
content: "";
}
.bp3-icon-unknown-vehicle::before {
content: "";
}
.bp3-icon-unlock::before {
content: "";
}
.bp3-icon-unpin::before {
content: "";
}
.bp3-icon-unresolve::before {
content: "";
}
.bp3-icon-updated::before {
content: "";
}
.bp3-icon-upload::before {
content: "";
}
.bp3-icon-user::before {
content: "";
}
.bp3-icon-variable::before {
content: "";
}
.bp3-icon-vertical-bar-chart-asc::before {
content: "";
}
.bp3-icon-vertical-bar-chart-desc::before {
content: "";
}
.bp3-icon-vertical-distribution::before {
content: "";
}
.bp3-icon-video::before {
content: "";
}
.bp3-icon-volume-down::before {
content: "";
}
.bp3-icon-volume-off::before {
content: "";
}
.bp3-icon-volume-up::before {
content: "";
}
.bp3-icon-walk::before {
content: "";
}
.bp3-icon-warning-sign::before {
content: "";
}
.bp3-icon-waterfall-chart::before {
content: "";
}
.bp3-icon-widget::before {
content: "";
}
.bp3-icon-widget-button::before {
content: "";
}
.bp3-icon-widget-footer::before {
content: "";
}
.bp3-icon-widget-header::before {
content: "";
}
.bp3-icon-wrench::before {
content: "";
}
.bp3-icon-zoom-in::before {
content: "";
}
.bp3-icon-zoom-out::before {
content: "";
}
.bp3-icon-zoom-to-fit::before {
content: "";
}
.bp3-submenu>.bp3-popover-wrapper {
display: block;
}
.bp3-submenu .bp3-popover-target {
display: block;
}
.bp3-submenu.bp3-popover {
-webkit-box-shadow: none;
box-shadow: none;
padding: 0 5px;
}
.bp3-submenu.bp3-popover>.bp3-popover-content {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
}
.bp3-dark .bp3-submenu.bp3-popover,
.bp3-submenu.bp3-popover.bp3-dark {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-dark .bp3-submenu.bp3-popover>.bp3-popover-content,
.bp3-submenu.bp3-popover.bp3-dark>.bp3-popover-content {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
}
.bp3-menu {
margin: 0;
border-radius: 3px;
background: #ffffff;
min-width: 180px;
padding: 5px;
list-style: none;
text-align: left;
color: #182026;
}
.bp3-menu-divider {
display: block;
margin: 5px;
border-top: 1px solid rgba(16, 22, 26, 0.15);
}
.bp3-dark .bp3-menu-divider {
border-top-color: rgba(255, 255, 255, 0.15);
}
.bp3-menu-item {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
border-radius: 2px;
padding: 5px 7px;
text-decoration: none;
line-height: 20px;
color: inherit;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-menu-item>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-menu-item>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-menu-item::before,
.bp3-menu-item>* {
margin-right: 7px;
}
.bp3-menu-item:empty::before,
.bp3-menu-item> :last-child {
margin-right: 0;
}
.bp3-menu-item>.bp3-fill {
word-break: break-word;
}
.bp3-menu-item:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-menu-item {
background-color: rgba(167, 182, 194, 0.3);
cursor: pointer;
text-decoration: none;
}
.bp3-menu-item.bp3-disabled {
background-color: inherit;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-dark .bp3-menu-item {
color: inherit;
}
.bp3-dark .bp3-menu-item:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-menu-item {
background-color: rgba(138, 155, 168, 0.15);
color: inherit;
}
.bp3-dark .bp3-menu-item.bp3-disabled {
background-color: inherit;
color: rgba(167, 182, 194, 0.6);
}
.bp3-menu-item.bp3-intent-primary {
color: #106ba3;
}
.bp3-menu-item.bp3-intent-primary .bp3-icon {
color: inherit;
}
.bp3-menu-item.bp3-intent-primary::before,
.bp3-menu-item.bp3-intent-primary::after,
.bp3-menu-item.bp3-intent-primary .bp3-menu-item-label {
color: #106ba3;
}
.bp3-menu-item.bp3-intent-primary:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item,
.bp3-menu-item.bp3-intent-primary.bp3-active {
background-color: #137cbd;
}
.bp3-menu-item.bp3-intent-primary:active {
background-color: #106ba3;
}
.bp3-menu-item.bp3-intent-primary:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item,
.bp3-menu-item.bp3-intent-primary:hover::before,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item::before,
.bp3-menu-item.bp3-intent-primary:hover::after,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item::after,
.bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-primary:active,
.bp3-menu-item.bp3-intent-primary:active::before,
.bp3-menu-item.bp3-intent-primary:active::after,
.bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-primary.bp3-active,
.bp3-menu-item.bp3-intent-primary.bp3-active::before,
.bp3-menu-item.bp3-intent-primary.bp3-active::after,
.bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-menu-item.bp3-intent-success {
color: #0d8050;
}
.bp3-menu-item.bp3-intent-success .bp3-icon {
color: inherit;
}
.bp3-menu-item.bp3-intent-success::before,
.bp3-menu-item.bp3-intent-success::after,
.bp3-menu-item.bp3-intent-success .bp3-menu-item-label {
color: #0d8050;
}
.bp3-menu-item.bp3-intent-success:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item,
.bp3-menu-item.bp3-intent-success.bp3-active {
background-color: #0f9960;
}
.bp3-menu-item.bp3-intent-success:active {
background-color: #0d8050;
}
.bp3-menu-item.bp3-intent-success:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item,
.bp3-menu-item.bp3-intent-success:hover::before,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item::before,
.bp3-menu-item.bp3-intent-success:hover::after,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item::after,
.bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-success:active,
.bp3-menu-item.bp3-intent-success:active::before,
.bp3-menu-item.bp3-intent-success:active::after,
.bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-success.bp3-active,
.bp3-menu-item.bp3-intent-success.bp3-active::before,
.bp3-menu-item.bp3-intent-success.bp3-active::after,
.bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-menu-item.bp3-intent-warning {
color: #bf7326;
}
.bp3-menu-item.bp3-intent-warning .bp3-icon {
color: inherit;
}
.bp3-menu-item.bp3-intent-warning::before,
.bp3-menu-item.bp3-intent-warning::after,
.bp3-menu-item.bp3-intent-warning .bp3-menu-item-label {
color: #bf7326;
}
.bp3-menu-item.bp3-intent-warning:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item,
.bp3-menu-item.bp3-intent-warning.bp3-active {
background-color: #d9822b;
}
.bp3-menu-item.bp3-intent-warning:active {
background-color: #bf7326;
}
.bp3-menu-item.bp3-intent-warning:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item,
.bp3-menu-item.bp3-intent-warning:hover::before,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item::before,
.bp3-menu-item.bp3-intent-warning:hover::after,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item::after,
.bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-warning:active,
.bp3-menu-item.bp3-intent-warning:active::before,
.bp3-menu-item.bp3-intent-warning:active::after,
.bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-warning.bp3-active,
.bp3-menu-item.bp3-intent-warning.bp3-active::before,
.bp3-menu-item.bp3-intent-warning.bp3-active::after,
.bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-menu-item.bp3-intent-danger {
color: #c23030;
}
.bp3-menu-item.bp3-intent-danger .bp3-icon {
color: inherit;
}
.bp3-menu-item.bp3-intent-danger::before,
.bp3-menu-item.bp3-intent-danger::after,
.bp3-menu-item.bp3-intent-danger .bp3-menu-item-label {
color: #c23030;
}
.bp3-menu-item.bp3-intent-danger:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item,
.bp3-menu-item.bp3-intent-danger.bp3-active {
background-color: #db3737;
}
.bp3-menu-item.bp3-intent-danger:active {
background-color: #c23030;
}
.bp3-menu-item.bp3-intent-danger:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item,
.bp3-menu-item.bp3-intent-danger:hover::before,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item::before,
.bp3-menu-item.bp3-intent-danger:hover::after,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item::after,
.bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-danger:active,
.bp3-menu-item.bp3-intent-danger:active::before,
.bp3-menu-item.bp3-intent-danger:active::after,
.bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label,
.bp3-menu-item.bp3-intent-danger.bp3-active,
.bp3-menu-item.bp3-intent-danger.bp3-active::before,
.bp3-menu-item.bp3-intent-danger.bp3-active::after,
.bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-menu-item::before {
line-height: 1;
font-family: "Icons16", sans-serif;
font-size: 16px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
margin-right: 7px;
}
.bp3-menu-item::before,
.bp3-menu-item>.bp3-icon {
margin-top: 2px;
color: #5c7080;
}
.bp3-menu-item .bp3-menu-item-label {
color: #5c7080;
}
.bp3-menu-item:hover,
.bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-menu-item {
color: inherit;
}
.bp3-menu-item.bp3-active,
.bp3-menu-item:active {
background-color: rgba(115, 134, 148, 0.3);
}
.bp3-menu-item.bp3-disabled {
outline: none !important;
background-color: inherit !important;
cursor: not-allowed !important;
color: rgba(92, 112, 128, 0.6) !important;
}
.bp3-menu-item.bp3-disabled::before,
.bp3-menu-item.bp3-disabled>.bp3-icon,
.bp3-menu-item.bp3-disabled .bp3-menu-item-label {
color: rgba(92, 112, 128, 0.6) !important;
}
.bp3-large .bp3-menu-item {
padding: 9px 7px;
line-height: 22px;
font-size: 16px;
}
.bp3-large .bp3-menu-item .bp3-icon {
margin-top: 3px;
}
.bp3-large .bp3-menu-item::before {
line-height: 1;
font-family: "Icons20", sans-serif;
font-size: 20px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
margin-top: 1px;
margin-right: 10px;
}
button.bp3-menu-item {
border: none;
background: none;
width: 100%;
text-align: left;
}
.bp3-menu-header {
display: block;
margin: 5px;
border-top: 1px solid rgba(16, 22, 26, 0.15);
cursor: default;
padding-left: 2px;
}
.bp3-dark .bp3-menu-header {
border-top-color: rgba(255, 255, 255, 0.15);
}
.bp3-menu-header:first-of-type {
border-top: none;
}
.bp3-menu-header>h6 {
color: #182026;
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
margin: 0;
padding: 10px 7px 0 1px;
line-height: 17px;
}
.bp3-dark .bp3-menu-header>h6 {
color: #f5f8fa;
}
.bp3-menu-header:first-of-type>h6 {
padding-top: 0;
}
.bp3-large .bp3-menu-header>h6 {
padding-top: 15px;
padding-bottom: 5px;
font-size: 18px;
}
.bp3-large .bp3-menu-header:first-of-type>h6 {
padding-top: 0;
}
.bp3-dark .bp3-menu {
background: #30404d;
color: #f5f8fa;
}
.bp3-dark .bp3-menu-item.bp3-intent-primary {
color: #48aff0;
}
.bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-icon {
color: inherit;
}
.bp3-dark .bp3-menu-item.bp3-intent-primary::before,
.bp3-dark .bp3-menu-item.bp3-intent-primary::after,
.bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-menu-item-label {
color: #48aff0;
}
.bp3-dark .bp3-menu-item.bp3-intent-primary:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active {
background-color: #137cbd;
}
.bp3-dark .bp3-menu-item.bp3-intent-primary:active {
background-color: #106ba3;
}
.bp3-dark .bp3-menu-item.bp3-intent-primary:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-primary:hover::before,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item::before,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item::before,
.bp3-dark .bp3-menu-item.bp3-intent-primary:hover::after,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item::after,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item::after,
.bp3-dark .bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item .bp3-menu-item-label,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-primary.bp3-menu-item .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-primary:active,
.bp3-dark .bp3-menu-item.bp3-intent-primary:active::before,
.bp3-dark .bp3-menu-item.bp3-intent-primary:active::after,
.bp3-dark .bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active,
.bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::before,
.bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::after,
.bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-dark .bp3-menu-item.bp3-intent-success {
color: #3dcc91;
}
.bp3-dark .bp3-menu-item.bp3-intent-success .bp3-icon {
color: inherit;
}
.bp3-dark .bp3-menu-item.bp3-intent-success::before,
.bp3-dark .bp3-menu-item.bp3-intent-success::after,
.bp3-dark .bp3-menu-item.bp3-intent-success .bp3-menu-item-label {
color: #3dcc91;
}
.bp3-dark .bp3-menu-item.bp3-intent-success:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active {
background-color: #0f9960;
}
.bp3-dark .bp3-menu-item.bp3-intent-success:active {
background-color: #0d8050;
}
.bp3-dark .bp3-menu-item.bp3-intent-success:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-success:hover::before,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item::before,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item::before,
.bp3-dark .bp3-menu-item.bp3-intent-success:hover::after,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item::after,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item::after,
.bp3-dark .bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item .bp3-menu-item-label,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-success.bp3-menu-item .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-success:active,
.bp3-dark .bp3-menu-item.bp3-intent-success:active::before,
.bp3-dark .bp3-menu-item.bp3-intent-success:active::after,
.bp3-dark .bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active,
.bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::before,
.bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::after,
.bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-dark .bp3-menu-item.bp3-intent-warning {
color: #ffb366;
}
.bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-icon {
color: inherit;
}
.bp3-dark .bp3-menu-item.bp3-intent-warning::before,
.bp3-dark .bp3-menu-item.bp3-intent-warning::after,
.bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-menu-item-label {
color: #ffb366;
}
.bp3-dark .bp3-menu-item.bp3-intent-warning:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active {
background-color: #d9822b;
}
.bp3-dark .bp3-menu-item.bp3-intent-warning:active {
background-color: #bf7326;
}
.bp3-dark .bp3-menu-item.bp3-intent-warning:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-warning:hover::before,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item::before,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item::before,
.bp3-dark .bp3-menu-item.bp3-intent-warning:hover::after,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item::after,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item::after,
.bp3-dark .bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item .bp3-menu-item-label,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-warning.bp3-menu-item .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-warning:active,
.bp3-dark .bp3-menu-item.bp3-intent-warning:active::before,
.bp3-dark .bp3-menu-item.bp3-intent-warning:active::after,
.bp3-dark .bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active,
.bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::before,
.bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::after,
.bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-dark .bp3-menu-item.bp3-intent-danger {
color: #ff7373;
}
.bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-icon {
color: inherit;
}
.bp3-dark .bp3-menu-item.bp3-intent-danger::before,
.bp3-dark .bp3-menu-item.bp3-intent-danger::after,
.bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-menu-item-label {
color: #ff7373;
}
.bp3-dark .bp3-menu-item.bp3-intent-danger:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active {
background-color: #db3737;
}
.bp3-dark .bp3-menu-item.bp3-intent-danger:active {
background-color: #c23030;
}
.bp3-dark .bp3-menu-item.bp3-intent-danger:hover,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item,
.bp3-dark .bp3-menu-item.bp3-intent-danger:hover::before,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item::before,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item::before,
.bp3-dark .bp3-menu-item.bp3-intent-danger:hover::after,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item::after,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item::after,
.bp3-dark .bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label,
.bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item .bp3-menu-item-label,
.bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open>.bp3-intent-danger.bp3-menu-item .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-danger:active,
.bp3-dark .bp3-menu-item.bp3-intent-danger:active::before,
.bp3-dark .bp3-menu-item.bp3-intent-danger:active::after,
.bp3-dark .bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label,
.bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active,
.bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::before,
.bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::after,
.bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label {
color: #ffffff;
}
.bp3-dark .bp3-menu-item::before,
.bp3-dark .bp3-menu-item>.bp3-icon {
color: #a7b6c2;
}
.bp3-dark .bp3-menu-item .bp3-menu-item-label {
color: #a7b6c2;
}
.bp3-dark .bp3-menu-item.bp3-active,
.bp3-dark .bp3-menu-item:active {
background-color: rgba(138, 155, 168, 0.3);
}
.bp3-dark .bp3-menu-item.bp3-disabled {
color: rgba(167, 182, 194, 0.6) !important;
}
.bp3-dark .bp3-menu-item.bp3-disabled::before,
.bp3-dark .bp3-menu-item.bp3-disabled>.bp3-icon,
.bp3-dark .bp3-menu-item.bp3-disabled .bp3-menu-item-label {
color: rgba(167, 182, 194, 0.6) !important;
}
.bp3-dark .bp3-menu-divider,
.bp3-dark .bp3-menu-header {
border-color: rgba(255, 255, 255, 0.15);
}
.bp3-dark .bp3-menu-header>h6 {
color: #f5f8fa;
}
.bp3-label .bp3-menu {
margin-top: 5px;
}
.bp3-navbar {
position: relative;
z-index: 10;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
background-color: #ffffff;
width: 100%;
height: 50px;
padding: 0 15px;
}
.bp3-navbar.bp3-dark,
.bp3-dark .bp3-navbar {
background-color: #394b59;
}
.bp3-navbar.bp3-dark {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-navbar {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-navbar.bp3-fixed-top {
position: fixed;
top: 0;
right: 0;
left: 0;
}
.bp3-navbar-heading {
margin-right: 15px;
font-size: 16px;
}
.bp3-navbar-group {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 50px;
}
.bp3-navbar-group.bp3-align-left {
float: left;
}
.bp3-navbar-group.bp3-align-right {
float: right;
}
.bp3-navbar-divider {
margin: 0 10px;
border-left: 1px solid rgba(16, 22, 26, 0.15);
height: 20px;
}
.bp3-dark .bp3-navbar-divider {
border-left-color: rgba(255, 255, 255, 0.15);
}
.bp3-non-ideal-state {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
width: 100%;
height: 100%;
text-align: center;
}
.bp3-non-ideal-state>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-non-ideal-state>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-non-ideal-state::before,
.bp3-non-ideal-state>* {
margin-bottom: 20px;
}
.bp3-non-ideal-state:empty::before,
.bp3-non-ideal-state> :last-child {
margin-bottom: 0;
}
.bp3-non-ideal-state>* {
max-width: 400px;
}
.bp3-non-ideal-state-visual {
color: rgba(92, 112, 128, 0.6);
font-size: 60px;
}
.bp3-dark .bp3-non-ideal-state-visual {
color: rgba(167, 182, 194, 0.6);
}
.bp3-overflow-list {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
min-width: 0;
}
.bp3-overflow-list-spacer {
-ms-flex-negative: 1;
flex-shrink: 1;
width: 1px;
}
body.bp3-overlay-open {
overflow: hidden;
}
.bp3-overlay {
position: static;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 20;
}
.bp3-overlay:not(.bp3-overlay-open) {
pointer-events: none;
}
.bp3-overlay.bp3-overlay-container {
position: fixed;
overflow: hidden;
}
.bp3-overlay.bp3-overlay-container.bp3-overlay-inline {
position: absolute;
}
.bp3-overlay.bp3-overlay-scroll-container {
position: fixed;
overflow: auto;
}
.bp3-overlay.bp3-overlay-scroll-container.bp3-overlay-inline {
position: absolute;
}
.bp3-overlay.bp3-overlay-inline {
display: inline;
overflow: visible;
}
.bp3-overlay-content {
position: fixed;
z-index: 20;
}
.bp3-overlay-inline .bp3-overlay-content,
.bp3-overlay-scroll-container .bp3-overlay-content {
position: absolute;
}
.bp3-overlay-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
opacity: 1;
z-index: 20;
background-color: rgba(16, 22, 26, 0.7);
overflow: auto;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-overlay-backdrop.bp3-overlay-enter,
.bp3-overlay-backdrop.bp3-overlay-appear {
opacity: 0;
}
.bp3-overlay-backdrop.bp3-overlay-enter-active,
.bp3-overlay-backdrop.bp3-overlay-appear-active {
opacity: 1;
-webkit-transition-property: opacity;
transition-property: opacity;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-overlay-backdrop.bp3-overlay-exit {
opacity: 1;
}
.bp3-overlay-backdrop.bp3-overlay-exit-active {
opacity: 0;
-webkit-transition-property: opacity;
transition-property: opacity;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-overlay-backdrop:focus {
outline: none;
}
.bp3-overlay-inline .bp3-overlay-backdrop {
position: absolute;
}
.bp3-panel-stack {
position: relative;
overflow: hidden;
}
.bp3-panel-stack-header {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-negative: 0;
flex-shrink: 0;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
z-index: 1;
-webkit-box-shadow: 0 1px rgba(16, 22, 26, 0.15);
box-shadow: 0 1px rgba(16, 22, 26, 0.15);
height: 30px;
}
.bp3-dark .bp3-panel-stack-header {
-webkit-box-shadow: 0 1px rgba(255, 255, 255, 0.15);
box-shadow: 0 1px rgba(255, 255, 255, 0.15);
}
.bp3-panel-stack-header>span {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
-webkit-box-align: stretch;
-ms-flex-align: stretch;
align-items: stretch;
}
.bp3-panel-stack-header .bp3-heading {
margin: 0 5px;
}
.bp3-button.bp3-panel-stack-header-back {
margin-left: 5px;
padding-left: 0;
white-space: nowrap;
}
.bp3-button.bp3-panel-stack-header-back .bp3-icon {
margin: 0 2px;
}
.bp3-panel-stack-view {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
margin-right: -1px;
border-right: 1px solid rgba(16, 22, 26, 0.15);
background-color: #ffffff;
overflow-y: auto;
}
.bp3-dark .bp3-panel-stack-view {
background-color: #30404d;
}
.bp3-panel-stack-push .bp3-panel-stack-enter,
.bp3-panel-stack-push .bp3-panel-stack-appear {
-webkit-transform: translateX(100%);
transform: translateX(100%);
opacity: 0;
}
.bp3-panel-stack-push .bp3-panel-stack-enter-active,
.bp3-panel-stack-push .bp3-panel-stack-appear-active {
-webkit-transform: translate(0%);
transform: translate(0%);
opacity: 1;
-webkit-transition-property: opacity, -webkit-transform;
transition-property: opacity, -webkit-transform;
transition-property: transform, opacity;
transition-property: transform, opacity, -webkit-transform;
-webkit-transition-duration: 400ms;
transition-duration: 400ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-panel-stack-push .bp3-panel-stack-exit {
-webkit-transform: translate(0%);
transform: translate(0%);
opacity: 1;
}
.bp3-panel-stack-push .bp3-panel-stack-exit-active {
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
opacity: 0;
-webkit-transition-property: opacity, -webkit-transform;
transition-property: opacity, -webkit-transform;
transition-property: transform, opacity;
transition-property: transform, opacity, -webkit-transform;
-webkit-transition-duration: 400ms;
transition-duration: 400ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-panel-stack-pop .bp3-panel-stack-enter,
.bp3-panel-stack-pop .bp3-panel-stack-appear {
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
opacity: 0;
}
.bp3-panel-stack-pop .bp3-panel-stack-enter-active,
.bp3-panel-stack-pop .bp3-panel-stack-appear-active {
-webkit-transform: translate(0%);
transform: translate(0%);
opacity: 1;
-webkit-transition-property: opacity, -webkit-transform;
transition-property: opacity, -webkit-transform;
transition-property: transform, opacity;
transition-property: transform, opacity, -webkit-transform;
-webkit-transition-duration: 400ms;
transition-duration: 400ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-panel-stack-pop .bp3-panel-stack-exit {
-webkit-transform: translate(0%);
transform: translate(0%);
opacity: 1;
}
.bp3-panel-stack-pop .bp3-panel-stack-exit-active {
-webkit-transform: translateX(100%);
transform: translateX(100%);
opacity: 0;
-webkit-transition-property: opacity, -webkit-transform;
transition-property: opacity, -webkit-transform;
transition-property: transform, opacity;
transition-property: transform, opacity, -webkit-transform;
-webkit-transition-duration: 400ms;
transition-duration: 400ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-popover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
-webkit-transform: scale(1);
transform: scale(1);
display: inline-block;
z-index: 20;
border-radius: 3px;
}
.bp3-popover .bp3-popover-arrow {
position: absolute;
width: 30px;
height: 30px;
}
.bp3-popover .bp3-popover-arrow::before {
margin: 5px;
width: 20px;
height: 20px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-top>.bp3-popover {
margin-top: -17px;
margin-bottom: 17px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-top>.bp3-popover>.bp3-popover-arrow {
bottom: -11px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-top>.bp3-popover>.bp3-popover-arrow svg {
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-right>.bp3-popover {
margin-left: 17px;
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-right>.bp3-popover>.bp3-popover-arrow {
left: -11px;
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-right>.bp3-popover>.bp3-popover-arrow svg {
-webkit-transform: rotate(0);
transform: rotate(0);
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-bottom>.bp3-popover {
margin-top: 17px;
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-bottom>.bp3-popover>.bp3-popover-arrow {
top: -11px;
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-bottom>.bp3-popover>.bp3-popover-arrow svg {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-left>.bp3-popover {
margin-right: 17px;
margin-left: -17px;
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-left>.bp3-popover>.bp3-popover-arrow {
right: -11px;
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-left>.bp3-popover>.bp3-popover-arrow svg {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
.bp3-tether-element-attached-middle>.bp3-popover>.bp3-popover-arrow {
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.bp3-tether-element-attached-center>.bp3-popover>.bp3-popover-arrow {
right: 50%;
-webkit-transform: translateX(50%);
transform: translateX(50%);
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-top>.bp3-popover>.bp3-popover-arrow {
top: -0.3934px;
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-right>.bp3-popover>.bp3-popover-arrow {
right: -0.3934px;
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-left>.bp3-popover>.bp3-popover-arrow {
left: -0.3934px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom>.bp3-popover>.bp3-popover-arrow {
bottom: -0.3934px;
}
.bp3-tether-element-attached-top.bp3-tether-element-attached-left>.bp3-popover {
-webkit-transform-origin: top left;
transform-origin: top left;
}
.bp3-tether-element-attached-top.bp3-tether-element-attached-center>.bp3-popover {
-webkit-transform-origin: top center;
transform-origin: top center;
}
.bp3-tether-element-attached-top.bp3-tether-element-attached-right>.bp3-popover {
-webkit-transform-origin: top right;
transform-origin: top right;
}
.bp3-tether-element-attached-middle.bp3-tether-element-attached-left>.bp3-popover {
-webkit-transform-origin: center left;
transform-origin: center left;
}
.bp3-tether-element-attached-middle.bp3-tether-element-attached-center>.bp3-popover {
-webkit-transform-origin: center center;
transform-origin: center center;
}
.bp3-tether-element-attached-middle.bp3-tether-element-attached-right>.bp3-popover {
-webkit-transform-origin: center right;
transform-origin: center right;
}
.bp3-tether-element-attached-bottom.bp3-tether-element-attached-left>.bp3-popover {
-webkit-transform-origin: bottom left;
transform-origin: bottom left;
}
.bp3-tether-element-attached-bottom.bp3-tether-element-attached-center>.bp3-popover {
-webkit-transform-origin: bottom center;
transform-origin: bottom center;
}
.bp3-tether-element-attached-bottom.bp3-tether-element-attached-right>.bp3-popover {
-webkit-transform-origin: bottom right;
transform-origin: bottom right;
}
.bp3-popover .bp3-popover-content {
background: #ffffff;
color: inherit;
}
.bp3-popover .bp3-popover-arrow::before {
-webkit-box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.2);
box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.2);
}
.bp3-popover .bp3-popover-arrow-border {
fill: #10161a;
fill-opacity: 0.1;
}
.bp3-popover .bp3-popover-arrow-fill {
fill: #ffffff;
}
.bp3-popover-enter>.bp3-popover,
.bp3-popover-appear>.bp3-popover {
-webkit-transform: scale(0.3);
transform: scale(0.3);
}
.bp3-popover-enter-active>.bp3-popover,
.bp3-popover-appear-active>.bp3-popover {
-webkit-transform: scale(1);
transform: scale(1);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-popover-exit>.bp3-popover {
-webkit-transform: scale(1);
transform: scale(1);
}
.bp3-popover-exit-active>.bp3-popover {
-webkit-transform: scale(0.3);
transform: scale(0.3);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-popover .bp3-popover-content {
position: relative;
border-radius: 3px;
}
.bp3-popover.bp3-popover-content-sizing .bp3-popover-content {
max-width: 350px;
padding: 20px;
}
.bp3-popover-target+.bp3-overlay .bp3-popover.bp3-popover-content-sizing {
width: 350px;
}
.bp3-popover.bp3-minimal {
margin: 0 !important;
}
.bp3-popover.bp3-minimal .bp3-popover-arrow {
display: none;
}
.bp3-popover.bp3-minimal.bp3-popover {
-webkit-transform: scale(1);
transform: scale(1);
}
.bp3-popover-enter>.bp3-popover.bp3-minimal.bp3-popover,
.bp3-popover-appear>.bp3-popover.bp3-minimal.bp3-popover {
-webkit-transform: scale(1);
transform: scale(1);
}
.bp3-popover-enter-active>.bp3-popover.bp3-minimal.bp3-popover,
.bp3-popover-appear-active>.bp3-popover.bp3-minimal.bp3-popover {
-webkit-transform: scale(1);
transform: scale(1);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-popover-exit>.bp3-popover.bp3-minimal.bp3-popover {
-webkit-transform: scale(1);
transform: scale(1);
}
.bp3-popover-exit-active>.bp3-popover.bp3-minimal.bp3-popover {
-webkit-transform: scale(1);
transform: scale(1);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-popover.bp3-dark,
.bp3-dark .bp3-popover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
}
.bp3-popover.bp3-dark .bp3-popover-content,
.bp3-dark .bp3-popover .bp3-popover-content {
background: #30404d;
color: inherit;
}
.bp3-popover.bp3-dark .bp3-popover-arrow::before,
.bp3-dark .bp3-popover .bp3-popover-arrow::before {
-webkit-box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.4);
box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.4);
}
.bp3-popover.bp3-dark .bp3-popover-arrow-border,
.bp3-dark .bp3-popover .bp3-popover-arrow-border {
fill: #10161a;
fill-opacity: 0.2;
}
.bp3-popover.bp3-dark .bp3-popover-arrow-fill,
.bp3-dark .bp3-popover .bp3-popover-arrow-fill {
fill: #30404d;
}
.bp3-popover-arrow::before {
display: block;
position: absolute;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
border-radius: 2px;
content: "";
}
.bp3-tether-pinned .bp3-popover-arrow {
display: none;
}
.bp3-popover-backdrop {
background: rgba(255, 255, 255, 0);
}
.bp3-transition-container {
opacity: 1;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
z-index: 20;
}
.bp3-transition-container.bp3-popover-enter,
.bp3-transition-container.bp3-popover-appear {
opacity: 0;
}
.bp3-transition-container.bp3-popover-enter-active,
.bp3-transition-container.bp3-popover-appear-active {
opacity: 1;
-webkit-transition-property: opacity;
transition-property: opacity;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-transition-container.bp3-popover-exit {
opacity: 1;
}
.bp3-transition-container.bp3-popover-exit-active {
opacity: 0;
-webkit-transition-property: opacity;
transition-property: opacity;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-transition-container:focus {
outline: none;
}
.bp3-transition-container.bp3-popover-leave .bp3-popover-content {
pointer-events: none;
}
.bp3-transition-container[data-x-out-of-boundaries] {
display: none;
}
span.bp3-popover-target {
display: inline-block;
}
.bp3-popover-wrapper.bp3-fill {
width: 100%;
}
.bp3-portal {
position: absolute;
top: 0;
right: 0;
left: 0;
}
@-webkit-keyframes linear-progress-bar-stripes {
from {
background-position: 0 0;
}
to {
background-position: 30px 0;
}
}
@keyframes linear-progress-bar-stripes {
from {
background-position: 0 0;
}
to {
background-position: 30px 0;
}
}
.bp3-progress-bar {
display: block;
position: relative;
border-radius: 40px;
background: rgba(92, 112, 128, 0.2);
width: 100%;
height: 8px;
overflow: hidden;
}
.bp3-progress-bar .bp3-progress-meter {
position: absolute;
border-radius: 40px;
background: linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%);
background-color: rgba(92, 112, 128, 0.8);
background-size: 30px 30px;
width: 100%;
height: 100%;
-webkit-transition: width 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: width 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-progress-bar:not(.bp3-no-animation):not(.bp3-no-stripes) .bp3-progress-meter {
animation: linear-progress-bar-stripes 300ms linear infinite reverse;
}
.bp3-progress-bar.bp3-no-stripes .bp3-progress-meter {
background-image: none;
}
.bp3-dark .bp3-progress-bar {
background: rgba(16, 22, 26, 0.5);
}
.bp3-dark .bp3-progress-bar .bp3-progress-meter {
background-color: #8a9ba8;
}
.bp3-progress-bar.bp3-intent-primary .bp3-progress-meter {
background-color: #137cbd;
}
.bp3-progress-bar.bp3-intent-success .bp3-progress-meter {
background-color: #0f9960;
}
.bp3-progress-bar.bp3-intent-warning .bp3-progress-meter {
background-color: #d9822b;
}
.bp3-progress-bar.bp3-intent-danger .bp3-progress-meter {
background-color: #db3737;
}
@-webkit-keyframes skeleton-glow {
from {
border-color: rgba(206, 217, 224, 0.2);
background: rgba(206, 217, 224, 0.2);
}
to {
border-color: rgba(92, 112, 128, 0.2);
background: rgba(92, 112, 128, 0.2);
}
}
@keyframes skeleton-glow {
from {
border-color: rgba(206, 217, 224, 0.2);
background: rgba(206, 217, 224, 0.2);
}
to {
border-color: rgba(92, 112, 128, 0.2);
background: rgba(92, 112, 128, 0.2);
}
}
.bp3-skeleton {
border-color: rgba(206, 217, 224, 0.2) !important;
border-radius: 2px;
-webkit-box-shadow: none !important;
box-shadow: none !important;
background: rgba(206, 217, 224, 0.2);
background-clip: padding-box !important;
cursor: default;
color: transparent !important;
-webkit-animation: 1000ms linear infinite alternate skeleton-glow;
animation: 1000ms linear infinite alternate skeleton-glow;
pointer-events: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-skeleton::before,
.bp3-skeleton::after,
.bp3-skeleton * {
visibility: hidden !important;
}
.bp3-slider {
width: 100%;
min-width: 150px;
height: 40px;
position: relative;
outline: none;
cursor: default;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-slider:hover {
cursor: pointer;
}
.bp3-slider:active {
cursor: -webkit-grabbing;
cursor: grabbing;
}
.bp3-slider.bp3-disabled {
opacity: 0.5;
cursor: not-allowed;
}
.bp3-slider.bp3-slider-unlabeled {
height: 16px;
}
.bp3-slider-track,
.bp3-slider-progress {
top: 5px;
right: 0;
left: 0;
height: 6px;
position: absolute;
}
.bp3-slider-track {
border-radius: 3px;
overflow: hidden;
}
.bp3-slider-progress {
background: rgba(92, 112, 128, 0.2);
}
.bp3-dark .bp3-slider-progress {
background: rgba(16, 22, 26, 0.5);
}
.bp3-slider-progress.bp3-intent-primary {
background-color: #137cbd;
}
.bp3-slider-progress.bp3-intent-success {
background-color: #0f9960;
}
.bp3-slider-progress.bp3-intent-warning {
background-color: #d9822b;
}
.bp3-slider-progress.bp3-intent-danger {
background-color: #db3737;
}
.bp3-slider-handle {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-color: #f5f8fa;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0));
color: #182026;
position: absolute;
top: 0;
left: 0;
border-radius: 3px;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2);
cursor: pointer;
width: 16px;
height: 16px;
}
.bp3-slider-handle:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-clip: padding-box;
background-color: #ebf1f5;
}
.bp3-slider-handle:active,
.bp3-slider-handle.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #d8e1e8;
background-image: none;
}
.bp3-slider-handle:disabled,
.bp3-slider-handle.bp3-disabled {
outline: none;
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(206, 217, 224, 0.5);
background-image: none;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-slider-handle:disabled.bp3-active,
.bp3-slider-handle:disabled.bp3-active:hover,
.bp3-slider-handle.bp3-disabled.bp3-active,
.bp3-slider-handle.bp3-disabled.bp3-active:hover {
background: rgba(206, 217, 224, 0.7);
}
.bp3-slider-handle:focus {
z-index: 1;
}
.bp3-slider-handle:hover {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
background-clip: padding-box;
background-color: #ebf1f5;
z-index: 2;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2);
cursor: -webkit-grab;
cursor: grab;
}
.bp3-slider-handle.bp3-active {
-webkit-box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #d8e1e8;
background-image: none;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1);
cursor: -webkit-grabbing;
cursor: grabbing;
}
.bp3-disabled .bp3-slider-handle {
-webkit-box-shadow: none;
box-shadow: none;
background: #bfccd6;
pointer-events: none;
}
.bp3-dark .bp3-slider-handle {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #394b59;
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0)));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0));
color: #f5f8fa;
}
.bp3-dark .bp3-slider-handle:hover,
.bp3-dark .bp3-slider-handle:active,
.bp3-dark .bp3-slider-handle.bp3-active {
color: #f5f8fa;
}
.bp3-dark .bp3-slider-handle:hover {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4);
background-color: #30404d;
}
.bp3-dark .bp3-slider-handle:active,
.bp3-dark .bp3-slider-handle.bp3-active {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
background-color: #202b33;
background-image: none;
}
.bp3-dark .bp3-slider-handle:disabled,
.bp3-dark .bp3-slider-handle.bp3-disabled {
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(57, 75, 89, 0.5);
background-image: none;
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-slider-handle:disabled.bp3-active,
.bp3-dark .bp3-slider-handle.bp3-disabled.bp3-active {
background: rgba(57, 75, 89, 0.7);
}
.bp3-dark .bp3-slider-handle .bp3-button-spinner .bp3-spinner-head {
background: rgba(16, 22, 26, 0.5);
stroke: #8a9ba8;
}
.bp3-dark .bp3-slider-handle,
.bp3-dark .bp3-slider-handle:hover {
background-color: #394b59;
}
.bp3-dark .bp3-slider-handle.bp3-active {
background-color: #293742;
}
.bp3-dark .bp3-disabled .bp3-slider-handle {
border-color: #5c7080;
-webkit-box-shadow: none;
box-shadow: none;
background: #5c7080;
}
.bp3-slider-handle .bp3-slider-label {
margin-left: 8px;
border-radius: 3px;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
background: #394b59;
color: #f5f8fa;
}
.bp3-dark .bp3-slider-handle .bp3-slider-label {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
background: #e1e8ed;
color: #394b59;
}
.bp3-disabled .bp3-slider-handle .bp3-slider-label {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-slider-handle.bp3-start,
.bp3-slider-handle.bp3-end {
width: 8px;
}
.bp3-slider-handle.bp3-start {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.bp3-slider-handle.bp3-end {
margin-left: 8px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.bp3-slider-handle.bp3-end .bp3-slider-label {
margin-left: 0;
}
.bp3-slider-label {
-webkit-transform: translate(-50%, 20px);
transform: translate(-50%, 20px);
display: inline-block;
position: absolute;
padding: 2px 5px;
vertical-align: top;
line-height: 1;
font-size: 12px;
}
.bp3-slider.bp3-vertical {
width: 40px;
min-width: 40px;
height: 150px;
}
.bp3-slider.bp3-vertical .bp3-slider-track,
.bp3-slider.bp3-vertical .bp3-slider-progress {
top: 0;
bottom: 0;
left: 5px;
width: 6px;
height: auto;
}
.bp3-slider.bp3-vertical .bp3-slider-progress {
top: auto;
}
.bp3-slider.bp3-vertical .bp3-slider-label {
-webkit-transform: translate(20px, 50%);
transform: translate(20px, 50%);
}
.bp3-slider.bp3-vertical .bp3-slider-handle {
top: auto;
}
.bp3-slider.bp3-vertical .bp3-slider-handle .bp3-slider-label {
margin-top: -8px;
margin-left: 0;
}
.bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end,
.bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start {
margin-left: 0;
width: 16px;
height: 8px;
}
.bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start {
border-top-left-radius: 0;
border-bottom-right-radius: 3px;
}
.bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start .bp3-slider-label {
-webkit-transform: translate(20px);
transform: translate(20px);
}
.bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end {
margin-bottom: 8px;
border-top-left-radius: 3px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
@-webkit-keyframes pt-spinner-animation {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes pt-spinner-animation {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.bp3-spinner {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
overflow: visible;
vertical-align: middle;
}
.bp3-spinner svg {
display: block;
}
.bp3-spinner path {
fill-opacity: 0;
}
.bp3-spinner .bp3-spinner-head {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transition: stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
stroke: rgba(92, 112, 128, 0.8);
stroke-linecap: round;
}
.bp3-spinner .bp3-spinner-track {
stroke: rgba(92, 112, 128, 0.2);
}
.bp3-spinner-animation {
-webkit-animation: pt-spinner-animation 500ms linear infinite;
animation: pt-spinner-animation 500ms linear infinite;
}
.bp3-no-spin>.bp3-spinner-animation {
-webkit-animation: none;
animation: none;
}
.bp3-dark .bp3-spinner .bp3-spinner-head {
stroke: #8a9ba8;
}
.bp3-dark .bp3-spinner .bp3-spinner-track {
stroke: rgba(16, 22, 26, 0.5);
}
.bp3-spinner.bp3-intent-primary .bp3-spinner-head {
stroke: #137cbd;
}
.bp3-spinner.bp3-intent-success .bp3-spinner-head {
stroke: #0f9960;
}
.bp3-spinner.bp3-intent-warning .bp3-spinner-head {
stroke: #d9822b;
}
.bp3-spinner.bp3-intent-danger .bp3-spinner-head {
stroke: #db3737;
}
.bp3-tabs.bp3-vertical {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.bp3-tabs.bp3-vertical>.bp3-tab-list {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.bp3-tabs.bp3-vertical>.bp3-tab-list .bp3-tab {
border-radius: 3px;
width: 100%;
padding: 0 10px;
}
.bp3-tabs.bp3-vertical>.bp3-tab-list .bp3-tab[aria-selected="true"] {
-webkit-box-shadow: none;
box-shadow: none;
background-color: rgba(19, 124, 189, 0.2);
}
.bp3-tabs.bp3-vertical>.bp3-tab-list .bp3-tab-indicator-wrapper .bp3-tab-indicator {
top: 0;
right: 0;
bottom: 0;
left: 0;
border-radius: 3px;
background-color: rgba(19, 124, 189, 0.2);
height: auto;
}
.bp3-tabs.bp3-vertical>.bp3-tab-panel {
margin-top: 0;
padding-left: 20px;
}
.bp3-tab-list {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
position: relative;
margin: 0;
border: none;
padding: 0;
list-style: none;
}
.bp3-tab-list>*:not(:last-child) {
margin-right: 20px;
}
.bp3-tab {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
position: relative;
cursor: pointer;
max-width: 100%;
vertical-align: top;
line-height: 30px;
color: #182026;
font-size: 14px;
}
.bp3-tab a {
display: block;
text-decoration: none;
color: inherit;
}
.bp3-tab-indicator-wrapper~.bp3-tab {
-webkit-box-shadow: none !important;
box-shadow: none !important;
background-color: transparent !important;
}
.bp3-tab[aria-disabled="true"] {
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-tab[aria-selected="true"] {
border-radius: 0;
-webkit-box-shadow: inset 0 -3px 0 #106ba3;
box-shadow: inset 0 -3px 0 #106ba3;
}
.bp3-tab[aria-selected="true"],
.bp3-tab:not([aria-disabled="true"]):hover {
color: #106ba3;
}
.bp3-tab:focus {
-moz-outline-radius: 0;
}
.bp3-large>.bp3-tab {
line-height: 40px;
font-size: 16px;
}
.bp3-tab-panel {
margin-top: 20px;
}
.bp3-tab-panel[aria-hidden="true"] {
display: none;
}
.bp3-tab-indicator-wrapper {
position: absolute;
top: 0;
left: 0;
-webkit-transform: translateX(0), translateY(0);
transform: translateX(0), translateY(0);
-webkit-transition: height, width, -webkit-transform;
transition: height, width, -webkit-transform;
transition: height, transform, width;
transition: height, transform, width, -webkit-transform;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
pointer-events: none;
}
.bp3-tab-indicator-wrapper .bp3-tab-indicator {
position: absolute;
right: 0;
bottom: 0;
left: 0;
background-color: #106ba3;
height: 3px;
}
.bp3-tab-indicator-wrapper.bp3-no-animation {
-webkit-transition: none;
transition: none;
}
.bp3-dark .bp3-tab {
color: #f5f8fa;
}
.bp3-dark .bp3-tab[aria-disabled="true"] {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-tab[aria-selected="true"] {
-webkit-box-shadow: inset 0 -3px 0 #48aff0;
box-shadow: inset 0 -3px 0 #48aff0;
}
.bp3-dark .bp3-tab[aria-selected="true"],
.bp3-dark .bp3-tab:not([aria-disabled="true"]):hover {
color: #48aff0;
}
.bp3-dark .bp3-tab-indicator {
background-color: #48aff0;
}
.bp3-flex-expander {
-webkit-box-flex: 1;
-ms-flex: 1 1;
flex: 1 1;
}
.bp3-tag {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: relative;
border: none;
border-radius: 3px;
-webkit-box-shadow: none;
box-shadow: none;
background-color: #5c7080;
min-width: 20px;
max-width: 100%;
min-height: 20px;
padding: 2px 6px;
line-height: 16px;
color: #f5f8fa;
font-size: 12px;
}
.bp3-tag.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-interactive:hover {
background-color: rgba(92, 112, 128, 0.85);
}
.bp3-tag.bp3-interactive.bp3-active,
.bp3-tag.bp3-interactive:active {
background-color: rgba(92, 112, 128, 0.7);
}
.bp3-tag>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-tag>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-tag::before,
.bp3-tag>* {
margin-right: 4px;
}
.bp3-tag:empty::before,
.bp3-tag> :last-child {
margin-right: 0;
}
.bp3-tag:focus {
outline: rgba(19, 124, 189, 0.6) auto 2px;
outline-offset: 0;
-moz-outline-radius: 6px;
}
.bp3-tag.bp3-round {
border-radius: 30px;
padding-right: 8px;
padding-left: 8px;
}
.bp3-dark .bp3-tag {
background-color: #bfccd6;
color: #182026;
}
.bp3-dark .bp3-tag.bp3-interactive {
cursor: pointer;
}
.bp3-dark .bp3-tag.bp3-interactive:hover {
background-color: rgba(191, 204, 214, 0.85);
}
.bp3-dark .bp3-tag.bp3-interactive.bp3-active,
.bp3-dark .bp3-tag.bp3-interactive:active {
background-color: rgba(191, 204, 214, 0.7);
}
.bp3-dark .bp3-tag>.bp3-icon,
.bp3-dark .bp3-tag .bp3-icon-standard,
.bp3-dark .bp3-tag .bp3-icon-large {
fill: currentColor;
}
.bp3-tag>.bp3-icon,
.bp3-tag .bp3-icon-standard,
.bp3-tag .bp3-icon-large {
fill: #ffffff;
}
.bp3-tag.bp3-large,
.bp3-large .bp3-tag {
min-width: 30px;
min-height: 30px;
padding: 0 10px;
line-height: 20px;
font-size: 14px;
}
.bp3-tag.bp3-large::before,
.bp3-tag.bp3-large>*,
.bp3-large .bp3-tag::before,
.bp3-large .bp3-tag>* {
margin-right: 7px;
}
.bp3-tag.bp3-large:empty::before,
.bp3-tag.bp3-large> :last-child,
.bp3-large .bp3-tag:empty::before,
.bp3-large .bp3-tag> :last-child {
margin-right: 0;
}
.bp3-tag.bp3-large.bp3-round,
.bp3-large .bp3-tag.bp3-round {
padding-right: 12px;
padding-left: 12px;
}
.bp3-tag.bp3-intent-primary {
background: #137cbd;
color: #ffffff;
}
.bp3-tag.bp3-intent-primary.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-intent-primary.bp3-interactive:hover {
background-color: rgba(19, 124, 189, 0.85);
}
.bp3-tag.bp3-intent-primary.bp3-interactive.bp3-active,
.bp3-tag.bp3-intent-primary.bp3-interactive:active {
background-color: rgba(19, 124, 189, 0.7);
}
.bp3-tag.bp3-intent-success {
background: #0f9960;
color: #ffffff;
}
.bp3-tag.bp3-intent-success.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-intent-success.bp3-interactive:hover {
background-color: rgba(15, 153, 96, 0.85);
}
.bp3-tag.bp3-intent-success.bp3-interactive.bp3-active,
.bp3-tag.bp3-intent-success.bp3-interactive:active {
background-color: rgba(15, 153, 96, 0.7);
}
.bp3-tag.bp3-intent-warning {
background: #d9822b;
color: #ffffff;
}
.bp3-tag.bp3-intent-warning.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-intent-warning.bp3-interactive:hover {
background-color: rgba(217, 130, 43, 0.85);
}
.bp3-tag.bp3-intent-warning.bp3-interactive.bp3-active,
.bp3-tag.bp3-intent-warning.bp3-interactive:active {
background-color: rgba(217, 130, 43, 0.7);
}
.bp3-tag.bp3-intent-danger {
background: #db3737;
color: #ffffff;
}
.bp3-tag.bp3-intent-danger.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-intent-danger.bp3-interactive:hover {
background-color: rgba(219, 55, 55, 0.85);
}
.bp3-tag.bp3-intent-danger.bp3-interactive.bp3-active,
.bp3-tag.bp3-intent-danger.bp3-interactive:active {
background-color: rgba(219, 55, 55, 0.7);
}
.bp3-tag.bp3-fill {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
}
.bp3-tag.bp3-minimal>.bp3-icon,
.bp3-tag.bp3-minimal .bp3-icon-standard,
.bp3-tag.bp3-minimal .bp3-icon-large {
fill: #5c7080;
}
.bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) {
background-color: rgba(138, 155, 168, 0.2);
color: #182026;
}
.bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover {
background-color: rgba(92, 112, 128, 0.3);
}
.bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active,
.bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active {
background-color: rgba(92, 112, 128, 0.4);
}
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) {
color: #f5f8fa;
}
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive {
cursor: pointer;
}
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover {
background-color: rgba(191, 204, 214, 0.3);
}
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active,
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active {
background-color: rgba(191, 204, 214, 0.4);
}
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"])>.bp3-icon,
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-standard,
.bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-large {
fill: #a7b6c2;
}
.bp3-tag.bp3-minimal.bp3-intent-primary {
background-color: rgba(19, 124, 189, 0.15);
color: #106ba3;
}
.bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover {
background-color: rgba(19, 124, 189, 0.25);
}
.bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active,
.bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active {
background-color: rgba(19, 124, 189, 0.35);
}
.bp3-tag.bp3-minimal.bp3-intent-primary>.bp3-icon,
.bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-standard,
.bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-large {
fill: #137cbd;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary {
background-color: rgba(19, 124, 189, 0.25);
color: #48aff0;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive {
cursor: pointer;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover {
background-color: rgba(19, 124, 189, 0.35);
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active,
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active {
background-color: rgba(19, 124, 189, 0.45);
}
.bp3-tag.bp3-minimal.bp3-intent-success {
background-color: rgba(15, 153, 96, 0.15);
color: #0d8050;
}
.bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover {
background-color: rgba(15, 153, 96, 0.25);
}
.bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active,
.bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active {
background-color: rgba(15, 153, 96, 0.35);
}
.bp3-tag.bp3-minimal.bp3-intent-success>.bp3-icon,
.bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-standard,
.bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-large {
fill: #0f9960;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success {
background-color: rgba(15, 153, 96, 0.25);
color: #3dcc91;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive {
cursor: pointer;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover {
background-color: rgba(15, 153, 96, 0.35);
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active,
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active {
background-color: rgba(15, 153, 96, 0.45);
}
.bp3-tag.bp3-minimal.bp3-intent-warning {
background-color: rgba(217, 130, 43, 0.15);
color: #bf7326;
}
.bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover {
background-color: rgba(217, 130, 43, 0.25);
}
.bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active,
.bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active {
background-color: rgba(217, 130, 43, 0.35);
}
.bp3-tag.bp3-minimal.bp3-intent-warning>.bp3-icon,
.bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-standard,
.bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-large {
fill: #d9822b;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning {
background-color: rgba(217, 130, 43, 0.25);
color: #ffb366;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive {
cursor: pointer;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover {
background-color: rgba(217, 130, 43, 0.35);
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active,
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active {
background-color: rgba(217, 130, 43, 0.45);
}
.bp3-tag.bp3-minimal.bp3-intent-danger {
background-color: rgba(219, 55, 55, 0.15);
color: #c23030;
}
.bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive {
cursor: pointer;
}
.bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover {
background-color: rgba(219, 55, 55, 0.25);
}
.bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active,
.bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active {
background-color: rgba(219, 55, 55, 0.35);
}
.bp3-tag.bp3-minimal.bp3-intent-danger>.bp3-icon,
.bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-standard,
.bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-large {
fill: #db3737;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger {
background-color: rgba(219, 55, 55, 0.25);
color: #ff7373;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive {
cursor: pointer;
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover {
background-color: rgba(219, 55, 55, 0.35);
}
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active,
.bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active {
background-color: rgba(219, 55, 55, 0.45);
}
.bp3-tag-remove {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
opacity: 0.5;
margin-top: -2px;
margin-right: -6px !important;
margin-bottom: -2px;
border: none;
background: none;
cursor: pointer;
padding: 2px;
padding-left: 0;
color: inherit;
}
.bp3-tag-remove:hover {
opacity: 0.8;
background: none;
text-decoration: none;
}
.bp3-tag-remove:active {
opacity: 1;
}
.bp3-tag-remove:empty::before {
line-height: 1;
font-family: "Icons16", sans-serif;
font-size: 16px;
font-weight: 400;
font-style: normal;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
content: "";
}
.bp3-large .bp3-tag-remove {
margin-right: -10px !important;
padding: 5px;
padding-left: 0;
}
.bp3-large .bp3-tag-remove:empty::before {
line-height: 1;
font-family: "Icons20", sans-serif;
font-size: 20px;
font-weight: 400;
font-style: normal;
}
.bp3-tag-input {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
cursor: text;
height: auto;
min-height: 30px;
padding-right: 0;
padding-left: 5px;
line-height: inherit;
}
.bp3-tag-input>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-tag-input>.bp3-tag-input-values {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-tag-input .bp3-tag-input-icon {
margin-top: 7px;
margin-right: 7px;
margin-left: 2px;
color: #5c7080;
}
.bp3-tag-input .bp3-tag-input-values {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-ms-flex-item-align: stretch;
align-self: stretch;
margin-top: 5px;
margin-right: 7px;
min-width: 0;
}
.bp3-tag-input .bp3-tag-input-values>* {
-webkit-box-flex: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
}
.bp3-tag-input .bp3-tag-input-values>.bp3-fill {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-negative: 1;
flex-shrink: 1;
}
.bp3-tag-input .bp3-tag-input-values::before,
.bp3-tag-input .bp3-tag-input-values>* {
margin-right: 5px;
}
.bp3-tag-input .bp3-tag-input-values:empty::before,
.bp3-tag-input .bp3-tag-input-values> :last-child {
margin-right: 0;
}
.bp3-tag-input .bp3-tag-input-values:first-child .bp3-input-ghost:first-child {
padding-left: 5px;
}
.bp3-tag-input .bp3-tag-input-values>* {
margin-bottom: 5px;
}
.bp3-tag-input .bp3-tag {
overflow-wrap: break-word;
}
.bp3-tag-input .bp3-tag.bp3-active {
outline: rgba(19, 124, 189, 0.6) auto 2px;
outline-offset: 0;
-moz-outline-radius: 6px;
}
.bp3-tag-input .bp3-input-ghost {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 80px;
line-height: 20px;
}
.bp3-tag-input .bp3-input-ghost:disabled,
.bp3-tag-input .bp3-input-ghost.bp3-disabled {
cursor: not-allowed;
}
.bp3-tag-input .bp3-button,
.bp3-tag-input .bp3-spinner {
margin: 3px;
margin-left: 0;
}
.bp3-tag-input .bp3-button {
min-width: 24px;
min-height: 24px;
padding: 0 7px;
}
.bp3-tag-input.bp3-large {
height: auto;
min-height: 40px;
}
.bp3-tag-input.bp3-large::before,
.bp3-tag-input.bp3-large>* {
margin-right: 10px;
}
.bp3-tag-input.bp3-large:empty::before,
.bp3-tag-input.bp3-large> :last-child {
margin-right: 0;
}
.bp3-tag-input.bp3-large .bp3-tag-input-icon {
margin-top: 10px;
margin-left: 5px;
}
.bp3-tag-input.bp3-large .bp3-input-ghost {
line-height: 30px;
}
.bp3-tag-input.bp3-large .bp3-button {
min-width: 30px;
min-height: 30px;
padding: 5px 10px;
margin: 5px;
margin-left: 0;
}
.bp3-tag-input.bp3-large .bp3-spinner {
margin: 8px;
margin-left: 0;
}
.bp3-tag-input.bp3-active {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
background-color: #ffffff;
}
.bp3-tag-input.bp3-active.bp3-intent-primary {
-webkit-box-shadow: 0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-tag-input.bp3-active.bp3-intent-success {
-webkit-box-shadow: 0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-tag-input.bp3-active.bp3-intent-warning {
-webkit-box-shadow: 0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-tag-input.bp3-active.bp3-intent-danger {
-webkit-box-shadow: 0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
}
.bp3-dark .bp3-tag-input .bp3-tag-input-icon,
.bp3-tag-input.bp3-dark .bp3-tag-input-icon {
color: #a7b6c2;
}
.bp3-dark .bp3-tag-input .bp3-input-ghost,
.bp3-tag-input.bp3-dark .bp3-input-ghost {
color: #f5f8fa;
}
.bp3-dark .bp3-tag-input .bp3-input-ghost::-webkit-input-placeholder,
.bp3-tag-input.bp3-dark .bp3-input-ghost::-webkit-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-tag-input .bp3-input-ghost::-moz-placeholder,
.bp3-tag-input.bp3-dark .bp3-input-ghost::-moz-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-tag-input .bp3-input-ghost:-ms-input-placeholder,
.bp3-tag-input.bp3-dark .bp3-input-ghost:-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-tag-input .bp3-input-ghost::-ms-input-placeholder,
.bp3-tag-input.bp3-dark .bp3-input-ghost::-ms-input-placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-tag-input .bp3-input-ghost::placeholder,
.bp3-tag-input.bp3-dark .bp3-input-ghost::placeholder {
color: rgba(167, 182, 194, 0.6);
}
.bp3-dark .bp3-tag-input.bp3-active,
.bp3-tag-input.bp3-dark.bp3-active {
-webkit-box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
background-color: rgba(16, 22, 26, 0.3);
}
.bp3-dark .bp3-tag-input.bp3-active.bp3-intent-primary,
.bp3-tag-input.bp3-dark.bp3-active.bp3-intent-primary {
-webkit-box-shadow: 0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-tag-input.bp3-active.bp3-intent-success,
.bp3-tag-input.bp3-dark.bp3-active.bp3-intent-success {
-webkit-box-shadow: 0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-tag-input.bp3-active.bp3-intent-warning,
.bp3-tag-input.bp3-dark.bp3-active.bp3-intent-warning {
-webkit-box-shadow: 0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-dark .bp3-tag-input.bp3-active.bp3-intent-danger,
.bp3-tag-input.bp3-dark.bp3-active.bp3-intent-danger {
-webkit-box-shadow: 0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
}
.bp3-input-ghost {
border: none;
-webkit-box-shadow: none;
box-shadow: none;
background: none;
padding: 0;
}
.bp3-input-ghost::-webkit-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input-ghost::-moz-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input-ghost:-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input-ghost::-ms-input-placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input-ghost::placeholder {
opacity: 1;
color: rgba(92, 112, 128, 0.6);
}
.bp3-input-ghost:focus {
outline: none !important;
}
.bp3-toast {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
position: relative !important;
margin: 20px 0 0;
border-radius: 3px;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
background-color: #ffffff;
min-width: 300px;
max-width: 500px;
pointer-events: all;
}
.bp3-toast.bp3-toast-enter,
.bp3-toast.bp3-toast-appear {
-webkit-transform: translateY(-40px);
transform: translateY(-40px);
}
.bp3-toast.bp3-toast-enter-active,
.bp3-toast.bp3-toast-appear-active {
-webkit-transform: translateY(0);
transform: translateY(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-toast.bp3-toast-enter~.bp3-toast,
.bp3-toast.bp3-toast-appear~.bp3-toast {
-webkit-transform: translateY(-40px);
transform: translateY(-40px);
}
.bp3-toast.bp3-toast-enter-active~.bp3-toast,
.bp3-toast.bp3-toast-appear-active~.bp3-toast {
-webkit-transform: translateY(0);
transform: translateY(0);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function: cubic-bezier(0.54, 1.12, 0.38, 1.11);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-toast.bp3-toast-exit {
opacity: 1;
-webkit-filter: blur(0);
filter: blur(0);
}
.bp3-toast.bp3-toast-exit-active {
opacity: 0;
-webkit-filter: blur(10px);
filter: blur(10px);
-webkit-transition-property: opacity, -webkit-filter;
transition-property: opacity, -webkit-filter;
transition-property: opacity, filter;
transition-property: opacity, filter, -webkit-filter;
-webkit-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-toast.bp3-toast-exit~.bp3-toast {
-webkit-transform: translateY(0);
transform: translateY(0);
}
.bp3-toast.bp3-toast-exit-active~.bp3-toast {
-webkit-transform: translateY(-40px);
transform: translateY(-40px);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 50ms;
transition-delay: 50ms;
}
.bp3-toast .bp3-button-group {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
padding: 5px;
padding-left: 0;
}
.bp3-toast>.bp3-icon {
margin: 12px;
margin-right: 0;
color: #5c7080;
}
.bp3-toast.bp3-dark,
.bp3-dark .bp3-toast {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
background-color: #394b59;
}
.bp3-toast.bp3-dark>.bp3-icon,
.bp3-dark .bp3-toast>.bp3-icon {
color: #a7b6c2;
}
.bp3-toast[class*="bp3-intent-"] a {
color: rgba(255, 255, 255, 0.7);
}
.bp3-toast[class*="bp3-intent-"] a:hover {
color: #ffffff;
}
.bp3-toast[class*="bp3-intent-"]>.bp3-icon {
color: #ffffff;
}
.bp3-toast[class*="bp3-intent-"] .bp3-button,
.bp3-toast[class*="bp3-intent-"] .bp3-button::before,
.bp3-toast[class*="bp3-intent-"] .bp3-button .bp3-icon,
.bp3-toast[class*="bp3-intent-"] .bp3-button:active {
color: rgba(255, 255, 255, 0.7) !important;
}
.bp3-toast[class*="bp3-intent-"] .bp3-button:focus {
outline-color: rgba(255, 255, 255, 0.5);
}
.bp3-toast[class*="bp3-intent-"] .bp3-button:hover {
background-color: rgba(255, 255, 255, 0.15) !important;
color: #ffffff !important;
}
.bp3-toast[class*="bp3-intent-"] .bp3-button:active {
background-color: rgba(255, 255, 255, 0.3) !important;
color: #ffffff !important;
}
.bp3-toast[class*="bp3-intent-"] .bp3-button::after {
background: rgba(255, 255, 255, 0.3) !important;
}
.bp3-toast.bp3-intent-primary {
background-color: #137cbd;
color: #ffffff;
}
.bp3-toast.bp3-intent-success {
background-color: #0f9960;
color: #ffffff;
}
.bp3-toast.bp3-intent-warning {
background-color: #d9822b;
color: #ffffff;
}
.bp3-toast.bp3-intent-danger {
background-color: #db3737;
color: #ffffff;
}
.bp3-toast-message {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
padding: 11px;
word-break: break-word;
}
.bp3-toast-container {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: fixed;
right: 0;
left: 0;
z-index: 40;
overflow: hidden;
padding: 0 20px 20px;
pointer-events: none;
}
.bp3-toast-container.bp3-toast-container-top {
top: 0;
bottom: auto;
}
.bp3-toast-container.bp3-toast-container-bottom {
-webkit-box-orient: vertical;
-webkit-box-direction: reverse;
-ms-flex-direction: column-reverse;
flex-direction: column-reverse;
top: auto;
bottom: 0;
}
.bp3-toast-container.bp3-toast-container-left {
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.bp3-toast-container.bp3-toast-container-right {
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
}
.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active),
.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active)~.bp3-toast,
.bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active),
.bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active)~.bp3-toast,
.bp3-toast-container-bottom .bp3-toast.bp3-toast-leave-active~.bp3-toast {
-webkit-transform: translateY(60px);
transform: translateY(60px);
}
.bp3-tooltip {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
-webkit-transform: scale(1);
transform: scale(1);
}
.bp3-tooltip .bp3-popover-arrow {
position: absolute;
width: 22px;
height: 22px;
}
.bp3-tooltip .bp3-popover-arrow::before {
margin: 4px;
width: 14px;
height: 14px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-top>.bp3-tooltip {
margin-top: -11px;
margin-bottom: 11px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-top>.bp3-tooltip>.bp3-popover-arrow {
bottom: -8px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-top>.bp3-tooltip>.bp3-popover-arrow svg {
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-right>.bp3-tooltip {
margin-left: 11px;
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-right>.bp3-tooltip>.bp3-popover-arrow {
left: -8px;
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-right>.bp3-tooltip>.bp3-popover-arrow svg {
-webkit-transform: rotate(0);
transform: rotate(0);
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-bottom>.bp3-tooltip {
margin-top: 11px;
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-bottom>.bp3-tooltip>.bp3-popover-arrow {
top: -8px;
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-bottom>.bp3-tooltip>.bp3-popover-arrow svg {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-left>.bp3-tooltip {
margin-right: 11px;
margin-left: -11px;
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-left>.bp3-tooltip>.bp3-popover-arrow {
right: -8px;
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-left>.bp3-tooltip>.bp3-popover-arrow svg {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
.bp3-tether-element-attached-middle>.bp3-tooltip>.bp3-popover-arrow {
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.bp3-tether-element-attached-center>.bp3-tooltip>.bp3-popover-arrow {
right: 50%;
-webkit-transform: translateX(50%);
transform: translateX(50%);
}
.bp3-tether-element-attached-top.bp3-tether-target-attached-top>.bp3-tooltip>.bp3-popover-arrow {
top: -0.22183px;
}
.bp3-tether-element-attached-right.bp3-tether-target-attached-right>.bp3-tooltip>.bp3-popover-arrow {
right: -0.22183px;
}
.bp3-tether-element-attached-left.bp3-tether-target-attached-left>.bp3-tooltip>.bp3-popover-arrow {
left: -0.22183px;
}
.bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom>.bp3-tooltip>.bp3-popover-arrow {
bottom: -0.22183px;
}
.bp3-tether-element-attached-top.bp3-tether-element-attached-left>.bp3-tooltip {
-webkit-transform-origin: top left;
transform-origin: top left;
}
.bp3-tether-element-attached-top.bp3-tether-element-attached-center>.bp3-tooltip {
-webkit-transform-origin: top center;
transform-origin: top center;
}
.bp3-tether-element-attached-top.bp3-tether-element-attached-right>.bp3-tooltip {
-webkit-transform-origin: top right;
transform-origin: top right;
}
.bp3-tether-element-attached-middle.bp3-tether-element-attached-left>.bp3-tooltip {
-webkit-transform-origin: center left;
transform-origin: center left;
}
.bp3-tether-element-attached-middle.bp3-tether-element-attached-center>.bp3-tooltip {
-webkit-transform-origin: center center;
transform-origin: center center;
}
.bp3-tether-element-attached-middle.bp3-tether-element-attached-right>.bp3-tooltip {
-webkit-transform-origin: center right;
transform-origin: center right;
}
.bp3-tether-element-attached-bottom.bp3-tether-element-attached-left>.bp3-tooltip {
-webkit-transform-origin: bottom left;
transform-origin: bottom left;
}
.bp3-tether-element-attached-bottom.bp3-tether-element-attached-center>.bp3-tooltip {
-webkit-transform-origin: bottom center;
transform-origin: bottom center;
}
.bp3-tether-element-attached-bottom.bp3-tether-element-attached-right>.bp3-tooltip {
-webkit-transform-origin: bottom right;
transform-origin: bottom right;
}
.bp3-tooltip .bp3-popover-content {
background: #394b59;
color: #f5f8fa;
}
.bp3-tooltip .bp3-popover-arrow::before {
-webkit-box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.2);
box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.2);
}
.bp3-tooltip .bp3-popover-arrow-border {
fill: #10161a;
fill-opacity: 0.1;
}
.bp3-tooltip .bp3-popover-arrow-fill {
fill: #394b59;
}
.bp3-popover-enter>.bp3-tooltip,
.bp3-popover-appear>.bp3-tooltip {
-webkit-transform: scale(0.8);
transform: scale(0.8);
}
.bp3-popover-enter-active>.bp3-tooltip,
.bp3-popover-appear-active>.bp3-tooltip {
-webkit-transform: scale(1);
transform: scale(1);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-popover-exit>.bp3-tooltip {
-webkit-transform: scale(1);
transform: scale(1);
}
.bp3-popover-exit-active>.bp3-tooltip {
-webkit-transform: scale(0.8);
transform: scale(0.8);
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transition-duration: 100ms;
transition-duration: 100ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-tooltip .bp3-popover-content {
padding: 10px 12px;
}
.bp3-tooltip.bp3-dark,
.bp3-dark .bp3-tooltip {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
}
.bp3-tooltip.bp3-dark .bp3-popover-content,
.bp3-dark .bp3-tooltip .bp3-popover-content {
background: #e1e8ed;
color: #394b59;
}
.bp3-tooltip.bp3-dark .bp3-popover-arrow::before,
.bp3-dark .bp3-tooltip .bp3-popover-arrow::before {
-webkit-box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.4);
box-shadow: 1px 1px 6px rgba(16, 22, 26, 0.4);
}
.bp3-tooltip.bp3-dark .bp3-popover-arrow-border,
.bp3-dark .bp3-tooltip .bp3-popover-arrow-border {
fill: #10161a;
fill-opacity: 0.2;
}
.bp3-tooltip.bp3-dark .bp3-popover-arrow-fill,
.bp3-dark .bp3-tooltip .bp3-popover-arrow-fill {
fill: #e1e8ed;
}
.bp3-tooltip.bp3-intent-primary .bp3-popover-content {
background: #137cbd;
color: #ffffff;
}
.bp3-tooltip.bp3-intent-primary .bp3-popover-arrow-fill {
fill: #137cbd;
}
.bp3-tooltip.bp3-intent-success .bp3-popover-content {
background: #0f9960;
color: #ffffff;
}
.bp3-tooltip.bp3-intent-success .bp3-popover-arrow-fill {
fill: #0f9960;
}
.bp3-tooltip.bp3-intent-warning .bp3-popover-content {
background: #d9822b;
color: #ffffff;
}
.bp3-tooltip.bp3-intent-warning .bp3-popover-arrow-fill {
fill: #d9822b;
}
.bp3-tooltip.bp3-intent-danger .bp3-popover-content {
background: #db3737;
color: #ffffff;
}
.bp3-tooltip.bp3-intent-danger .bp3-popover-arrow-fill {
fill: #db3737;
}
.bp3-tooltip-indicator {
border-bottom: dotted 1px;
cursor: help;
}
.bp3-tree .bp3-icon,
.bp3-tree .bp3-icon-standard,
.bp3-tree .bp3-icon-large {
color: #5c7080;
}
.bp3-tree .bp3-icon.bp3-intent-primary,
.bp3-tree .bp3-icon-standard.bp3-intent-primary,
.bp3-tree .bp3-icon-large.bp3-intent-primary {
color: #137cbd;
}
.bp3-tree .bp3-icon.bp3-intent-success,
.bp3-tree .bp3-icon-standard.bp3-intent-success,
.bp3-tree .bp3-icon-large.bp3-intent-success {
color: #0f9960;
}
.bp3-tree .bp3-icon.bp3-intent-warning,
.bp3-tree .bp3-icon-standard.bp3-intent-warning,
.bp3-tree .bp3-icon-large.bp3-intent-warning {
color: #d9822b;
}
.bp3-tree .bp3-icon.bp3-intent-danger,
.bp3-tree .bp3-icon-standard.bp3-intent-danger,
.bp3-tree .bp3-icon-large.bp3-intent-danger {
color: #db3737;
}
.bp3-tree-node-list {
margin: 0;
padding-left: 0;
list-style: none;
}
.bp3-tree-root {
position: relative;
background-color: transparent;
cursor: default;
padding-left: 0;
}
.bp3-tree-node-content-0 {
padding-left: 0px;
}
.bp3-tree-node-content-1 {
padding-left: 23px;
}
.bp3-tree-node-content-2 {
padding-left: 46px;
}
.bp3-tree-node-content-3 {
padding-left: 69px;
}
.bp3-tree-node-content-4 {
padding-left: 92px;
}
.bp3-tree-node-content-5 {
padding-left: 115px;
}
.bp3-tree-node-content-6 {
padding-left: 138px;
}
.bp3-tree-node-content-7 {
padding-left: 161px;
}
.bp3-tree-node-content-8 {
padding-left: 184px;
}
.bp3-tree-node-content-9 {
padding-left: 207px;
}
.bp3-tree-node-content-10 {
padding-left: 230px;
}
.bp3-tree-node-content-11 {
padding-left: 253px;
}
.bp3-tree-node-content-12 {
padding-left: 276px;
}
.bp3-tree-node-content-13 {
padding-left: 299px;
}
.bp3-tree-node-content-14 {
padding-left: 322px;
}
.bp3-tree-node-content-15 {
padding-left: 345px;
}
.bp3-tree-node-content-16 {
padding-left: 368px;
}
.bp3-tree-node-content-17 {
padding-left: 391px;
}
.bp3-tree-node-content-18 {
padding-left: 414px;
}
.bp3-tree-node-content-19 {
padding-left: 437px;
}
.bp3-tree-node-content-20 {
padding-left: 460px;
}
.bp3-tree-node-content {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
width: 100%;
height: 30px;
padding-right: 5px;
}
.bp3-tree-node-content:hover {
background-color: rgba(191, 204, 214, 0.4);
}
.bp3-tree-node-caret,
.bp3-tree-node-caret-none {
min-width: 30px;
}
.bp3-tree-node-caret {
color: #5c7080;
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
cursor: pointer;
padding: 7px;
-webkit-transition: -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition: transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
}
.bp3-tree-node-caret:hover {
color: #182026;
}
.bp3-dark .bp3-tree-node-caret {
color: #a7b6c2;
}
.bp3-dark .bp3-tree-node-caret:hover {
color: #f5f8fa;
}
.bp3-tree-node-caret.bp3-tree-node-caret-open {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
.bp3-tree-node-caret.bp3-icon-standard::before {
content: "";
}
.bp3-tree-node-icon {
position: relative;
margin-right: 7px;
}
.bp3-tree-node-label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
position: relative;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-tree-node-label span {
display: inline;
}
.bp3-tree-node-secondary-label {
padding: 0 5px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.bp3-tree-node-secondary-label .bp3-popover-wrapper,
.bp3-tree-node-secondary-label .bp3-popover-target {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bp3-tree-node.bp3-disabled .bp3-tree-node-content {
background-color: inherit;
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-tree-node.bp3-disabled .bp3-tree-node-caret,
.bp3-tree-node.bp3-disabled .bp3-tree-node-icon {
cursor: not-allowed;
color: rgba(92, 112, 128, 0.6);
}
.bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content {
background-color: #137cbd;
}
.bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content,
.bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content .bp3-icon,
.bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content .bp3-icon-standard,
.bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content .bp3-icon-large {
color: #ffffff;
}
.bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content .bp3-tree-node-caret::before {
color: rgba(255, 255, 255, 0.7);
}
.bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content .bp3-tree-node-caret:hover::before {
color: #ffffff;
}
.bp3-dark .bp3-tree-node-content:hover {
background-color: rgba(92, 112, 128, 0.3);
}
.bp3-dark .bp3-tree .bp3-icon,
.bp3-dark .bp3-tree .bp3-icon-standard,
.bp3-dark .bp3-tree .bp3-icon-large {
color: #a7b6c2;
}
.bp3-dark .bp3-tree .bp3-icon.bp3-intent-primary,
.bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-primary,
.bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-primary {
color: #137cbd;
}
.bp3-dark .bp3-tree .bp3-icon.bp3-intent-success,
.bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-success,
.bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-success {
color: #0f9960;
}
.bp3-dark .bp3-tree .bp3-icon.bp3-intent-warning,
.bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-warning,
.bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-warning {
color: #d9822b;
}
.bp3-dark .bp3-tree .bp3-icon.bp3-intent-danger,
.bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-danger,
.bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-danger {
color: #db3737;
}
.bp3-dark .bp3-tree-node.bp3-tree-node-selected>.bp3-tree-node-content {
background-color: #137cbd;
}
/*!
Copyright 2017-present Palantir Technologies, Inc. All rights reserved.
Licensed under the Apache License, Version 2.0.
*/
.bp3-omnibar {
-webkit-filter: blur(0);
filter: blur(0);
opacity: 1;
top: 20vh;
left: calc(50% - 250px);
z-index: 21;
border-radius: 3px;
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
background-color: #ffffff;
width: 500px;
}
.bp3-omnibar.bp3-overlay-enter,
.bp3-omnibar.bp3-overlay-appear {
-webkit-filter: blur(20px);
filter: blur(20px);
opacity: 0.2;
}
.bp3-omnibar.bp3-overlay-enter-active,
.bp3-omnibar.bp3-overlay-appear-active {
-webkit-filter: blur(0);
filter: blur(0);
opacity: 1;
-webkit-transition-property: opacity, -webkit-filter;
transition-property: opacity, -webkit-filter;
transition-property: filter, opacity;
transition-property: filter, opacity, -webkit-filter;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-omnibar.bp3-overlay-exit {
-webkit-filter: blur(0);
filter: blur(0);
opacity: 1;
}
.bp3-omnibar.bp3-overlay-exit-active {
-webkit-filter: blur(20px);
filter: blur(20px);
opacity: 0.2;
-webkit-transition-property: opacity, -webkit-filter;
transition-property: opacity, -webkit-filter;
transition-property: filter, opacity;
transition-property: filter, opacity, -webkit-filter;
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
-webkit-transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function: cubic-bezier(0.4, 1, 0.75, 0.9);
-webkit-transition-delay: 0;
transition-delay: 0;
}
.bp3-omnibar .bp3-input {
border-radius: 0;
background-color: transparent;
}
.bp3-omnibar .bp3-input,
.bp3-omnibar .bp3-input:focus {
-webkit-box-shadow: none;
box-shadow: none;
}
.bp3-omnibar .bp3-menu {
border-radius: 0;
-webkit-box-shadow: inset 0 1px 0 rgba(16, 22, 26, 0.15);
box-shadow: inset 0 1px 0 rgba(16, 22, 26, 0.15);
background-color: transparent;
max-height: calc(60vh - 40px);
overflow: auto;
}
.bp3-omnibar .bp3-menu:empty {
display: none;
}
.bp3-dark .bp3-omnibar,
.bp3-omnibar.bp3-dark {
-webkit-box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
background-color: #30404d;
}
.bp3-omnibar-overlay .bp3-overlay-backdrop {
background-color: rgba(16, 22, 26, 0.2);
}
.bp3-select-popover .bp3-popover-content {
padding: 5px;
}
.bp3-select-popover .bp3-input-group {
margin-bottom: 0;
}
.bp3-select-popover .bp3-menu {
max-width: 400px;
max-height: 300px;
overflow: auto;
padding: 0;
}
.bp3-select-popover .bp3-menu:not(:first-child) {
padding-top: 5px;
}
.bp3-multi-select {
min-width: 150px;
}
.bp3-multi-select-popover .bp3-menu {
max-width: 400px;
max-height: 300px;
overflow: auto;
}
.bp3-select-popover .bp3-popover-content {
padding: 5px;
}
.bp3-select-popover .bp3-input-group {
margin-bottom: 0;
}
.bp3-select-popover .bp3-menu {
max-width: 400px;
max-height: 300px;
overflow: auto;
padding: 0;
}
.bp3-select-popover .bp3-menu:not(:first-child) {
padding-top: 5px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
/**
* (DEPRECATED) Support for consuming icons as CSS background images
*/
/* Icons urls */
:root {
--jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDhoLTIuODFjLS40NS0uNzgtMS4wNy0xLjQ1LTEuODItMS45NkwxNyA0LjQxIDE1LjU5IDNsLTIuMTcgMi4xN0MxMi45NiA1LjA2IDEyLjQ5IDUgMTIgNWMtLjQ5IDAtLjk2LjA2LTEuNDEuMTdMOC40MSAzIDcgNC40MWwxLjYyIDEuNjNDNy44OCA2LjU1IDcuMjYgNy4yMiA2LjgxIDhINHYyaDIuMDljLS4wNS4zMy0uMDkuNjYtLjA5IDF2MUg0djJoMnYxYzAgLjM0LjA0LjY3LjA5IDFINHYyaDIuODFjMS4wNCAxLjc5IDIuOTcgMyA1LjE5IDNzNC4xNS0xLjIxIDUuMTktM0gyMHYtMmgtMi4wOWMuMDUtLjMzLjA5LS42Ni4wOS0xdi0xaDJ2LTJoLTJ2LTFjMC0uMzQtLjA0LS42Ny0uMDktMUgyMFY4em0tNiA4aC00di0yaDR2MnptMC00aC00di0yaDR2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
--jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
--jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1pY29uLWJyYW5kMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNmZmYiPgogICAgPHBhdGggZD0iTTEwNSAxMjcuM2g0MHYxMi44aC00MHpNNTEuMSA3N0w3NCA5OS45bC0yMy4zIDIzLjMgMTAuNSAxMC41IDIzLjMtMjMuM0w5NSA5OS45IDg0LjUgODkuNCA2MS42IDY2LjV6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
--jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
--jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
--jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
--jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
--jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNGOUE4MjUiPgogICAgPHBhdGggZD0iTTIwLjIgMTEuOGMtMS42IDAtMS43LjUtMS43IDEgMCAuNC4xLjkuMSAxLjMuMS41LjEuOS4xIDEuMyAwIDEuNy0xLjQgMi4zLTMuNSAyLjNoLS45di0xLjloLjVjMS4xIDAgMS40IDAgMS40LS44IDAtLjMgMC0uNi0uMS0xIDAtLjQtLjEtLjgtLjEtMS4yIDAtMS4zIDAtMS44IDEuMy0yLTEuMy0uMi0xLjMtLjctMS4zLTIgMC0uNC4xLS44LjEtMS4yLjEtLjQuMS0uNy4xLTEgMC0uOC0uNC0uNy0xLjQtLjhoLS41VjQuMWguOWMyLjIgMCAzLjUuNyAzLjUgMi4zIDAgLjQtLjEuOS0uMSAxLjMtLjEuNS0uMS45LS4xIDEuMyAwIC41LjIgMSAxLjcgMXYxLjh6TTEuOCAxMC4xYzEuNiAwIDEuNy0uNSAxLjctMSAwLS40LS4xLS45LS4xLTEuMy0uMS0uNS0uMS0uOS0uMS0xLjMgMC0xLjYgMS40LTIuMyAzLjUtMi4zaC45djEuOWgtLjVjLTEgMC0xLjQgMC0xLjQuOCAwIC4zIDAgLjYuMSAxIDAgLjIuMS42LjEgMSAwIDEuMyAwIDEuOC0xLjMgMkM2IDExLjIgNiAxMS43IDYgMTNjMCAuNC0uMS44LS4xIDEuMi0uMS4zLS4xLjctLjEgMSAwIC44LjMuOCAxLjQuOGguNXYxLjloLS45Yy0yLjEgMC0zLjUtLjYtMy41LTIuMyAwLS40LjEtLjkuMS0xLjMuMS0uNS4xLS45LjEtMS4zIDAtLjUtLjItMS0xLjctMXYtMS45eiIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSIxMy44IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY3g9IjExIiBjeT0iOC4yIiByPSIyLjEiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgPGcgY2xhc3M9ImpwLWljb24td2FybjAiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
--jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
--jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
--jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
--jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
--jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4=);
--jp-icon-listings-info: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTAuOTc4IDUwLjk3OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAuOTc4IDUwLjk3ODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPGc+DQoJCTxnPg0KCQkJPHBhdGggc3R5bGU9ImZpbGw6IzAxMDAwMjsiIGQ9Ik00My41Miw3LjQ1OEMzOC43MTEsMi42NDgsMzIuMzA3LDAsMjUuNDg5LDBDMTguNjcsMCwxMi4yNjYsMi42NDgsNy40NTgsNy40NTgNCgkJCQljLTkuOTQzLDkuOTQxLTkuOTQzLDI2LjExOSwwLDM2LjA2MmM0LjgwOSw0LjgwOSwxMS4yMTIsNy40NTYsMTguMDMxLDcuNDU4YzAsMCwwLjAwMSwwLDAuMDAyLDANCgkJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoNCgkJCQkgTTQyLjEwNiw0Mi4xMDVjLTQuNDMyLDQuNDMxLTEwLjMzMiw2Ljg3Mi0xNi42MTUsNi44NzJoLTAuMDAyYy02LjI4NS0wLjAwMS0xMi4xODctMi40NDEtMTYuNjE3LTYuODcyDQoJCQkJYy05LjE2Mi05LjE2My05LjE2Mi0yNC4wNzEsMC0zMy4yMzNDMTMuMzAzLDQuNDQsMTkuMjA0LDIsMjUuNDg5LDJjNi4yODQsMCwxMi4xODYsMi40NCwxNi42MTcsNi44NzINCgkJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4NCgkJPC9nPg0KCQk8Zz4NCgkJCTxwYXRoIHN0eWxlPSJmaWxsOiMwMTAwMDI7IiBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1Mw0KCQkJCWMwLjQ2OC0wLjUzNiwwLjkyMy0xLjA2MiwxLjM2Ny0xLjU3NWMwLjYyNi0wLjc1MywxLjEwNC0xLjQ3OCwxLjQzNi0yLjE3NWMwLjMzMS0wLjcwNywwLjQ5NS0xLjU0MSwwLjQ5NS0yLjUNCgkJCQljMC0xLjA5Ni0wLjI2LTIuMDg4LTAuNzc5LTIuOTc5Yy0wLjU2NS0wLjg3OS0xLjUwMS0xLjMzNi0yLjgwNi0xLjM2OWMtMS44MDIsMC4wNTctMi45ODUsMC42NjctMy41NSwxLjgzMg0KCQkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkNCgkJCQljMS4wNjItMS42NCwyLjg1NS0yLjQ4MSw1LjM3OC0yLjUyN2MyLjE2LDAuMDIzLDMuODc0LDAuNjA4LDUuMTQxLDEuNzU4YzEuMjc4LDEuMTYsMS45MjksMi43NjQsMS45NSw0LjgxMQ0KCQkJCWMwLDEuMTQyLTAuMTM3LDIuMTExLTAuNDEsMi45MTFjLTAuMzA5LDAuODQ1LTAuNzMxLDEuNTkzLTEuMjY4LDIuMjQzYy0wLjQ5MiwwLjY1LTEuMDY4LDEuMzE4LTEuNzMsMi4wMDINCgkJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5DQoJCQkJQzI2LjU4OSwzMi4yMTgsMjMuNTc4LDMyLjIxOCwyMy41NzgsMzIuMjE4eiBNMjMuNTc4LDM4LjIydi0zLjQ4NGgzLjA3NnYzLjQ4NEgyMy41Nzh6Ii8+DQoJCTwvZz4NCgk8L2c+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==);
--jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
--jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
--jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
--jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMEQ0N0ExIj4KICAgIDxwYXRoIGQ9Ik0xMS4xIDYuOVY1LjhINi45YzAtLjUgMC0xLjMuMi0xLjYuNC0uNy44LTEuMSAxLjctMS40IDEuNy0uMyAyLjUtLjMgMy45LS4xIDEgLjEgMS45LjkgMS45IDEuOXY0LjJjMCAuNS0uOSAxLjYtMiAxLjZIOC44Yy0xLjUgMC0yLjQgMS40LTIuNCAyLjh2Mi4ySDQuN0MzLjUgMTUuMSAzIDE0IDMgMTMuMVY5Yy0uMS0xIC42LTIgMS44LTIgMS41LS4xIDYuMy0uMSA2LjMtLjF6Ii8+CiAgICA8cGF0aCBkPSJNMTAuOSAxNS4xdjEuMWg0LjJjMCAuNSAwIDEuMy0uMiAxLjYtLjQuNy0uOCAxLjEtMS43IDEuNC0xLjcuMy0yLjUuMy0zLjkuMS0xLS4xLTEuOS0uOS0xLjktMS45di00LjJjMC0uNS45LTEuNiAyLTEuNmgzLjhjMS41IDAgMi40LTEuNCAyLjQtMi44VjYuNmgxLjdDMTguNSA2LjkgMTkgOCAxOSA4LjlWMTNjMCAxLS43IDIuMS0xLjkgMi4xaC02LjJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
--jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
--jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
--jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
--jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
--jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
--jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMikiIGZpbGw9IiMzMzMzMzMiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uLWFjY2VudDIganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGQ9Ik01LjA1NjY0IDguNzYxNzJDNS4wNTY2NCA4LjU5NzY2IDUuMDMxMjUgOC40NTMxMiA0Ljk4MDQ3IDguMzI4MTJDNC45MzM1OSA4LjE5OTIyIDQuODU1NDcgOC4wODIwMyA0Ljc0NjA5IDcuOTc2NTZDNC42NDA2MiA3Ljg3MTA5IDQuNSA3Ljc3NTM5IDQuMzI0MjIgNy42ODk0NUM0LjE1MjM0IDcuNTk5NjEgMy45NDMzNiA3LjUxMTcyIDMuNjk3MjcgNy40MjU3OEMzLjMwMjczIDcuMjg1MTYgMi45NDMzNiA3LjEzNjcyIDIuNjE5MTQgNi45ODA0N0MyLjI5NDkyIDYuODI0MjIgMi4wMTc1OCA2LjY0MjU4IDEuNzg3MTEgNi40MzU1NUMxLjU2MDU1IDYuMjI4NTIgMS4zODQ3NyA1Ljk4ODI4IDEuMjU5NzcgNS43MTQ4NEMxLjEzNDc3IDUuNDM3NSAxLjA3MjI3IDUuMTA5MzggMS4wNzIyNyA0LjczMDQ3QzEuMDcyMjcgNC4zOTg0NCAxLjEyODkxIDQuMDk1NyAxLjI0MjE5IDMuODIyMjdDMS4zNTU0NyAzLjU0NDkyIDEuNTE1NjIgMy4zMDQ2OSAxLjcyMjY2IDMuMTAxNTZDMS45Mjk2OSAyLjg5ODQ0IDIuMTc5NjkgMi43MzQzNyAyLjQ3MjY2IDIuNjA5MzhDMi43NjU2MiAyLjQ4NDM4IDMuMDkxOCAyLjQwNDMgMy40NTExNyAyLjM2OTE0VjEuMTA5MzhINC4zODg2N1YyLjM4MDg2QzQuNzQwMjMgMi40Mjc3MyA1LjA1NjY0IDIuNTIzNDQgNS4zMzc4OSAyLjY2Nzk3QzUuNjE5MTQgMi44MTI1IDUuODU3NDIgMy4wMDE5NSA2LjA1MjczIDMuMjM2MzNDNi4yNTE5NSAzLjQ2NjggNi40MDQzIDMuNzQwMjMgNi41MDk3NyA0LjA1NjY0QzYuNjE5MTQgNC4zNjkxNCA2LjY3MzgzIDQuNzIwNyA2LjY3MzgzIDUuMTExMzNINS4wNDQ5MkM1LjA0NDkyIDQuNjM4NjcgNC45Mzc1IDQuMjgxMjUgNC43MjI2NiA0LjAzOTA2QzQuNTA3ODEgMy43OTI5NyA0LjIxNjggMy42Njk5MiAzLjg0OTYxIDMuNjY5OTJDMy42NTAzOSAzLjY2OTkyIDMuNDc2NTYgMy42OTcyNyAzLjMyODEyIDMuNzUxOTVDMy4xODM1OSAzLjgwMjczIDMuMDY0NDUgMy44NzY5NSAyLjk3MDcgMy45NzQ2MUMyLjg3Njk1IDQuMDY4MzYgMi44MDY2NCA0LjE3OTY5IDIuNzU5NzcgNC4zMDg1OUMyLjcxNjggNC40Mzc1IDIuNjk1MzEgNC41NzgxMiAyLjY5NTMxIDQuNzMwNDdDMi42OTUzMSA0Ljg4MjgxIDIuNzE2OCA1LjAxOTUzIDIuNzU5NzcgNS4xNDA2MkMyLjgwNjY0IDUuMjU3ODEgMi44ODI4MSA1LjM2NzE5IDIuOTg4MjggNS40Njg3NUMzLjA5NzY2IDUuNTcwMzEgMy4yNDAyMyA1LjY2Nzk3IDMuNDE2MDIgNS43NjE3MkMzLjU5MTggNS44NTE1NiAzLjgxMDU1IDUuOTQzMzYgNC4wNzIyNyA2LjAzNzExQzQuNDY2OCA2LjE4NTU1IDQuODI0MjIgNi4zMzk4NCA1LjE0NDUzIDYuNUM1LjQ2NDg0IDYuNjU2MjUgNS43MzgyOCA2LjgzOTg0IDUuOTY0ODQgNy4wNTA3OEM2LjE5NTMxIDcuMjU3ODEgNi4zNzEwOSA3LjUgNi40OTIxOSA3Ljc3NzM0QzYuNjE3MTkgOC4wNTA3OCA2LjY3OTY5IDguMzc1IDYuNjc5NjkgOC43NUM2LjY3OTY5IDkuMDkzNzUgNi42MjMwNSA5LjQwNDMgNi41MDk3NyA5LjY4MTY0QzYuMzk2NDggOS45NTUwOCA2LjIzNDM4IDEwLjE5MTQgNi4wMjM0NCAxMC4zOTA2QzUuODEyNSAxMC41ODk4IDUuNTU4NTkgMTAuNzUgNS4yNjE3MiAxMC44NzExQzQuOTY0ODQgMTAuOTg4MyA0LjYzMjgxIDExLjA2NDUgNC4yNjU2MiAxMS4wOTk2VjEyLjI0OEgzLjMzMzk4VjExLjA5OTZDMy4wMDE5NSAxMS4wNjg0IDIuNjc5NjkgMTAuOTk2MSAyLjM2NzE5IDEwLjg4MjhDMi4wNTQ2OSAxMC43NjU2IDEuNzc3MzQgMTAuNTk3NyAxLjUzNTE2IDEwLjM3ODlDMS4yOTY4OCAxMC4xNjAyIDEuMTA1NDcgOS44ODQ3NyAwLjk2MDkzOCA5LjU1MjczQzAuODE2NDA2IDkuMjE2OCAwLjc0NDE0MSA4LjgxNDQ1IDAuNzQ0MTQxIDguMzQ1N0gyLjM3ODkxQzIuMzc4OTEgOC42MjY5NSAyLjQxOTkyIDguODYzMjggMi41MDE5NSA5LjA1NDY5QzIuNTgzOTggOS4yNDIxOSAyLjY4OTQ1IDkuMzkyNTggMi44MTgzNiA5LjUwNTg2QzIuOTUxMTcgOS42MTUyMyAzLjEwMTU2IDkuNjkzMzYgMy4yNjk1MyA5Ljc0MDIzQzMuNDM3NSA5Ljc4NzExIDMuNjA5MzggOS44MTA1NSAzLjc4NTE2IDkuODEwNTVDNC4yMDMxMiA5LjgxMDU1IDQuNTE5NTMgOS43MTI4OSA0LjczNDM4IDkuNTE3NThDNC45NDkyMiA5LjMyMjI3IDUuMDU2NjQgOS4wNzAzMSA1LjA1NjY0IDguNzYxNzJaTTEzLjQxOCAxMi4yNzE1SDguMDc0MjJWMTFIMTMuNDE4VjEyLjI3MTVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjk1MjY0IDYpIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K);
--jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTUgMTVIM3YyaDEydi0yem0wLThIM3YyaDEyVjd6TTMgMTNoMTh2LTJIM3Yyem0wIDhoMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6Ii8+Cjwvc3ZnPgo=);
--jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
--jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
}
/* Icon CSS class declarations */
.jp-AddIcon {
background-image: var(--jp-icon-add);
}
.jp-BugIcon {
background-image: var(--jp-icon-bug);
}
.jp-BuildIcon {
background-image: var(--jp-icon-build);
}
.jp-CaretDownEmptyIcon {
background-image: var(--jp-icon-caret-down-empty);
}
.jp-CaretDownEmptyThinIcon {
background-image: var(--jp-icon-caret-down-empty-thin);
}
.jp-CaretDownIcon {
background-image: var(--jp-icon-caret-down);
}
.jp-CaretLeftIcon {
background-image: var(--jp-icon-caret-left);
}
.jp-CaretRightIcon {
background-image: var(--jp-icon-caret-right);
}
.jp-CaretUpEmptyThinIcon {
background-image: var(--jp-icon-caret-up-empty-thin);
}
.jp-CaretUpIcon {
background-image: var(--jp-icon-caret-up);
}
.jp-CaseSensitiveIcon {
background-image: var(--jp-icon-case-sensitive);
}
.jp-CheckIcon {
background-image: var(--jp-icon-check);
}
.jp-CircleEmptyIcon {
background-image: var(--jp-icon-circle-empty);
}
.jp-CircleIcon {
background-image: var(--jp-icon-circle);
}
.jp-ClearIcon {
background-image: var(--jp-icon-clear);
}
.jp-CloseIcon {
background-image: var(--jp-icon-close);
}
.jp-ConsoleIcon {
background-image: var(--jp-icon-console);
}
.jp-CopyIcon {
background-image: var(--jp-icon-copy);
}
.jp-CutIcon {
background-image: var(--jp-icon-cut);
}
.jp-DownloadIcon {
background-image: var(--jp-icon-download);
}
.jp-EditIcon {
background-image: var(--jp-icon-edit);
}
.jp-EllipsesIcon {
background-image: var(--jp-icon-ellipses);
}
.jp-ExtensionIcon {
background-image: var(--jp-icon-extension);
}
.jp-FastForwardIcon {
background-image: var(--jp-icon-fast-forward);
}
.jp-FileIcon {
background-image: var(--jp-icon-file);
}
.jp-FileUploadIcon {
background-image: var(--jp-icon-file-upload);
}
.jp-FilterListIcon {
background-image: var(--jp-icon-filter-list);
}
.jp-FolderIcon {
background-image: var(--jp-icon-folder);
}
.jp-Html5Icon {
background-image: var(--jp-icon-html5);
}
.jp-ImageIcon {
background-image: var(--jp-icon-image);
}
.jp-InspectorIcon {
background-image: var(--jp-icon-inspector);
}
.jp-JsonIcon {
background-image: var(--jp-icon-json);
}
.jp-JupyterFaviconIcon {
background-image: var(--jp-icon-jupyter-favicon);
}
.jp-JupyterIcon {
background-image: var(--jp-icon-jupyter);
}
.jp-JupyterlabWordmarkIcon {
background-image: var(--jp-icon-jupyterlab-wordmark);
}
.jp-KernelIcon {
background-image: var(--jp-icon-kernel);
}
.jp-KeyboardIcon {
background-image: var(--jp-icon-keyboard);
}
.jp-LauncherIcon {
background-image: var(--jp-icon-launcher);
}
.jp-LineFormIcon {
background-image: var(--jp-icon-line-form);
}
.jp-LinkIcon {
background-image: var(--jp-icon-link);
}
.jp-ListIcon {
background-image: var(--jp-icon-list);
}
.jp-ListingsInfoIcon {
background-image: var(--jp-icon-listings-info);
}
.jp-MarkdownIcon {
background-image: var(--jp-icon-markdown);
}
.jp-NewFolderIcon {
background-image: var(--jp-icon-new-folder);
}
.jp-NotTrustedIcon {
background-image: var(--jp-icon-not-trusted);
}
.jp-NotebookIcon {
background-image: var(--jp-icon-notebook);
}
.jp-PaletteIcon {
background-image: var(--jp-icon-palette);
}
.jp-PasteIcon {
background-image: var(--jp-icon-paste);
}
.jp-PythonIcon {
background-image: var(--jp-icon-python);
}
.jp-RKernelIcon {
background-image: var(--jp-icon-r-kernel);
}
.jp-ReactIcon {
background-image: var(--jp-icon-react);
}
.jp-RefreshIcon {
background-image: var(--jp-icon-refresh);
}
.jp-RegexIcon {
background-image: var(--jp-icon-regex);
}
.jp-RunIcon {
background-image: var(--jp-icon-run);
}
.jp-RunningIcon {
background-image: var(--jp-icon-running);
}
.jp-SaveIcon {
background-image: var(--jp-icon-save);
}
.jp-SearchIcon {
background-image: var(--jp-icon-search);
}
.jp-SettingsIcon {
background-image: var(--jp-icon-settings);
}
.jp-SpreadsheetIcon {
background-image: var(--jp-icon-spreadsheet);
}
.jp-StopIcon {
background-image: var(--jp-icon-stop);
}
.jp-TabIcon {
background-image: var(--jp-icon-tab);
}
.jp-TerminalIcon {
background-image: var(--jp-icon-terminal);
}
.jp-TextEditorIcon {
background-image: var(--jp-icon-text-editor);
}
.jp-TrustedIcon {
background-image: var(--jp-icon-trusted);
}
.jp-UndoIcon {
background-image: var(--jp-icon-undo);
}
.jp-VegaIcon {
background-image: var(--jp-icon-vega);
}
.jp-YamlIcon {
background-image: var(--jp-icon-yaml);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/**
* (DEPRECATED) Support for consuming icons as CSS background images
*/
:root {
--jp-icon-search-white: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
}
.jp-Icon,
.jp-MaterialIcon {
background-position: center;
background-repeat: no-repeat;
background-size: 16px;
min-width: 16px;
min-height: 16px;
}
.jp-Icon-cover {
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
/**
* (DEPRECATED) Support for specific CSS icon sizes
*/
.jp-Icon-16 {
background-size: 16px;
min-width: 16px;
min-height: 16px;
}
.jp-Icon-18 {
background-size: 18px;
min-width: 18px;
min-height: 18px;
}
.jp-Icon-20 {
background-size: 20px;
min-width: 20px;
min-height: 20px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/**
* Support for icons as inline SVG HTMLElements
*/
/* recolor the primary elements of an icon */
.jp-icon0[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon1[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon2[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon3[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon4[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon0[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon1[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon2[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon3[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon4[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/* recolor the accent elements of an icon */
.jp-icon-accent0[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-accent1[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-accent2[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-accent3[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-accent4[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-accent0[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-accent1[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-accent2[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-accent3[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-accent4[stroke] {
stroke: var(--jp-layout-color4);
}
/* set the color of an icon to transparent */
.jp-icon-none[fill] {
fill: none;
}
.jp-icon-none[stroke] {
stroke: none;
}
/* brand icon colors. Same for light and dark */
.jp-icon-brand0[fill] {
fill: var(--jp-brand-color0);
}
.jp-icon-brand1[fill] {
fill: var(--jp-brand-color1);
}
.jp-icon-brand2[fill] {
fill: var(--jp-brand-color2);
}
.jp-icon-brand3[fill] {
fill: var(--jp-brand-color3);
}
.jp-icon-brand4[fill] {
fill: var(--jp-brand-color4);
}
.jp-icon-brand0[stroke] {
stroke: var(--jp-brand-color0);
}
.jp-icon-brand1[stroke] {
stroke: var(--jp-brand-color1);
}
.jp-icon-brand2[stroke] {
stroke: var(--jp-brand-color2);
}
.jp-icon-brand3[stroke] {
stroke: var(--jp-brand-color3);
}
.jp-icon-brand4[stroke] {
stroke: var(--jp-brand-color4);
}
/* warn icon colors. Same for light and dark */
.jp-icon-warn0[fill] {
fill: var(--jp-warn-color0);
}
.jp-icon-warn1[fill] {
fill: var(--jp-warn-color1);
}
.jp-icon-warn2[fill] {
fill: var(--jp-warn-color2);
}
.jp-icon-warn3[fill] {
fill: var(--jp-warn-color3);
}
.jp-icon-warn0[stroke] {
stroke: var(--jp-warn-color0);
}
.jp-icon-warn1[stroke] {
stroke: var(--jp-warn-color1);
}
.jp-icon-warn2[stroke] {
stroke: var(--jp-warn-color2);
}
.jp-icon-warn3[stroke] {
stroke: var(--jp-warn-color3);
}
/* icon colors that contrast well with each other and most backgrounds */
.jp-icon-contrast0[fill] {
fill: var(--jp-icon-contrast-color0);
}
.jp-icon-contrast1[fill] {
fill: var(--jp-icon-contrast-color1);
}
.jp-icon-contrast2[fill] {
fill: var(--jp-icon-contrast-color2);
}
.jp-icon-contrast3[fill] {
fill: var(--jp-icon-contrast-color3);
}
.jp-icon-contrast0[stroke] {
stroke: var(--jp-icon-contrast-color0);
}
.jp-icon-contrast1[stroke] {
stroke: var(--jp-icon-contrast-color1);
}
.jp-icon-contrast2[stroke] {
stroke: var(--jp-icon-contrast-color2);
}
.jp-icon-contrast3[stroke] {
stroke: var(--jp-icon-contrast-color3);
}
/* CSS for icons in selected items in the settings editor */
#setting-editor .jp-PluginList .jp-mod-selected .jp-icon-selectable[fill] {
fill: #fff;
}
#setting-editor .jp-PluginList .jp-mod-selected .jp-icon-selectable-inverse[fill] {
fill: var(--jp-brand-color1);
}
/* CSS for icons in selected filebrowser listing items */
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
fill: #fff;
}
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
fill: var(--jp-brand-color1);
}
/* CSS for icons in selected tabs in the sidebar tab manager */
#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable[fill] {
fill: #fff;
}
#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable-inverse[fill] {
fill: var(--jp-brand-color1);
}
#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-hover :hover .jp-icon-selectable[fill] {
fill: var(--jp-brand-color1);
}
#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-hover :hover .jp-icon-selectable-inverse[fill] {
fill: #fff;
}
/**
* TODO: come up with non css-hack solution for showing the busy icon on top
* of the close icon
* CSS for complex behavior of close icon of tabs in the sidebar tab manager
*/
#tab-manager .lm-TabBar-tab.jp-mod-dirty>.lm-TabBar-tabCloseIcon> :not(:hover)>.jp-icon3[fill] {
fill: none;
}
#tab-manager .lm-TabBar-tab.jp-mod-dirty>.lm-TabBar-tabCloseIcon> :not(:hover)>.jp-icon-busy[fill] {
fill: var(--jp-inverse-layout-color3);
}
#tab-manager .lm-TabBar-tab.jp-mod-dirty.jp-mod-active>.lm-TabBar-tabCloseIcon> :not(:hover)>.jp-icon-busy[fill] {
fill: #fff;
}
/**
* TODO: come up with non css-hack solution for showing the busy icon on top
* of the close icon
* CSS for complex behavior of close icon of tabs in the main area tabbar
*/
.lm-DockPanel-tabBar .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty>.lm-TabBar-tabCloseIcon> :not(:hover)>.jp-icon3[fill] {
fill: none;
}
.lm-DockPanel-tabBar .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty>.lm-TabBar-tabCloseIcon> :not(:hover)>.jp-icon-busy[fill] {
fill: var(--jp-inverse-layout-color3);
}
/* CSS for icons in status bar */
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
fill: #fff;
}
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
fill: var(--jp-brand-color1);
}
/* special handling for splash icon CSS. While the theme CSS reloads during
splash, the splash icon can loose theming. To prevent that, we set a
default for its color variable */
:root {
--jp-warn-color0: var(--md-orange-700);
}
/* not sure what to do with this one, used in filebrowser listing */
.jp-DragIcon {
margin-right: 4px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/**
* Support for alt colors for icons as inline SVG HTMLElements
*/
/* alt recolor the primary elements of an icon */
.jp-icon-alt .jp-icon0[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-alt .jp-icon1[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-alt .jp-icon2[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-alt .jp-icon3[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-alt .jp-icon4[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-alt .jp-icon0[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-alt .jp-icon1[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-alt .jp-icon2[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-alt .jp-icon3[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-alt .jp-icon4[stroke] {
stroke: var(--jp-layout-color4);
}
/* alt recolor the accent elements of an icon */
.jp-icon-alt .jp-icon-accent0[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon-alt .jp-icon-accent1[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon-alt .jp-icon-accent2[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon-alt .jp-icon-accent3[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon-alt .jp-icon-accent4[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon-alt .jp-icon-accent0[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon-alt .jp-icon-accent1[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon-alt .jp-icon-accent2[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon-alt .jp-icon-accent3[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon-alt .jp-icon-accent4[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-icon-hoverShow:not(:hover) svg {
display: none !important;
}
/**
* Support for hover colors for icons as inline SVG HTMLElements
*/
/**
* regular colors
*/
/* recolor the primary elements of an icon */
.jp-icon-hover :hover .jp-icon0-hover[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon-hover :hover .jp-icon1-hover[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon-hover :hover .jp-icon2-hover[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon-hover :hover .jp-icon3-hover[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon-hover :hover .jp-icon4-hover[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon-hover :hover .jp-icon0-hover[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon-hover :hover .jp-icon1-hover[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon-hover :hover .jp-icon2-hover[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon-hover :hover .jp-icon3-hover[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon-hover :hover .jp-icon4-hover[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/* recolor the accent elements of an icon */
.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
stroke: var(--jp-layout-color4);
}
/* set the color of an icon to transparent */
.jp-icon-hover :hover .jp-icon-none-hover[fill] {
fill: none;
}
.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
stroke: none;
}
/**
* inverse colors
*/
/* inverse recolor the primary elements of an icon */
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
stroke: var(--jp-layout-color4);
}
/* inverse recolor the accent elements of an icon */
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* Sibling imports */
/* Override Blueprint's _reset.scss styles */
html {
box-sizing: unset;
}
*,
*::before,
*::after {
box-sizing: unset;
}
body {
color: unset;
font-family: var(--jp-ui-font-family);
}
p {
margin-top: unset;
margin-bottom: unset;
}
small {
font-size: unset;
}
strong {
font-weight: unset;
}
/* Override Blueprint's _typography.scss styles */
a {
text-decoration: unset;
color: unset;
}
a:hover {
text-decoration: unset;
color: unset;
}
/* Override Blueprint's _accessibility.scss styles */
:focus {
outline: unset;
outline-offset: unset;
-moz-outline-radius: unset;
}
/* Styles for ui-components */
.jp-Button {
border-radius: var(--jp-border-radius);
padding: 0px 12px;
font-size: var(--jp-ui-font-size1);
}
/* Use our own theme for hover styles */
button.jp-Button.bp3-button.bp3-minimal:hover {
background-color: var(--jp-layout-color2);
}
.jp-Button.minimal {
color: unset !important;
}
.jp-Button.jp-ToolbarButtonComponent {
text-transform: none;
}
.jp-InputGroup input {
box-sizing: border-box;
border-radius: 0;
background-color: transparent;
color: var(--jp-ui-font-color0);
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
}
.jp-InputGroup input:focus {
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-active-box-shadow-color),
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
}
.jp-InputGroup input::placeholder,
input::placeholder {
color: var(--jp-ui-font-color3);
}
.jp-BPIcon {
display: inline-block;
vertical-align: middle;
margin: auto;
}
/* Stop blueprint futzing with our icon fills */
.bp3-icon.jp-BPIcon>svg:not([fill]) {
fill: var(--jp-inverse-layout-color3);
}
.jp-InputGroupAction {
padding: 6px;
}
.jp-HTMLSelect.jp-DefaultStyle select {
background-color: initial;
border: none;
border-radius: 0;
box-shadow: none;
color: var(--jp-ui-font-color0);
display: block;
font-size: var(--jp-ui-font-size1);
height: 24px;
line-height: 14px;
padding: 0 25px 0 10px;
text-align: left;
-moz-appearance: none;
-webkit-appearance: none;
}
/* Use our own theme for hover and option styles */
.jp-HTMLSelect.jp-DefaultStyle select:hover,
.jp-HTMLSelect.jp-DefaultStyle select>option {
background-color: var(--jp-layout-color2);
color: var(--jp-ui-font-color0);
}
select {
box-sizing: border-box;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-Collapse {
display: flex;
flex-direction: column;
align-items: stretch;
border-top: 1px solid var(--jp-border-color2);
border-bottom: 1px solid var(--jp-border-color2);
}
.jp-Collapse-header {
padding: 1px 12px;
color: var(--jp-ui-font-color1);
background-color: var(--jp-layout-color1);
font-size: var(--jp-ui-font-size2);
}
.jp-Collapse-header:hover {
background-color: var(--jp-layout-color2);
}
.jp-Collapse-contents {
padding: 0px 12px 0px 12px;
background-color: var(--jp-layout-color1);
color: var(--jp-ui-font-color1);
overflow: auto;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Variables
|----------------------------------------------------------------------------*/
:root {
--jp-private-commandpalette-search-height: 28px;
}
/*-----------------------------------------------------------------------------
| Overall styles
|----------------------------------------------------------------------------*/
.lm-CommandPalette {
padding-bottom: 0px;
color: var(--jp-ui-font-color1);
background: var(--jp-layout-color1);
/* This is needed so that all font sizing of children done in ems is
* relative to this base size */
font-size: var(--jp-ui-font-size1);
}
/*-----------------------------------------------------------------------------
| Search
|----------------------------------------------------------------------------*/
.lm-CommandPalette-search {
padding: 4px;
background-color: var(--jp-layout-color1);
z-index: 2;
}
.lm-CommandPalette-wrapper {
overflow: overlay;
padding: 0px 9px;
background-color: var(--jp-input-active-background);
height: 30px;
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
}
.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
}
.lm-CommandPalette-wrapper::after {
content: ' ';
color: white;
background-color: var(--jp-brand-color1);
position: absolute;
top: 4px;
right: 4px;
height: 30px;
width: 10px;
padding: 0px 10px;
background-image: var(--jp-icon-search-white);
background-size: 20px;
background-repeat: no-repeat;
background-position: center;
}
.lm-CommandPalette-input {
background: transparent;
width: calc(100% - 18px);
float: left;
border: none;
outline: none;
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color0);
line-height: var(--jp-private-commandpalette-search-height);
}
.lm-CommandPalette-input::-webkit-input-placeholder,
.lm-CommandPalette-input::-moz-placeholder,
.lm-CommandPalette-input:-ms-input-placeholder {
color: var(--jp-ui-font-color3);
font-size: var(--jp-ui-font-size1);
}
/*-----------------------------------------------------------------------------
| Results
|----------------------------------------------------------------------------*/
.lm-CommandPalette-header:first-child {
margin-top: 0px;
}
.lm-CommandPalette-header {
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
color: var(--jp-ui-font-color1);
cursor: pointer;
display: flex;
font-size: var(--jp-ui-font-size0);
font-weight: 600;
letter-spacing: 1px;
margin-top: 8px;
padding: 8px 0 8px 12px;
text-transform: uppercase;
}
.lm-CommandPalette-header.lm-mod-active {
background: var(--jp-layout-color2);
}
.lm-CommandPalette-header>mark {
background-color: transparent;
font-weight: bold;
color: var(--jp-ui-font-color1);
}
.lm-CommandPalette-item {
padding: 4px 12px 4px 4px;
color: var(--jp-ui-font-color1);
font-size: var(--jp-ui-font-size1);
font-weight: 400;
display: flex;
}
.lm-CommandPalette-item.lm-mod-disabled {
color: var(--jp-ui-font-color3);
}
.lm-CommandPalette-item.lm-mod-active {
background: var(--jp-layout-color3);
}
.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
background: var(--jp-layout-color4);
}
.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
background: var(--jp-layout-color2);
}
.lm-CommandPalette-itemContent {
overflow: hidden;
}
.lm-CommandPalette-itemLabel>mark {
color: var(--jp-ui-font-color0);
background-color: transparent;
font-weight: bold;
}
.lm-CommandPalette-item.lm-mod-disabled mark {
color: var(--jp-ui-font-color3);
}
.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
margin: 0 4px 0 0;
position: relative;
width: 16px;
top: 2px;
flex: 0 0 auto;
}
.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
opacity: 0.4;
}
.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
flex: 0 0 auto;
}
.lm-CommandPalette-itemCaption {
display: none;
}
.lm-CommandPalette-content {
background-color: var(--jp-layout-color1);
}
.lm-CommandPalette-content:empty:after {
content: 'No results';
margin: auto;
margin-top: 20px;
width: 100px;
display: block;
font-size: var(--jp-ui-font-size2);
font-family: var(--jp-ui-font-family);
font-weight: lighter;
}
.lm-CommandPalette-emptyMessage {
text-align: center;
margin-top: 24px;
line-height: 1.32;
padding: 0px 8px;
color: var(--jp-content-font-color3);
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-Dialog {
position: absolute;
z-index: 10000;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
top: 0px;
left: 0px;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: var(--jp-dialog-background);
}
.jp-Dialog-content {
display: flex;
flex-direction: column;
margin-left: auto;
margin-right: auto;
background: var(--jp-layout-color1);
padding: 24px;
padding-bottom: 12px;
min-width: 300px;
min-height: 150px;
max-width: 1000px;
max-height: 500px;
box-sizing: border-box;
box-shadow: var(--jp-elevation-z20);
word-wrap: break-word;
border-radius: var(--jp-border-radius);
/* This is needed so that all font sizing of children done in ems is
* relative to this base size */
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color1);
}
.jp-Dialog-button {
overflow: visible;
}
button.jp-Dialog-button:focus {
outline: 1px solid var(--jp-brand-color1);
outline-offset: 4px;
-moz-outline-radius: 0px;
}
button.jp-Dialog-button:focus::-moz-focus-inner {
border: 0;
}
.jp-Dialog-header {
flex: 0 0 auto;
padding-bottom: 12px;
font-size: var(--jp-ui-font-size3);
font-weight: 400;
color: var(--jp-ui-font-color0);
}
.jp-Dialog-body {
display: flex;
flex-direction: column;
flex: 1 1 auto;
font-size: var(--jp-ui-font-size1);
background: var(--jp-layout-color1);
overflow: auto;
}
.jp-Dialog-footer {
display: flex;
flex-direction: row;
justify-content: flex-end;
flex: 0 0 auto;
margin-left: -12px;
margin-right: -12px;
padding: 12px;
}
.jp-Dialog-title {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.jp-Dialog-body>.jp-select-wrapper {
width: 100%;
}
.jp-Dialog-body>button {
padding: 0px 16px;
}
.jp-Dialog-body>label {
line-height: 1.4;
color: var(--jp-ui-font-color0);
}
.jp-Dialog-button.jp-mod-styled:not(:last-child) {
margin-right: 12px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2016, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-HoverBox {
position: fixed;
}
.jp-HoverBox.jp-mod-outofview {
display: none;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-IFrame {
width: 100%;
height: 100%;
}
.jp-IFrame>iframe {
border: none;
}
/*
When drag events occur, `p-mod-override-cursor` is added to the body.
Because iframes steal all cursor events, the following two rules are necessary
to suppress pointer events while resize drags are occurring. There may be a
better solution to this problem.
*/
body.lm-mod-override-cursor .jp-IFrame {
position: relative;
}
body.lm-mod-override-cursor .jp-IFrame:before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: transparent;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2016, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-MainAreaWidget> :focus {
outline: none;
}
/**
* google-material-color v1.2.6
* https://github.com/danlevan/google-material-color
*/
:root {
--md-red-50: #ffebee;
--md-red-100: #ffcdd2;
--md-red-200: #ef9a9a;
--md-red-300: #e57373;
--md-red-400: #ef5350;
--md-red-500: #f44336;
--md-red-600: #e53935;
--md-red-700: #d32f2f;
--md-red-800: #c62828;
--md-red-900: #b71c1c;
--md-red-A100: #ff8a80;
--md-red-A200: #ff5252;
--md-red-A400: #ff1744;
--md-red-A700: #d50000;
--md-pink-50: #fce4ec;
--md-pink-100: #f8bbd0;
--md-pink-200: #f48fb1;
--md-pink-300: #f06292;
--md-pink-400: #ec407a;
--md-pink-500: #e91e63;
--md-pink-600: #d81b60;
--md-pink-700: #c2185b;
--md-pink-800: #ad1457;
--md-pink-900: #880e4f;
--md-pink-A100: #ff80ab;
--md-pink-A200: #ff4081;
--md-pink-A400: #f50057;
--md-pink-A700: #c51162;
--md-purple-50: #f3e5f5;
--md-purple-100: #e1bee7;
--md-purple-200: #ce93d8;
--md-purple-300: #ba68c8;
--md-purple-400: #ab47bc;
--md-purple-500: #9c27b0;
--md-purple-600: #8e24aa;
--md-purple-700: #7b1fa2;
--md-purple-800: #6a1b9a;
--md-purple-900: #4a148c;
--md-purple-A100: #ea80fc;
--md-purple-A200: #e040fb;
--md-purple-A400: #d500f9;
--md-purple-A700: #aa00ff;
--md-deep-purple-50: #ede7f6;
--md-deep-purple-100: #d1c4e9;
--md-deep-purple-200: #b39ddb;
--md-deep-purple-300: #9575cd;
--md-deep-purple-400: #7e57c2;
--md-deep-purple-500: #673ab7;
--md-deep-purple-600: #5e35b1;
--md-deep-purple-700: #512da8;
--md-deep-purple-800: #4527a0;
--md-deep-purple-900: #311b92;
--md-deep-purple-A100: #b388ff;
--md-deep-purple-A200: #7c4dff;
--md-deep-purple-A400: #651fff;
--md-deep-purple-A700: #6200ea;
--md-indigo-50: #e8eaf6;
--md-indigo-100: #c5cae9;
--md-indigo-200: #9fa8da;
--md-indigo-300: #7986cb;
--md-indigo-400: #5c6bc0;
--md-indigo-500: #3f51b5;
--md-indigo-600: #3949ab;
--md-indigo-700: #303f9f;
--md-indigo-800: #283593;
--md-indigo-900: #1a237e;
--md-indigo-A100: #8c9eff;
--md-indigo-A200: #536dfe;
--md-indigo-A400: #3d5afe;
--md-indigo-A700: #304ffe;
--md-blue-50: #e3f2fd;
--md-blue-100: #bbdefb;
--md-blue-200: #90caf9;
--md-blue-300: #64b5f6;
--md-blue-400: #42a5f5;
--md-blue-500: #2196f3;
--md-blue-600: #1e88e5;
--md-blue-700: #1976d2;
--md-blue-800: #1565c0;
--md-blue-900: #0d47a1;
--md-blue-A100: #82b1ff;
--md-blue-A200: #448aff;
--md-blue-A400: #2979ff;
--md-blue-A700: #2962ff;
--md-light-blue-50: #e1f5fe;
--md-light-blue-100: #b3e5fc;
--md-light-blue-200: #81d4fa;
--md-light-blue-300: #4fc3f7;
--md-light-blue-400: #29b6f6;
--md-light-blue-500: #03a9f4;
--md-light-blue-600: #039be5;
--md-light-blue-700: #0288d1;
--md-light-blue-800: #0277bd;
--md-light-blue-900: #01579b;
--md-light-blue-A100: #80d8ff;
--md-light-blue-A200: #40c4ff;
--md-light-blue-A400: #00b0ff;
--md-light-blue-A700: #0091ea;
--md-cyan-50: #e0f7fa;
--md-cyan-100: #b2ebf2;
--md-cyan-200: #80deea;
--md-cyan-300: #4dd0e1;
--md-cyan-400: #26c6da;
--md-cyan-500: #00bcd4;
--md-cyan-600: #00acc1;
--md-cyan-700: #0097a7;
--md-cyan-800: #00838f;
--md-cyan-900: #006064;
--md-cyan-A100: #84ffff;
--md-cyan-A200: #18ffff;
--md-cyan-A400: #00e5ff;
--md-cyan-A700: #00b8d4;
--md-teal-50: #e0f2f1;
--md-teal-100: #b2dfdb;
--md-teal-200: #80cbc4;
--md-teal-300: #4db6ac;
--md-teal-400: #26a69a;
--md-teal-500: #009688;
--md-teal-600: #00897b;
--md-teal-700: #00796b;
--md-teal-800: #00695c;
--md-teal-900: #004d40;
--md-teal-A100: #a7ffeb;
--md-teal-A200: #64ffda;
--md-teal-A400: #1de9b6;
--md-teal-A700: #00bfa5;
--md-green-50: #e8f5e9;
--md-green-100: #c8e6c9;
--md-green-200: #a5d6a7;
--md-green-300: #81c784;
--md-green-400: #66bb6a;
--md-green-500: #4caf50;
--md-green-600: #43a047;
--md-green-700: #388e3c;
--md-green-800: #2e7d32;
--md-green-900: #1b5e20;
--md-green-A100: #b9f6ca;
--md-green-A200: #69f0ae;
--md-green-A400: #00e676;
--md-green-A700: #00c853;
--md-light-green-50: #f1f8e9;
--md-light-green-100: #dcedc8;
--md-light-green-200: #c5e1a5;
--md-light-green-300: #aed581;
--md-light-green-400: #9ccc65;
--md-light-green-500: #8bc34a;
--md-light-green-600: #7cb342;
--md-light-green-700: #689f38;
--md-light-green-800: #558b2f;
--md-light-green-900: #33691e;
--md-light-green-A100: #ccff90;
--md-light-green-A200: #b2ff59;
--md-light-green-A400: #76ff03;
--md-light-green-A700: #64dd17;
--md-lime-50: #f9fbe7;
--md-lime-100: #f0f4c3;
--md-lime-200: #e6ee9c;
--md-lime-300: #dce775;
--md-lime-400: #d4e157;
--md-lime-500: #cddc39;
--md-lime-600: #c0ca33;
--md-lime-700: #afb42b;
--md-lime-800: #9e9d24;
--md-lime-900: #827717;
--md-lime-A100: #f4ff81;
--md-lime-A200: #eeff41;
--md-lime-A400: #c6ff00;
--md-lime-A700: #aeea00;
--md-yellow-50: #fffde7;
--md-yellow-100: #fff9c4;
--md-yellow-200: #fff59d;
--md-yellow-300: #fff176;
--md-yellow-400: #ffee58;
--md-yellow-500: #ffeb3b;
--md-yellow-600: #fdd835;
--md-yellow-700: #fbc02d;
--md-yellow-800: #f9a825;
--md-yellow-900: #f57f17;
--md-yellow-A100: #ffff8d;
--md-yellow-A200: #ffff00;
--md-yellow-A400: #ffea00;
--md-yellow-A700: #ffd600;
--md-amber-50: #fff8e1;
--md-amber-100: #ffecb3;
--md-amber-200: #ffe082;
--md-amber-300: #ffd54f;
--md-amber-400: #ffca28;
--md-amber-500: #ffc107;
--md-amber-600: #ffb300;
--md-amber-700: #ffa000;
--md-amber-800: #ff8f00;
--md-amber-900: #ff6f00;
--md-amber-A100: #ffe57f;
--md-amber-A200: #ffd740;
--md-amber-A400: #ffc400;
--md-amber-A700: #ffab00;
--md-orange-50: #fff3e0;
--md-orange-100: #ffe0b2;
--md-orange-200: #ffcc80;
--md-orange-300: #ffb74d;
--md-orange-400: #ffa726;
--md-orange-500: #ff9800;
--md-orange-600: #fb8c00;
--md-orange-700: #f57c00;
--md-orange-800: #ef6c00;
--md-orange-900: #e65100;
--md-orange-A100: #ffd180;
--md-orange-A200: #ffab40;
--md-orange-A400: #ff9100;
--md-orange-A700: #ff6d00;
--md-deep-orange-50: #fbe9e7;
--md-deep-orange-100: #ffccbc;
--md-deep-orange-200: #ffab91;
--md-deep-orange-300: #ff8a65;
--md-deep-orange-400: #ff7043;
--md-deep-orange-500: #ff5722;
--md-deep-orange-600: #f4511e;
--md-deep-orange-700: #e64a19;
--md-deep-orange-800: #d84315;
--md-deep-orange-900: #bf360c;
--md-deep-orange-A100: #ff9e80;
--md-deep-orange-A200: #ff6e40;
--md-deep-orange-A400: #ff3d00;
--md-deep-orange-A700: #dd2c00;
--md-brown-50: #efebe9;
--md-brown-100: #d7ccc8;
--md-brown-200: #bcaaa4;
--md-brown-300: #a1887f;
--md-brown-400: #8d6e63;
--md-brown-500: #795548;
--md-brown-600: #6d4c41;
--md-brown-700: #5d4037;
--md-brown-800: #4e342e;
--md-brown-900: #3e2723;
--md-grey-50: #fafafa;
--md-grey-100: #f5f5f5;
--md-grey-200: #eeeeee;
--md-grey-300: #e0e0e0;
--md-grey-400: #bdbdbd;
--md-grey-500: #9e9e9e;
--md-grey-600: #757575;
--md-grey-700: #616161;
--md-grey-800: #424242;
--md-grey-900: #212121;
--md-blue-grey-50: #eceff1;
--md-blue-grey-100: #cfd8dc;
--md-blue-grey-200: #b0bec5;
--md-blue-grey-300: #90a4ae;
--md-blue-grey-400: #78909c;
--md-blue-grey-500: #607d8b;
--md-blue-grey-600: #546e7a;
--md-blue-grey-700: #455a64;
--md-blue-grey-800: #37474f;
--md-blue-grey-900: #263238;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2017, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-Spinner {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
z-index: 10;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: var(--jp-layout-color0);
outline: none;
}
.jp-SpinnerContent {
font-size: 10px;
margin: 50px auto;
text-indent: -9999em;
width: 3em;
height: 3em;
border-radius: 50%;
background: var(--jp-brand-color3);
background: linear-gradient(to right,
#f37626 10%,
rgba(255, 255, 255, 0) 42%);
position: relative;
animation: load3 1s infinite linear, fadeIn 1s;
}
.jp-SpinnerContent:before {
width: 50%;
height: 50%;
background: #f37626;
border-radius: 100% 0 0 0;
position: absolute;
top: 0;
left: 0;
content: '';
}
.jp-SpinnerContent:after {
background: var(--jp-layout-color0);
width: 75%;
height: 75%;
border-radius: 50%;
content: '';
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes load3 {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
button.jp-mod-styled {
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color0);
border: none;
box-sizing: border-box;
text-align: center;
line-height: 32px;
height: 32px;
padding: 0px 12px;
letter-spacing: 0.8px;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
input.jp-mod-styled {
background: var(--jp-input-background);
height: 28px;
box-sizing: border-box;
border: var(--jp-border-width) solid var(--jp-border-color1);
padding-left: 7px;
padding-right: 7px;
font-size: var(--jp-ui-font-size2);
color: var(--jp-ui-font-color0);
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
input.jp-mod-styled:focus {
border: var(--jp-border-width) solid var(--md-blue-500);
box-shadow: inset 0 0 4px var(--md-blue-300);
}
.jp-select-wrapper {
display: flex;
position: relative;
flex-direction: column;
padding: 1px;
background-color: var(--jp-layout-color1);
height: 28px;
box-sizing: border-box;
margin-bottom: 12px;
}
.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
box-shadow: var(--jp-input-box-shadow);
background-color: var(--jp-input-active-background);
}
select.jp-mod-styled:hover {
background-color: var(--jp-layout-color1);
cursor: pointer;
color: var(--jp-ui-font-color0);
background-color: var(--jp-input-hover-background);
box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.5);
}
select.jp-mod-styled {
flex: 1 1 auto;
height: 32px;
width: 100%;
font-size: var(--jp-ui-font-size2);
background: var(--jp-input-background);
color: var(--jp-ui-font-color0);
padding: 0 25px 0 8px;
border: var(--jp-border-width) solid var(--jp-input-border-color);
border-radius: 0px;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2016, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
:root {
--jp-private-toolbar-height: calc(28px + var(--jp-border-width));
/* leave 28px for content */
}
.jp-Toolbar {
color: var(--jp-ui-font-color1);
flex: 0 0 auto;
display: flex;
flex-direction: row;
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
box-shadow: var(--jp-toolbar-box-shadow);
background: var(--jp-toolbar-background);
min-height: var(--jp-toolbar-micro-height);
padding: 2px;
z-index: 1;
}
/* Toolbar items */
.jp-Toolbar>.jp-Toolbar-item.jp-Toolbar-spacer {
flex-grow: 1;
flex-shrink: 1;
}
.jp-Toolbar-item.jp-Toolbar-kernelStatus {
display: inline-block;
width: 32px;
background-repeat: no-repeat;
background-position: center;
background-size: 16px;
}
.jp-Toolbar>.jp-Toolbar-item {
flex: 0 0 auto;
display: flex;
padding-left: 1px;
padding-right: 1px;
font-size: var(--jp-ui-font-size1);
line-height: var(--jp-private-toolbar-height);
height: 100%;
}
/* Toolbar buttons */
/* This is the div we use to wrap the react component into a Widget */
div.jp-ToolbarButton {
color: transparent;
border: none;
box-sizing: border-box;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
padding: 0px;
margin: 0px;
}
button.jp-ToolbarButtonComponent {
background: var(--jp-layout-color1);
border: none;
box-sizing: border-box;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
padding: 0px 6px;
margin: 0px;
height: 24px;
border-radius: var(--jp-border-radius);
display: flex;
align-items: center;
text-align: center;
font-size: 14px;
min-width: unset;
min-height: unset;
}
button.jp-ToolbarButtonComponent:disabled {
opacity: 0.4;
}
button.jp-ToolbarButtonComponent span {
padding: 0px;
flex: 0 0 auto;
}
button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
font-size: var(--jp-ui-font-size1);
line-height: 100%;
padding-left: 2px;
color: var(--jp-ui-font-color1);
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
body.p-mod-override-cursor *,
/* </DEPRECATED> */
body.lm-mod-override-cursor * {
cursor: inherit !important;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2016, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-JSONEditor {
display: flex;
flex-direction: column;
width: 100%;
}
.jp-JSONEditor-host {
flex: 1 1 auto;
border: var(--jp-border-width) solid var(--jp-input-border-color);
border-radius: 0px;
background: var(--jp-layout-color0);
min-height: 50px;
padding: 1px;
}
.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
border-color: red;
outline-color: red;
}
.jp-JSONEditor-header {
display: flex;
flex: 1 0 auto;
padding: 0 0 0 12px;
}
.jp-JSONEditor-header label {
flex: 0 0 auto;
}
.jp-JSONEditor-commitButton {
height: 16px;
width: 16px;
background-size: 18px;
background-repeat: no-repeat;
background-position: center;
}
.jp-JSONEditor-host.jp-mod-focused {
background-color: var(--jp-input-active-background);
border: 1px solid var(--jp-input-active-border-color);
box-shadow: var(--jp-input-box-shadow);
}
.jp-Editor.jp-mod-dropTarget {
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
box-shadow: var(--jp-input-box-shadow);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* BASICS */
.CodeMirror {
/* Set height, width, borders, and global font properties here */
font-family: monospace;
height: 300px;
color: black;
direction: ltr;
}
/* PADDING */
.CodeMirror-lines {
padding: 4px 0;
/* Vertical padding around content */
}
.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
padding: 0 4px;
/* Horizontal padding of content */
}
.CodeMirror-scrollbar-filler,
.CodeMirror-gutter-filler {
background-color: white;
/* The little square between H and V scrollbars */
}
/* GUTTER */
.CodeMirror-gutters {
border-right: 1px solid #ddd;
background-color: #f7f7f7;
white-space: nowrap;
}
.CodeMirror-linenumbers {}
.CodeMirror-linenumber {
padding: 0 3px 0 5px;
min-width: 20px;
text-align: right;
color: #999;
white-space: nowrap;
}
.CodeMirror-guttermarker {
color: black;
}
.CodeMirror-guttermarker-subtle {
color: #999;
}
/* CURSOR */
.CodeMirror-cursor {
border-left: 1px solid black;
border-right: none;
width: 0;
}
/* Shown when moving in bi-directional text */
.CodeMirror div.CodeMirror-secondarycursor {
border-left: 1px solid silver;
}
.cm-fat-cursor .CodeMirror-cursor {
width: auto;
border: 0 !important;
background: #7e7;
}
.cm-fat-cursor div.CodeMirror-cursors {
z-index: 1;
}
.cm-fat-cursor-mark {
background-color: rgba(20, 255, 20, 0.5);
-webkit-animation: blink 1.06s steps(1) infinite;
-moz-animation: blink 1.06s steps(1) infinite;
animation: blink 1.06s steps(1) infinite;
}
.cm-animate-fat-cursor {
width: auto;
border: 0;
-webkit-animation: blink 1.06s steps(1) infinite;
-moz-animation: blink 1.06s steps(1) infinite;
animation: blink 1.06s steps(1) infinite;
background-color: #7e7;
}
@-moz-keyframes blink {
0% {}
50% {
background-color: transparent;
}
100% {}
}
@-webkit-keyframes blink {
0% {}
50% {
background-color: transparent;
}
100% {}
}
@keyframes blink {
0% {}
50% {
background-color: transparent;
}
100% {}
}
/* Can style cursor different in overwrite (non-insert) mode */
.CodeMirror-overwrite .CodeMirror-cursor {}
.cm-tab {
display: inline-block;
text-decoration: inherit;
}
.CodeMirror-rulers {
position: absolute;
left: 0;
right: 0;
top: -50px;
bottom: 0;
overflow: hidden;
}
.CodeMirror-ruler {
border-left: 1px solid #ccc;
top: 0;
bottom: 0;
position: absolute;
}
/* DEFAULT THEME */
.cm-s-default .cm-header {
color: blue;
}
.cm-s-default .cm-quote {
color: #090;
}
.cm-negative {
color: #d44;
}
.cm-positive {
color: #292;
}
.cm-header,
.cm-strong {
font-weight: bold;
}
.cm-em {
font-style: italic;
}
.cm-link {
text-decoration: underline;
}
.cm-strikethrough {
text-decoration: line-through;
}
.cm-s-default .cm-keyword {
color: #708;
}
.cm-s-default .cm-atom {
color: #219;
}
.cm-s-default .cm-number {
color: #164;
}
.cm-s-default .cm-def {
color: #00f;
}
.cm-s-default .cm-variable,
.cm-s-default .cm-punctuation,
.cm-s-default .cm-property,
.cm-s-default .cm-operator {}
.cm-s-default .cm-variable-2 {
color: #05a;
}
.cm-s-default .cm-variable-3,
.cm-s-default .cm-type {
color: #085;
}
.cm-s-default .cm-comment {
color: #a50;
}
.cm-s-default .cm-string {
color: #a11;
}
.cm-s-default .cm-string-2 {
color: #f50;
}
.cm-s-default .cm-meta {
color: #555;
}
.cm-s-default .cm-qualifier {
color: #555;
}
.cm-s-default .cm-builtin {
color: #30a;
}
.cm-s-default .cm-bracket {
color: #997;
}
.cm-s-default .cm-tag {
color: #170;
}
.cm-s-default .cm-attribute {
color: #00c;
}
.cm-s-default .cm-hr {
color: #999;
}
.cm-s-default .cm-link {
color: #00c;
}
.cm-s-default .cm-error {
color: #f00;
}
.cm-invalidchar {
color: #f00;
}
.CodeMirror-composing {
border-bottom: 2px solid;
}
/* Default styles for common addons */
div.CodeMirror span.CodeMirror-matchingbracket {
color: #0b0;
}
div.CodeMirror span.CodeMirror-nonmatchingbracket {
color: #a22;
}
.CodeMirror-matchingtag {
background: rgba(255, 150, 0, .3);
}
.CodeMirror-activeline-background {
background: #e8f2ff;
}
/* STOP */
/* The rest of this file contains styles related to the mechanics of
the editor. You probably shouldn't touch them. */
.CodeMirror {
position: relative;
overflow: hidden;
background: white;
}
.CodeMirror-scroll {
overflow: scroll !important;
/* Things will break if this is overridden */
/* 30px is the magic margin used to hide the element's real scrollbars */
/* See overflow: hidden in .CodeMirror */
margin-bottom: -30px;
margin-right: -30px;
padding-bottom: 30px;
height: 100%;
outline: none;
/* Prevent dragging from highlighting the element */
position: relative;
}
.CodeMirror-sizer {
position: relative;
border-right: 30px solid transparent;
}
/* The fake, visible scrollbars. Used to force redraw during scrolling
before actual scrolling happens, thus preventing shaking and
flickering artifacts. */
.CodeMirror-vscrollbar,
.CodeMirror-hscrollbar,
.CodeMirror-scrollbar-filler,
.CodeMirror-gutter-filler {
position: absolute;
z-index: 6;
display: none;
}
.CodeMirror-vscrollbar {
right: 0;
top: 0;
overflow-x: hidden;
overflow-y: scroll;
}
.CodeMirror-hscrollbar {
bottom: 0;
left: 0;
overflow-y: hidden;
overflow-x: scroll;
}
.CodeMirror-scrollbar-filler {
right: 0;
bottom: 0;
}
.CodeMirror-gutter-filler {
left: 0;
bottom: 0;
}
.CodeMirror-gutters {
position: absolute;
left: 0;
top: 0;
min-height: 100%;
z-index: 3;
}
.CodeMirror-gutter {
white-space: normal;
height: 100%;
display: inline-block;
vertical-align: top;
margin-bottom: -30px;
}
.CodeMirror-gutter-wrapper {
position: absolute;
z-index: 4;
background: none !important;
border: none !important;
}
.CodeMirror-gutter-background {
position: absolute;
top: 0;
bottom: 0;
z-index: 4;
}
.CodeMirror-gutter-elt {
position: absolute;
cursor: default;
z-index: 4;
}
.CodeMirror-gutter-wrapper ::selection {
background-color: transparent
}
.CodeMirror-gutter-wrapper ::-moz-selection {
background-color: transparent
}
.CodeMirror-lines {
cursor: text;
min-height: 1px;
/* prevents collapsing before first draw */
}
.CodeMirror pre.CodeMirror-line,
.CodeMirror pre.CodeMirror-line-like {
/* Reset some styles that the rest of the page might have set */
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
border-width: 0;
background: transparent;
font-family: inherit;
font-size: inherit;
margin: 0;
white-space: pre;
word-wrap: normal;
line-height: inherit;
color: inherit;
z-index: 2;
position: relative;
overflow: visible;
-webkit-tap-highlight-color: transparent;
-webkit-font-variant-ligatures: contextual;
font-variant-ligatures: contextual;
}
.CodeMirror-wrap pre.CodeMirror-line,
.CodeMirror-wrap pre.CodeMirror-line-like {
word-wrap: break-word;
white-space: pre-wrap;
word-break: normal;
}
.CodeMirror-linebackground {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 0;
}
.CodeMirror-linewidget {
position: relative;
z-index: 2;
padding: 0.1px;
/* Force widget margins to stay inside of the container */
}
.CodeMirror-widget {}
.CodeMirror-rtl pre {
direction: rtl;
}
.CodeMirror-code {
outline: none;
}
/* Force content-box sizing for the elements where we expect it */
.CodeMirror-scroll,
.CodeMirror-sizer,
.CodeMirror-gutter,
.CodeMirror-gutters,
.CodeMirror-linenumber {
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.CodeMirror-measure {
position: absolute;
width: 100%;
height: 0;
overflow: hidden;
visibility: hidden;
}
.CodeMirror-cursor {
position: absolute;
pointer-events: none;
}
.CodeMirror-measure pre {
position: static;
}
div.CodeMirror-cursors {
visibility: hidden;
position: relative;
z-index: 3;
}
div.CodeMirror-dragcursors {
visibility: visible;
}
.CodeMirror-focused div.CodeMirror-cursors {
visibility: visible;
}
.CodeMirror-selected {
background: #d9d9d9;
}
.CodeMirror-focused .CodeMirror-selected {
background: #d7d4f0;
}
.CodeMirror-crosshair {
cursor: crosshair;
}
.CodeMirror-line::selection,
.CodeMirror-line>span::selection,
.CodeMirror-line>span>span::selection {
background: #d7d4f0;
}
.CodeMirror-line::-moz-selection,
.CodeMirror-line>span::-moz-selection,
.CodeMirror-line>span>span::-moz-selection {
background: #d7d4f0;
}
.cm-searching {
background-color: #ffa;
background-color: rgba(255, 255, 0, .4);
}
/* Used to force a border model for a node */
.cm-force-border {
padding-right: .1px;
}
@media print {
/* Hide the cursor when printing */
.CodeMirror div.CodeMirror-cursors {
visibility: hidden;
}
}
/* See issue #2901 */
.cm-tab-wrap-hack:after {
content: '';
}
/* Help users use markselection to safely style text background */
span.CodeMirror-selectedtext {
background: none;
}
.CodeMirror-dialog {
position: absolute;
left: 0;
right: 0;
background: inherit;
z-index: 15;
padding: .1em .8em;
overflow: hidden;
color: inherit;
}
.CodeMirror-dialog-top {
border-bottom: 1px solid #eee;
top: 0;
}
.CodeMirror-dialog-bottom {
border-top: 1px solid #eee;
bottom: 0;
}
.CodeMirror-dialog input {
border: none;
outline: none;
background: transparent;
width: 20em;
color: inherit;
font-family: monospace;
}
.CodeMirror-dialog button {
font-size: 70%;
}
.CodeMirror-foldmarker {
color: blue;
text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;
font-family: arial;
line-height: .3;
cursor: pointer;
}
.CodeMirror-foldgutter {
width: .7em;
}
.CodeMirror-foldgutter-open,
.CodeMirror-foldgutter-folded {
cursor: pointer;
}
.CodeMirror-foldgutter-open:after {
content: "\25BE";
}
.CodeMirror-foldgutter-folded:after {
content: "\25B8";
}
/*
Name: material
Author: Mattia Astorino (http://github.com/equinusocio)
Website: https://material-theme.site/
*/
.cm-s-material.CodeMirror {
background-color: #263238;
color: #EEFFFF;
}
.cm-s-material .CodeMirror-gutters {
background: #263238;
color: #546E7A;
border: none;
}
.cm-s-material .CodeMirror-guttermarker,
.cm-s-material .CodeMirror-guttermarker-subtle,
.cm-s-material .CodeMirror-linenumber {
color: #546E7A;
}
.cm-s-material .CodeMirror-cursor {
border-left: 1px solid #FFCC00;
}
.cm-s-material div.CodeMirror-selected {
background: rgba(128, 203, 196, 0.2);
}
.cm-s-material.CodeMirror-focused div.CodeMirror-selected {
background: rgba(128, 203, 196, 0.2);
}
.cm-s-material .CodeMirror-line::selection,
.cm-s-material .CodeMirror-line>span::selection,
.cm-s-material .CodeMirror-line>span>span::selection {
background: rgba(128, 203, 196, 0.2);
}
.cm-s-material .CodeMirror-line::-moz-selection,
.cm-s-material .CodeMirror-line>span::-moz-selection,
.cm-s-material .CodeMirror-line>span>span::-moz-selection {
background: rgba(128, 203, 196, 0.2);
}
.cm-s-material .CodeMirror-activeline-background {
background: rgba(0, 0, 0, 0.5);
}
.cm-s-material .cm-keyword {
color: #C792EA;
}
.cm-s-material .cm-operator {
color: #89DDFF;
}
.cm-s-material .cm-variable-2 {
color: #EEFFFF;
}
.cm-s-material .cm-variable-3,
.cm-s-material .cm-type {
color: #f07178;
}
.cm-s-material .cm-builtin {
color: #FFCB6B;
}
.cm-s-material .cm-atom {
color: #F78C6C;
}
.cm-s-material .cm-number {
color: #FF5370;
}
.cm-s-material .cm-def {
color: #82AAFF;
}
.cm-s-material .cm-string {
color: #C3E88D;
}
.cm-s-material .cm-string-2 {
color: #f07178;
}
.cm-s-material .cm-comment {
color: #546E7A;
}
.cm-s-material .cm-variable {
color: #f07178;
}
.cm-s-material .cm-tag {
color: #FF5370;
}
.cm-s-material .cm-meta {
color: #FFCB6B;
}
.cm-s-material .cm-attribute {
color: #C792EA;
}
.cm-s-material .cm-property {
color: #C792EA;
}
.cm-s-material .cm-qualifier {
color: #DECB6B;
}
.cm-s-material .cm-variable-3,
.cm-s-material .cm-type {
color: #DECB6B;
}
.cm-s-material .cm-error {
color: rgba(255, 255, 255, 1.0);
background-color: #FF5370;
}
.cm-s-material .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
/**
* "
* Using Zenburn color palette from the Emacs Zenburn Theme
* https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el
*
* Also using parts of https://github.com/xavi/coderay-lighttable-theme
* "
* From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css
*/
.cm-s-zenburn .CodeMirror-gutters {
background: #3f3f3f !important;
}
.cm-s-zenburn .CodeMirror-foldgutter-open,
.CodeMirror-foldgutter-folded {
color: #999;
}
.cm-s-zenburn .CodeMirror-cursor {
border-left: 1px solid white;
}
.cm-s-zenburn {
background-color: #3f3f3f;
color: #dcdccc;
}
.cm-s-zenburn span.cm-builtin {
color: #dcdccc;
font-weight: bold;
}
.cm-s-zenburn span.cm-comment {
color: #7f9f7f;
}
.cm-s-zenburn span.cm-keyword {
color: #f0dfaf;
font-weight: bold;
}
.cm-s-zenburn span.cm-atom {
color: #bfebbf;
}
.cm-s-zenburn span.cm-def {
color: #dcdccc;
}
.cm-s-zenburn span.cm-variable {
color: #dfaf8f;
}
.cm-s-zenburn span.cm-variable-2 {
color: #dcdccc;
}
.cm-s-zenburn span.cm-string {
color: #cc9393;
}
.cm-s-zenburn span.cm-string-2 {
color: #cc9393;
}
.cm-s-zenburn span.cm-number {
color: #dcdccc;
}
.cm-s-zenburn span.cm-tag {
color: #93e0e3;
}
.cm-s-zenburn span.cm-property {
color: #dfaf8f;
}
.cm-s-zenburn span.cm-attribute {
color: #dfaf8f;
}
.cm-s-zenburn span.cm-qualifier {
color: #7cb8bb;
}
.cm-s-zenburn span.cm-meta {
color: #f0dfaf;
}
.cm-s-zenburn span.cm-header {
color: #f0efd0;
}
.cm-s-zenburn span.cm-operator {
color: #f0efd0;
}
.cm-s-zenburn span.CodeMirror-matchingbracket {
box-sizing: border-box;
background: transparent;
border-bottom: 1px solid;
}
.cm-s-zenburn span.CodeMirror-nonmatchingbracket {
border-bottom: 1px solid;
background: none;
}
.cm-s-zenburn .CodeMirror-activeline {
background: #000000;
}
.cm-s-zenburn .CodeMirror-activeline-background {
background: #000000;
}
.cm-s-zenburn div.CodeMirror-selected {
background: #545454;
}
.cm-s-zenburn .CodeMirror-focused div.CodeMirror-selected {
background: #4f4f4f;
}
.cm-s-abcdef.CodeMirror {
background: #0f0f0f;
color: #defdef;
}
.cm-s-abcdef div.CodeMirror-selected {
background: #515151;
}
.cm-s-abcdef .CodeMirror-line::selection,
.cm-s-abcdef .CodeMirror-line>span::selection,
.cm-s-abcdef .CodeMirror-line>span>span::selection {
background: rgba(56, 56, 56, 0.99);
}
.cm-s-abcdef .CodeMirror-line::-moz-selection,
.cm-s-abcdef .CodeMirror-line>span::-moz-selection,
.cm-s-abcdef .CodeMirror-line>span>span::-moz-selection {
background: rgba(56, 56, 56, 0.99);
}
.cm-s-abcdef .CodeMirror-gutters {
background: #555;
border-right: 2px solid #314151;
}
.cm-s-abcdef .CodeMirror-guttermarker {
color: #222;
}
.cm-s-abcdef .CodeMirror-guttermarker-subtle {
color: azure;
}
.cm-s-abcdef .CodeMirror-linenumber {
color: #FFFFFF;
}
.cm-s-abcdef .CodeMirror-cursor {
border-left: 1px solid #00FF00;
}
.cm-s-abcdef span.cm-keyword {
color: darkgoldenrod;
font-weight: bold;
}
.cm-s-abcdef span.cm-atom {
color: #77F;
}
.cm-s-abcdef span.cm-number {
color: violet;
}
.cm-s-abcdef span.cm-def {
color: #fffabc;
}
.cm-s-abcdef span.cm-variable {
color: #abcdef;
}
.cm-s-abcdef span.cm-variable-2 {
color: #cacbcc;
}
.cm-s-abcdef span.cm-variable-3,
.cm-s-abcdef span.cm-type {
color: #def;
}
.cm-s-abcdef span.cm-property {
color: #fedcba;
}
.cm-s-abcdef span.cm-operator {
color: #ff0;
}
.cm-s-abcdef span.cm-comment {
color: #7a7b7c;
font-style: italic;
}
.cm-s-abcdef span.cm-string {
color: #2b4;
}
.cm-s-abcdef span.cm-meta {
color: #C9F;
}
.cm-s-abcdef span.cm-qualifier {
color: #FFF700;
}
.cm-s-abcdef span.cm-builtin {
color: #30aabc;
}
.cm-s-abcdef span.cm-bracket {
color: #8a8a8a;
}
.cm-s-abcdef span.cm-tag {
color: #FFDD44;
}
.cm-s-abcdef span.cm-attribute {
color: #DDFF00;
}
.cm-s-abcdef span.cm-error {
color: #FF0000;
}
.cm-s-abcdef span.cm-header {
color: aquamarine;
font-weight: bold;
}
.cm-s-abcdef span.cm-link {
color: blueviolet;
}
.cm-s-abcdef .CodeMirror-activeline-background {
background: #314151;
}
/*
Name: Base16 Default Light
Author: Chris Kempson (http://chriskempson.com)
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
*/
.cm-s-base16-light.CodeMirror {
background: #f5f5f5;
color: #202020;
}
.cm-s-base16-light div.CodeMirror-selected {
background: #e0e0e0;
}
.cm-s-base16-light .CodeMirror-line::selection,
.cm-s-base16-light .CodeMirror-line>span::selection,
.cm-s-base16-light .CodeMirror-line>span>span::selection {
background: #e0e0e0;
}
.cm-s-base16-light .CodeMirror-line::-moz-selection,
.cm-s-base16-light .CodeMirror-line>span::-moz-selection,
.cm-s-base16-light .CodeMirror-line>span>span::-moz-selection {
background: #e0e0e0;
}
.cm-s-base16-light .CodeMirror-gutters {
background: #f5f5f5;
border-right: 0px;
}
.cm-s-base16-light .CodeMirror-guttermarker {
color: #ac4142;
}
.cm-s-base16-light .CodeMirror-guttermarker-subtle {
color: #b0b0b0;
}
.cm-s-base16-light .CodeMirror-linenumber {
color: #b0b0b0;
}
.cm-s-base16-light .CodeMirror-cursor {
border-left: 1px solid #505050;
}
.cm-s-base16-light span.cm-comment {
color: #8f5536;
}
.cm-s-base16-light span.cm-atom {
color: #aa759f;
}
.cm-s-base16-light span.cm-number {
color: #aa759f;
}
.cm-s-base16-light span.cm-property,
.cm-s-base16-light span.cm-attribute {
color: #90a959;
}
.cm-s-base16-light span.cm-keyword {
color: #ac4142;
}
.cm-s-base16-light span.cm-string {
color: #f4bf75;
}
.cm-s-base16-light span.cm-variable {
color: #90a959;
}
.cm-s-base16-light span.cm-variable-2 {
color: #6a9fb5;
}
.cm-s-base16-light span.cm-def {
color: #d28445;
}
.cm-s-base16-light span.cm-bracket {
color: #202020;
}
.cm-s-base16-light span.cm-tag {
color: #ac4142;
}
.cm-s-base16-light span.cm-link {
color: #aa759f;
}
.cm-s-base16-light span.cm-error {
background: #ac4142;
color: #505050;
}
.cm-s-base16-light .CodeMirror-activeline-background {
background: #DDDCDC;
}
.cm-s-base16-light .CodeMirror-matchingbracket {
color: #f5f5f5 !important;
background-color: #6A9FB5 !important
}
/*
Name: Base16 Default Dark
Author: Chris Kempson (http://chriskempson.com)
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
*/
.cm-s-base16-dark.CodeMirror {
background: #151515;
color: #e0e0e0;
}
.cm-s-base16-dark div.CodeMirror-selected {
background: #303030;
}
.cm-s-base16-dark .CodeMirror-line::selection,
.cm-s-base16-dark .CodeMirror-line>span::selection,
.cm-s-base16-dark .CodeMirror-line>span>span::selection {
background: rgba(48, 48, 48, .99);
}
.cm-s-base16-dark .CodeMirror-line::-moz-selection,
.cm-s-base16-dark .CodeMirror-line>span::-moz-selection,
.cm-s-base16-dark .CodeMirror-line>span>span::-moz-selection {
background: rgba(48, 48, 48, .99);
}
.cm-s-base16-dark .CodeMirror-gutters {
background: #151515;
border-right: 0px;
}
.cm-s-base16-dark .CodeMirror-guttermarker {
color: #ac4142;
}
.cm-s-base16-dark .CodeMirror-guttermarker-subtle {
color: #505050;
}
.cm-s-base16-dark .CodeMirror-linenumber {
color: #505050;
}
.cm-s-base16-dark .CodeMirror-cursor {
border-left: 1px solid #b0b0b0;
}
.cm-s-base16-dark span.cm-comment {
color: #8f5536;
}
.cm-s-base16-dark span.cm-atom {
color: #aa759f;
}
.cm-s-base16-dark span.cm-number {
color: #aa759f;
}
.cm-s-base16-dark span.cm-property,
.cm-s-base16-dark span.cm-attribute {
color: #90a959;
}
.cm-s-base16-dark span.cm-keyword {
color: #ac4142;
}
.cm-s-base16-dark span.cm-string {
color: #f4bf75;
}
.cm-s-base16-dark span.cm-variable {
color: #90a959;
}
.cm-s-base16-dark span.cm-variable-2 {
color: #6a9fb5;
}
.cm-s-base16-dark span.cm-def {
color: #d28445;
}
.cm-s-base16-dark span.cm-bracket {
color: #e0e0e0;
}
.cm-s-base16-dark span.cm-tag {
color: #ac4142;
}
.cm-s-base16-dark span.cm-link {
color: #aa759f;
}
.cm-s-base16-dark span.cm-error {
background: #ac4142;
color: #b0b0b0;
}
.cm-s-base16-dark .CodeMirror-activeline-background {
background: #202020;
}
.cm-s-base16-dark .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
/*
Name: dracula
Author: Michael Kaminsky (http://github.com/mkaminsky11)
Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)
*/
.cm-s-dracula.CodeMirror,
.cm-s-dracula .CodeMirror-gutters {
background-color: #282a36 !important;
color: #f8f8f2 !important;
border: none;
}
.cm-s-dracula .CodeMirror-gutters {
color: #282a36;
}
.cm-s-dracula .CodeMirror-cursor {
border-left: solid thin #f8f8f0;
}
.cm-s-dracula .CodeMirror-linenumber {
color: #6D8A88;
}
.cm-s-dracula .CodeMirror-selected {
background: rgba(255, 255, 255, 0.10);
}
.cm-s-dracula .CodeMirror-line::selection,
.cm-s-dracula .CodeMirror-line>span::selection,
.cm-s-dracula .CodeMirror-line>span>span::selection {
background: rgba(255, 255, 255, 0.10);
}
.cm-s-dracula .CodeMirror-line::-moz-selection,
.cm-s-dracula .CodeMirror-line>span::-moz-selection,
.cm-s-dracula .CodeMirror-line>span>span::-moz-selection {
background: rgba(255, 255, 255, 0.10);
}
.cm-s-dracula span.cm-comment {
color: #6272a4;
}
.cm-s-dracula span.cm-string,
.cm-s-dracula span.cm-string-2 {
color: #f1fa8c;
}
.cm-s-dracula span.cm-number {
color: #bd93f9;
}
.cm-s-dracula span.cm-variable {
color: #50fa7b;
}
.cm-s-dracula span.cm-variable-2 {
color: white;
}
.cm-s-dracula span.cm-def {
color: #50fa7b;
}
.cm-s-dracula span.cm-operator {
color: #ff79c6;
}
.cm-s-dracula span.cm-keyword {
color: #ff79c6;
}
.cm-s-dracula span.cm-atom {
color: #bd93f9;
}
.cm-s-dracula span.cm-meta {
color: #f8f8f2;
}
.cm-s-dracula span.cm-tag {
color: #ff79c6;
}
.cm-s-dracula span.cm-attribute {
color: #50fa7b;
}
.cm-s-dracula span.cm-qualifier {
color: #50fa7b;
}
.cm-s-dracula span.cm-property {
color: #66d9ef;
}
.cm-s-dracula span.cm-builtin {
color: #50fa7b;
}
.cm-s-dracula span.cm-variable-3,
.cm-s-dracula span.cm-type {
color: #ffb86c;
}
.cm-s-dracula .CodeMirror-activeline-background {
background: rgba(255, 255, 255, 0.1);
}
.cm-s-dracula .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
/*
Name: Hopscotch
Author: Jan T. Sott
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
*/
.cm-s-hopscotch.CodeMirror {
background: #322931;
color: #d5d3d5;
}
.cm-s-hopscotch div.CodeMirror-selected {
background: #433b42 !important;
}
.cm-s-hopscotch .CodeMirror-gutters {
background: #322931;
border-right: 0px;
}
.cm-s-hopscotch .CodeMirror-linenumber {
color: #797379;
}
.cm-s-hopscotch .CodeMirror-cursor {
border-left: 1px solid #989498 !important;
}
.cm-s-hopscotch span.cm-comment {
color: #b33508;
}
.cm-s-hopscotch span.cm-atom {
color: #c85e7c;
}
.cm-s-hopscotch span.cm-number {
color: #c85e7c;
}
.cm-s-hopscotch span.cm-property,
.cm-s-hopscotch span.cm-attribute {
color: #8fc13e;
}
.cm-s-hopscotch span.cm-keyword {
color: #dd464c;
}
.cm-s-hopscotch span.cm-string {
color: #fdcc59;
}
.cm-s-hopscotch span.cm-variable {
color: #8fc13e;
}
.cm-s-hopscotch span.cm-variable-2 {
color: #1290bf;
}
.cm-s-hopscotch span.cm-def {
color: #fd8b19;
}
.cm-s-hopscotch span.cm-error {
background: #dd464c;
color: #989498;
}
.cm-s-hopscotch span.cm-bracket {
color: #d5d3d5;
}
.cm-s-hopscotch span.cm-tag {
color: #dd464c;
}
.cm-s-hopscotch span.cm-link {
color: #c85e7c;
}
.cm-s-hopscotch .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
.cm-s-hopscotch .CodeMirror-activeline-background {
background: #302020;
}
/****************************************************************/
/* Based on mbonaci's Brackets mbo theme */
/* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */
/* Create your own: http://tmtheme-editor.herokuapp.com */
/****************************************************************/
.cm-s-mbo.CodeMirror {
background: #2c2c2c;
color: #ffffec;
}
.cm-s-mbo div.CodeMirror-selected {
background: #716C62;
}
.cm-s-mbo .CodeMirror-line::selection,
.cm-s-mbo .CodeMirror-line>span::selection,
.cm-s-mbo .CodeMirror-line>span>span::selection {
background: rgba(113, 108, 98, .99);
}
.cm-s-mbo .CodeMirror-line::-moz-selection,
.cm-s-mbo .CodeMirror-line>span::-moz-selection,
.cm-s-mbo .CodeMirror-line>span>span::-moz-selection {
background: rgba(113, 108, 98, .99);
}
.cm-s-mbo .CodeMirror-gutters {
background: #4e4e4e;
border-right: 0px;
}
.cm-s-mbo .CodeMirror-guttermarker {
color: white;
}
.cm-s-mbo .CodeMirror-guttermarker-subtle {
color: grey;
}
.cm-s-mbo .CodeMirror-linenumber {
color: #dadada;
}
.cm-s-mbo .CodeMirror-cursor {
border-left: 1px solid #ffffec;
}
.cm-s-mbo span.cm-comment {
color: #95958a;
}
.cm-s-mbo span.cm-atom {
color: #00a8c6;
}
.cm-s-mbo span.cm-number {
color: #00a8c6;
}
.cm-s-mbo span.cm-property,
.cm-s-mbo span.cm-attribute {
color: #9ddfe9;
}
.cm-s-mbo span.cm-keyword {
color: #ffb928;
}
.cm-s-mbo span.cm-string {
color: #ffcf6c;
}
.cm-s-mbo span.cm-string.cm-property {
color: #ffffec;
}
.cm-s-mbo span.cm-variable {
color: #ffffec;
}
.cm-s-mbo span.cm-variable-2 {
color: #00a8c6;
}
.cm-s-mbo span.cm-def {
color: #ffffec;
}
.cm-s-mbo span.cm-bracket {
color: #fffffc;
font-weight: bold;
}
.cm-s-mbo span.cm-tag {
color: #9ddfe9;
}
.cm-s-mbo span.cm-link {
color: #f54b07;
}
.cm-s-mbo span.cm-error {
border-bottom: #636363;
color: #ffffec;
}
.cm-s-mbo span.cm-qualifier {
color: #ffffec;
}
.cm-s-mbo .CodeMirror-activeline-background {
background: #494b41;
}
.cm-s-mbo .CodeMirror-matchingbracket {
color: #ffb928 !important;
}
.cm-s-mbo .CodeMirror-matchingtag {
background: rgba(255, 255, 255, .37);
}
/*
MDN-LIKE Theme - Mozilla
Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>
Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
GitHub: @peterkroon
The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation
*/
.cm-s-mdn-like.CodeMirror {
color: #999;
background-color: #fff;
}
.cm-s-mdn-like div.CodeMirror-selected {
background: #cfc;
}
.cm-s-mdn-like .CodeMirror-line::selection,
.cm-s-mdn-like .CodeMirror-line>span::selection,
.cm-s-mdn-like .CodeMirror-line>span>span::selection {
background: #cfc;
}
.cm-s-mdn-like .CodeMirror-line::-moz-selection,
.cm-s-mdn-like .CodeMirror-line>span::-moz-selection,
.cm-s-mdn-like .CodeMirror-line>span>span::-moz-selection {
background: #cfc;
}
.cm-s-mdn-like .CodeMirror-gutters {
background: #f8f8f8;
border-left: 6px solid rgba(0, 83, 159, 0.65);
color: #333;
}
.cm-s-mdn-like .CodeMirror-linenumber {
color: #aaa;
padding-left: 8px;
}
.cm-s-mdn-like .CodeMirror-cursor {
border-left: 2px solid #222;
}
.cm-s-mdn-like .cm-keyword {
color: #6262FF;
}
.cm-s-mdn-like .cm-atom {
color: #F90;
}
.cm-s-mdn-like .cm-number {
color: #ca7841;
}
.cm-s-mdn-like .cm-def {
color: #8DA6CE;
}
.cm-s-mdn-like span.cm-variable-2,
.cm-s-mdn-like span.cm-tag {
color: #690;
}
.cm-s-mdn-like span.cm-variable-3,
.cm-s-mdn-like span.cm-def,
.cm-s-mdn-like span.cm-type {
color: #07a;
}
.cm-s-mdn-like .cm-variable {
color: #07a;
}
.cm-s-mdn-like .cm-property {
color: #905;
}
.cm-s-mdn-like .cm-qualifier {
color: #690;
}
.cm-s-mdn-like .cm-operator {
color: #cda869;
}
.cm-s-mdn-like .cm-comment {
color: #777;
font-weight: normal;
}
.cm-s-mdn-like .cm-string {
color: #07a;
font-style: italic;
}
.cm-s-mdn-like .cm-string-2 {
color: #bd6b18;
}
/*?*/
.cm-s-mdn-like .cm-meta {
color: #000;
}
/*?*/
.cm-s-mdn-like .cm-builtin {
color: #9B7536;
}
/*?*/
.cm-s-mdn-like .cm-tag {
color: #997643;
}
.cm-s-mdn-like .cm-attribute {
color: #d6bb6d;
}
/*?*/
.cm-s-mdn-like .cm-header {
color: #FF6400;
}
.cm-s-mdn-like .cm-hr {
color: #AEAEAE;
}
.cm-s-mdn-like .cm-link {
color: #ad9361;
font-style: italic;
text-decoration: none;
}
.cm-s-mdn-like .cm-error {
border-bottom: 1px solid red;
}
div.cm-s-mdn-like .CodeMirror-activeline-background {
background: #efefff;
}
div.cm-s-mdn-like span.CodeMirror-matchingbracket {
outline: 1px solid grey;
color: inherit;
}
.cm-s-mdn-like.CodeMirror {
background-image: url(data:image/png;base64,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);
}
/*
Name: seti
Author: Michael Kaminsky (http://github.com/mkaminsky11)
Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax)
*/
.cm-s-seti.CodeMirror {
background-color: #151718 !important;
color: #CFD2D1 !important;
border: none;
}
.cm-s-seti .CodeMirror-gutters {
color: #404b53;
background-color: #0E1112;
border: none;
}
.cm-s-seti .CodeMirror-cursor {
border-left: solid thin #f8f8f0;
}
.cm-s-seti .CodeMirror-linenumber {
color: #6D8A88;
}
.cm-s-seti.CodeMirror-focused div.CodeMirror-selected {
background: rgba(255, 255, 255, 0.10);
}
.cm-s-seti .CodeMirror-line::selection,
.cm-s-seti .CodeMirror-line>span::selection,
.cm-s-seti .CodeMirror-line>span>span::selection {
background: rgba(255, 255, 255, 0.10);
}
.cm-s-seti .CodeMirror-line::-moz-selection,
.cm-s-seti .CodeMirror-line>span::-moz-selection,
.cm-s-seti .CodeMirror-line>span>span::-moz-selection {
background: rgba(255, 255, 255, 0.10);
}
.cm-s-seti span.cm-comment {
color: #41535b;
}
.cm-s-seti span.cm-string,
.cm-s-seti span.cm-string-2 {
color: #55b5db;
}
.cm-s-seti span.cm-number {
color: #cd3f45;
}
.cm-s-seti span.cm-variable {
color: #55b5db;
}
.cm-s-seti span.cm-variable-2 {
color: #a074c4;
}
.cm-s-seti span.cm-def {
color: #55b5db;
}
.cm-s-seti span.cm-keyword {
color: #ff79c6;
}
.cm-s-seti span.cm-operator {
color: #9fca56;
}
.cm-s-seti span.cm-keyword {
color: #e6cd69;
}
.cm-s-seti span.cm-atom {
color: #cd3f45;
}
.cm-s-seti span.cm-meta {
color: #55b5db;
}
.cm-s-seti span.cm-tag {
color: #55b5db;
}
.cm-s-seti span.cm-attribute {
color: #9fca56;
}
.cm-s-seti span.cm-qualifier {
color: #9fca56;
}
.cm-s-seti span.cm-property {
color: #a074c4;
}
.cm-s-seti span.cm-variable-3,
.cm-s-seti span.cm-type {
color: #9fca56;
}
.cm-s-seti span.cm-builtin {
color: #9fca56;
}
.cm-s-seti .CodeMirror-activeline-background {
background: #101213;
}
.cm-s-seti .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
/*
Solarized theme for code-mirror
http://ethanschoonover.com/solarized
*/
/*
Solarized color palette
http://ethanschoonover.com/solarized/img/solarized-palette.png
*/
.solarized.base03 {
color: #002b36;
}
.solarized.base02 {
color: #073642;
}
.solarized.base01 {
color: #586e75;
}
.solarized.base00 {
color: #657b83;
}
.solarized.base0 {
color: #839496;
}
.solarized.base1 {
color: #93a1a1;
}
.solarized.base2 {
color: #eee8d5;
}
.solarized.base3 {
color: #fdf6e3;
}
.solarized.solar-yellow {
color: #b58900;
}
.solarized.solar-orange {
color: #cb4b16;
}
.solarized.solar-red {
color: #dc322f;
}
.solarized.solar-magenta {
color: #d33682;
}
.solarized.solar-violet {
color: #6c71c4;
}
.solarized.solar-blue {
color: #268bd2;
}
.solarized.solar-cyan {
color: #2aa198;
}
.solarized.solar-green {
color: #859900;
}
/* Color scheme for code-mirror */
.cm-s-solarized {
line-height: 1.45em;
color-profile: sRGB;
rendering-intent: auto;
}
.cm-s-solarized.cm-s-dark {
color: #839496;
background-color: #002b36;
text-shadow: #002b36 0 1px;
}
.cm-s-solarized.cm-s-light {
background-color: #fdf6e3;
color: #657b83;
text-shadow: #eee8d5 0 1px;
}
.cm-s-solarized .CodeMirror-widget {
text-shadow: none;
}
.cm-s-solarized .cm-header {
color: #586e75;
}
.cm-s-solarized .cm-quote {
color: #93a1a1;
}
.cm-s-solarized .cm-keyword {
color: #cb4b16;
}
.cm-s-solarized .cm-atom {
color: #d33682;
}
.cm-s-solarized .cm-number {
color: #d33682;
}
.cm-s-solarized .cm-def {
color: #2aa198;
}
.cm-s-solarized .cm-variable {
color: #839496;
}
.cm-s-solarized .cm-variable-2 {
color: #b58900;
}
.cm-s-solarized .cm-variable-3,
.cm-s-solarized .cm-type {
color: #6c71c4;
}
.cm-s-solarized .cm-property {
color: #2aa198;
}
.cm-s-solarized .cm-operator {
color: #6c71c4;
}
.cm-s-solarized .cm-comment {
color: #586e75;
font-style: italic;
}
.cm-s-solarized .cm-string {
color: #859900;
}
.cm-s-solarized .cm-string-2 {
color: #b58900;
}
.cm-s-solarized .cm-meta {
color: #859900;
}
.cm-s-solarized .cm-qualifier {
color: #b58900;
}
.cm-s-solarized .cm-builtin {
color: #d33682;
}
.cm-s-solarized .cm-bracket {
color: #cb4b16;
}
.cm-s-solarized .CodeMirror-matchingbracket {
color: #859900;
}
.cm-s-solarized .CodeMirror-nonmatchingbracket {
color: #dc322f;
}
.cm-s-solarized .cm-tag {
color: #93a1a1;
}
.cm-s-solarized .cm-attribute {
color: #2aa198;
}
.cm-s-solarized .cm-hr {
color: transparent;
border-top: 1px solid #586e75;
display: block;
}
.cm-s-solarized .cm-link {
color: #93a1a1;
cursor: pointer;
}
.cm-s-solarized .cm-special {
color: #6c71c4;
}
.cm-s-solarized .cm-em {
color: #999;
text-decoration: underline;
text-decoration-style: dotted;
}
.cm-s-solarized .cm-error,
.cm-s-solarized .cm-invalidchar {
color: #586e75;
border-bottom: 1px dotted #dc322f;
}
.cm-s-solarized.cm-s-dark div.CodeMirror-selected {
background: #073642;
}
.cm-s-solarized.cm-s-dark.CodeMirror ::selection {
background: rgba(7, 54, 66, 0.99);
}
.cm-s-solarized.cm-s-dark .CodeMirror-line::-moz-selection,
.cm-s-dark .CodeMirror-line>span::-moz-selection,
.cm-s-dark .CodeMirror-line>span>span::-moz-selection {
background: rgba(7, 54, 66, 0.99);
}
.cm-s-solarized.cm-s-light div.CodeMirror-selected {
background: #eee8d5;
}
.cm-s-solarized.cm-s-light .CodeMirror-line::selection,
.cm-s-light .CodeMirror-line>span::selection,
.cm-s-light .CodeMirror-line>span>span::selection {
background: #eee8d5;
}
.cm-s-solarized.cm-s-light .CodeMirror-line::-moz-selection,
.cm-s-ligh .CodeMirror-line>span::-moz-selection,
.cm-s-ligh .CodeMirror-line>span>span::-moz-selection {
background: #eee8d5;
}
/* Editor styling */
/* Little shadow on the view-port of the buffer view */
.cm-s-solarized.CodeMirror {
-moz-box-shadow: inset 7px 0 12px -6px #000;
-webkit-box-shadow: inset 7px 0 12px -6px #000;
box-shadow: inset 7px 0 12px -6px #000;
}
/* Remove gutter border */
.cm-s-solarized .CodeMirror-gutters {
border-right: 0;
}
/* Gutter colors and line number styling based of color scheme (dark / light) */
/* Dark */
.cm-s-solarized.cm-s-dark .CodeMirror-gutters {
background-color: #073642;
}
.cm-s-solarized.cm-s-dark .CodeMirror-linenumber {
color: #586e75;
text-shadow: #021014 0 -1px;
}
/* Light */
.cm-s-solarized.cm-s-light .CodeMirror-gutters {
background-color: #eee8d5;
}
.cm-s-solarized.cm-s-light .CodeMirror-linenumber {
color: #839496;
}
/* Common */
.cm-s-solarized .CodeMirror-linenumber {
padding: 0 5px;
}
.cm-s-solarized .CodeMirror-guttermarker-subtle {
color: #586e75;
}
.cm-s-solarized.cm-s-dark .CodeMirror-guttermarker {
color: #ddd;
}
.cm-s-solarized.cm-s-light .CodeMirror-guttermarker {
color: #cb4b16;
}
.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text {
color: #586e75;
}
/* Cursor */
.cm-s-solarized .CodeMirror-cursor {
border-left: 1px solid #819090;
}
/* Fat cursor */
.cm-s-solarized.cm-s-light.cm-fat-cursor .CodeMirror-cursor {
background: #77ee77;
}
.cm-s-solarized.cm-s-light .cm-animate-fat-cursor {
background-color: #77ee77;
}
.cm-s-solarized.cm-s-dark.cm-fat-cursor .CodeMirror-cursor {
background: #586e75;
}
.cm-s-solarized.cm-s-dark .cm-animate-fat-cursor {
background-color: #586e75;
}
/* Active line */
.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background {
background: rgba(255, 255, 255, 0.06);
}
.cm-s-solarized.cm-s-light .CodeMirror-activeline-background {
background: rgba(0, 0, 0, 0.06);
}
.cm-s-the-matrix.CodeMirror {
background: #000000;
color: #00FF00;
}
.cm-s-the-matrix div.CodeMirror-selected {
background: #2D2D2D;
}
.cm-s-the-matrix .CodeMirror-line::selection,
.cm-s-the-matrix .CodeMirror-line>span::selection,
.cm-s-the-matrix .CodeMirror-line>span>span::selection {
background: rgba(45, 45, 45, 0.99);
}
.cm-s-the-matrix .CodeMirror-line::-moz-selection,
.cm-s-the-matrix .CodeMirror-line>span::-moz-selection,
.cm-s-the-matrix .CodeMirror-line>span>span::-moz-selection {
background: rgba(45, 45, 45, 0.99);
}
.cm-s-the-matrix .CodeMirror-gutters {
background: #060;
border-right: 2px solid #00FF00;
}
.cm-s-the-matrix .CodeMirror-guttermarker {
color: #0f0;
}
.cm-s-the-matrix .CodeMirror-guttermarker-subtle {
color: white;
}
.cm-s-the-matrix .CodeMirror-linenumber {
color: #FFFFFF;
}
.cm-s-the-matrix .CodeMirror-cursor {
border-left: 1px solid #00FF00;
}
.cm-s-the-matrix span.cm-keyword {
color: #008803;
font-weight: bold;
}
.cm-s-the-matrix span.cm-atom {
color: #3FF;
}
.cm-s-the-matrix span.cm-number {
color: #FFB94F;
}
.cm-s-the-matrix span.cm-def {
color: #99C;
}
.cm-s-the-matrix span.cm-variable {
color: #F6C;
}
.cm-s-the-matrix span.cm-variable-2 {
color: #C6F;
}
.cm-s-the-matrix span.cm-variable-3,
.cm-s-the-matrix span.cm-type {
color: #96F;
}
.cm-s-the-matrix span.cm-property {
color: #62FFA0;
}
.cm-s-the-matrix span.cm-operator {
color: #999;
}
.cm-s-the-matrix span.cm-comment {
color: #CCCCCC;
}
.cm-s-the-matrix span.cm-string {
color: #39C;
}
.cm-s-the-matrix span.cm-meta {
color: #C9F;
}
.cm-s-the-matrix span.cm-qualifier {
color: #FFF700;
}
.cm-s-the-matrix span.cm-builtin {
color: #30a;
}
.cm-s-the-matrix span.cm-bracket {
color: #cc7;
}
.cm-s-the-matrix span.cm-tag {
color: #FFBD40;
}
.cm-s-the-matrix span.cm-attribute {
color: #FFF700;
}
.cm-s-the-matrix span.cm-error {
color: #FF0000;
}
.cm-s-the-matrix .CodeMirror-activeline-background {
background: #040;
}
/*
Copyright (C) 2011 by MarkLogic Corporation
Author: Mike Brevoort <mike@brevoort.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
.cm-s-xq-light span.cm-keyword {
line-height: 1em;
font-weight: bold;
color: #5A5CAD;
}
.cm-s-xq-light span.cm-atom {
color: #6C8CD5;
}
.cm-s-xq-light span.cm-number {
color: #164;
}
.cm-s-xq-light span.cm-def {
text-decoration: underline;
}
.cm-s-xq-light span.cm-variable {
color: black;
}
.cm-s-xq-light span.cm-variable-2 {
color: black;
}
.cm-s-xq-light span.cm-variable-3,
.cm-s-xq-light span.cm-type {
color: black;
}
.cm-s-xq-light span.cm-property {}
.cm-s-xq-light span.cm-operator {}
.cm-s-xq-light span.cm-comment {
color: #0080FF;
font-style: italic;
}
.cm-s-xq-light span.cm-string {
color: red;
}
.cm-s-xq-light span.cm-meta {
color: yellow;
}
.cm-s-xq-light span.cm-qualifier {
color: grey;
}
.cm-s-xq-light span.cm-builtin {
color: #7EA656;
}
.cm-s-xq-light span.cm-bracket {
color: #cc7;
}
.cm-s-xq-light span.cm-tag {
color: #3F7F7F;
}
.cm-s-xq-light span.cm-attribute {
color: #7F007F;
}
.cm-s-xq-light span.cm-error {
color: #f00;
}
.cm-s-xq-light .CodeMirror-activeline-background {
background: #e8f2ff;
}
.cm-s-xq-light .CodeMirror-matchingbracket {
outline: 1px solid grey;
color: black !important;
background: yellow;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.CodeMirror {
line-height: var(--jp-code-line-height);
font-size: var(--jp-code-font-size);
font-family: var(--jp-code-font-family);
border: 0;
border-radius: 0;
height: auto;
/* Changed to auto to autogrow */
}
.CodeMirror pre {
padding: 0 var(--jp-code-padding);
}
.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-dialog {
background-color: var(--jp-layout-color0);
color: var(--jp-content-font-color1);
}
/* This causes https://github.com/jupyter/jupyterlab/issues/522 */
/* May not cause it not because we changed it! */
.CodeMirror-lines {
padding: var(--jp-code-padding) 0;
}
.CodeMirror-linenumber {
padding: 0 8px;
}
.jp-CodeMirrorEditor-static {
margin: var(--jp-code-padding);
}
.jp-CodeMirrorEditor,
.jp-CodeMirrorEditor-static {
cursor: text;
}
.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor {
border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color);
}
/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
@media screen and (min-width: 2138px) and (max-width: 4319px) {
.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor {
border-left: var(--jp-code-cursor-width1) solid var(--jp-editor-cursor-color);
}
}
/* When zoomed out less than 33% */
@media screen and (min-width: 4320px) {
.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor {
border-left: var(--jp-code-cursor-width2) solid var(--jp-editor-cursor-color);
}
}
.CodeMirror.jp-mod-readOnly .CodeMirror-cursor {
display: none;
}
.CodeMirror-gutters {
border-right: 1px solid var(--jp-border-color2);
background-color: var(--jp-layout-color0);
}
.jp-CollaboratorCursor {
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: none;
border-bottom: 3px solid;
background-clip: content-box;
margin-left: -5px;
margin-right: -5px;
}
.CodeMirror-selectedtext.cm-searching {
background-color: var(--jp-search-selected-match-background-color) !important;
color: var(--jp-search-selected-match-color) !important;
}
.cm-searching {
background-color: var(--jp-search-unselected-match-background-color) !important;
color: var(--jp-search-unselected-match-color) !important;
}
.CodeMirror-focused .CodeMirror-selected {
background-color: var(--jp-editor-selected-focused-background);
}
.CodeMirror-selected {
background-color: var(--jp-editor-selected-background);
}
.jp-CollaboratorCursor-hover {
position: absolute;
z-index: 1;
transform: translateX(-50%);
color: white;
border-radius: 3px;
padding-left: 4px;
padding-right: 4px;
padding-top: 1px;
padding-bottom: 1px;
text-align: center;
font-size: var(--jp-ui-font-size1);
white-space: nowrap;
}
.jp-CodeMirror-ruler {
border-left: 1px dashed var(--jp-border-color2);
}
/**
* Here is our jupyter theme for CodeMirror syntax highlighting
* This is used in our marked.js syntax highlighting and CodeMirror itself
* The string "jupyter" is set in ../codemirror/widget.DEFAULT_CODEMIRROR_THEME
* This came from the classic notebook, which came form highlight.js/GitHub
*/
/**
* CodeMirror themes are handling the background/color in this way. This works
* fine for CodeMirror editors outside the notebook, but the notebook styles
* these things differently.
*/
.CodeMirror.cm-s-jupyter {
background: var(--jp-layout-color0);
color: var(--jp-content-font-color1);
}
/* In the notebook, we want this styling to be handled by its container */
.jp-CodeConsole .CodeMirror.cm-s-jupyter,
.jp-Notebook .CodeMirror.cm-s-jupyter {
background: transparent;
}
.cm-s-jupyter .CodeMirror-cursor {
border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color);
}
.cm-s-jupyter span.cm-keyword {
color: var(--jp-mirror-editor-keyword-color);
font-weight: bold;
}
.cm-s-jupyter span.cm-atom {
color: var(--jp-mirror-editor-atom-color);
}
.cm-s-jupyter span.cm-number {
color: var(--jp-mirror-editor-number-color);
}
.cm-s-jupyter span.cm-def {
color: var(--jp-mirror-editor-def-color);
}
.cm-s-jupyter span.cm-variable {
color: var(--jp-mirror-editor-variable-color);
}
.cm-s-jupyter span.cm-variable-2 {
color: var(--jp-mirror-editor-variable-2-color);
}
.cm-s-jupyter span.cm-variable-3 {
color: var(--jp-mirror-editor-variable-3-color);
}
.cm-s-jupyter span.cm-punctuation {
color: var(--jp-mirror-editor-punctuation-color);
}
.cm-s-jupyter span.cm-property {
color: var(--jp-mirror-editor-property-color);
}
.cm-s-jupyter span.cm-operator {
color: var(--jp-mirror-editor-operator-color);
font-weight: bold;
}
.cm-s-jupyter span.cm-comment {
color: var(--jp-mirror-editor-comment-color);
font-style: italic;
}
.cm-s-jupyter span.cm-string {
color: var(--jp-mirror-editor-string-color);
}
.cm-s-jupyter span.cm-string-2 {
color: var(--jp-mirror-editor-string-2-color);
}
.cm-s-jupyter span.cm-meta {
color: var(--jp-mirror-editor-meta-color);
}
.cm-s-jupyter span.cm-qualifier {
color: var(--jp-mirror-editor-qualifier-color);
}
.cm-s-jupyter span.cm-builtin {
color: var(--jp-mirror-editor-builtin-color);
}
.cm-s-jupyter span.cm-bracket {
color: var(--jp-mirror-editor-bracket-color);
}
.cm-s-jupyter span.cm-tag {
color: var(--jp-mirror-editor-tag-color);
}
.cm-s-jupyter span.cm-attribute {
color: var(--jp-mirror-editor-attribute-color);
}
.cm-s-jupyter span.cm-header {
color: var(--jp-mirror-editor-header-color);
}
.cm-s-jupyter span.cm-quote {
color: var(--jp-mirror-editor-quote-color);
}
.cm-s-jupyter span.cm-link {
color: var(--jp-mirror-editor-link-color);
}
.cm-s-jupyter span.cm-error {
color: var(--jp-mirror-editor-error-color);
}
.cm-s-jupyter span.cm-hr {
color: #999;
}
.cm-s-jupyter span.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
.cm-s-jupyter .CodeMirror-activeline-background,
.cm-s-jupyter .CodeMirror-gutter {
background-color: var(--jp-layout-color2);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| RenderedText
|----------------------------------------------------------------------------*/
.jp-RenderedText {
text-align: left;
padding-left: var(--jp-code-padding);
line-height: var(--jp-code-line-height);
font-family: var(--jp-code-font-family);
}
.jp-RenderedText pre,
.jp-RenderedJavaScript pre,
.jp-RenderedHTMLCommon pre {
color: var(--jp-content-font-color1);
font-size: var(--jp-code-font-size);
border: none;
margin: 0px;
padding: 0px;
line-height: normal;
}
.jp-RenderedText pre a:link {
text-decoration: none;
color: var(--jp-content-link-color);
}
.jp-RenderedText pre a:hover {
text-decoration: underline;
color: var(--jp-content-link-color);
}
.jp-RenderedText pre a:visited {
text-decoration: none;
color: var(--jp-content-link-color);
}
/* console foregrounds and backgrounds */
.jp-RenderedText pre .ansi-black-fg {
color: #3e424d;
}
.jp-RenderedText pre .ansi-red-fg {
color: #e75c58;
}
.jp-RenderedText pre .ansi-green-fg {
color: #00a250;
}
.jp-RenderedText pre .ansi-yellow-fg {
color: #ddb62b;
}
.jp-RenderedText pre .ansi-blue-fg {
color: #208ffb;
}
.jp-RenderedText pre .ansi-magenta-fg {
color: #d160c4;
}
.jp-RenderedText pre .ansi-cyan-fg {
color: #60c6c8;
}
.jp-RenderedText pre .ansi-white-fg {
color: #c5c1b4;
}
.jp-RenderedText pre .ansi-black-bg {
background-color: #3e424d;
}
.jp-RenderedText pre .ansi-red-bg {
background-color: #e75c58;
}
.jp-RenderedText pre .ansi-green-bg {
background-color: #00a250;
}
.jp-RenderedText pre .ansi-yellow-bg {
background-color: #ddb62b;
}
.jp-RenderedText pre .ansi-blue-bg {
background-color: #208ffb;
}
.jp-RenderedText pre .ansi-magenta-bg {
background-color: #d160c4;
}
.jp-RenderedText pre .ansi-cyan-bg {
background-color: #60c6c8;
}
.jp-RenderedText pre .ansi-white-bg {
background-color: #c5c1b4;
}
.jp-RenderedText pre .ansi-black-intense-fg {
color: #282c36;
}
.jp-RenderedText pre .ansi-red-intense-fg {
color: #b22b31;
}
.jp-RenderedText pre .ansi-green-intense-fg {
color: #007427;
}
.jp-RenderedText pre .ansi-yellow-intense-fg {
color: #b27d12;
}
.jp-RenderedText pre .ansi-blue-intense-fg {
color: #0065ca;
}
.jp-RenderedText pre .ansi-magenta-intense-fg {
color: #a03196;
}
.jp-RenderedText pre .ansi-cyan-intense-fg {
color: #258f8f;
}
.jp-RenderedText pre .ansi-white-intense-fg {
color: #a1a6b2;
}
.jp-RenderedText pre .ansi-black-intense-bg {
background-color: #282c36;
}
.jp-RenderedText pre .ansi-red-intense-bg {
background-color: #b22b31;
}
.jp-RenderedText pre .ansi-green-intense-bg {
background-color: #007427;
}
.jp-RenderedText pre .ansi-yellow-intense-bg {
background-color: #b27d12;
}
.jp-RenderedText pre .ansi-blue-intense-bg {
background-color: #0065ca;
}
.jp-RenderedText pre .ansi-magenta-intense-bg {
background-color: #a03196;
}
.jp-RenderedText pre .ansi-cyan-intense-bg {
background-color: #258f8f;
}
.jp-RenderedText pre .ansi-white-intense-bg {
background-color: #a1a6b2;
}
.jp-RenderedText pre .ansi-default-inverse-fg {
color: var(--jp-ui-inverse-font-color0);
}
.jp-RenderedText pre .ansi-default-inverse-bg {
background-color: var(--jp-inverse-layout-color0);
}
.jp-RenderedText pre .ansi-bold {
font-weight: bold;
}
.jp-RenderedText pre .ansi-underline {
text-decoration: underline;
}
.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
background: var(--jp-rendermime-error-background);
padding-top: var(--jp-code-padding);
}
/*-----------------------------------------------------------------------------
| RenderedLatex
|----------------------------------------------------------------------------*/
.jp-RenderedLatex {
color: var(--jp-content-font-color1);
font-size: var(--jp-content-font-size1);
line-height: var(--jp-content-line-height);
}
/* Left-justify outputs.*/
.jp-OutputArea-output.jp-RenderedLatex {
padding: var(--jp-code-padding);
text-align: left;
}
/*-----------------------------------------------------------------------------
| RenderedHTML
|----------------------------------------------------------------------------*/
.jp-RenderedHTMLCommon {
color: var(--jp-content-font-color1);
font-family: var(--jp-content-font-family);
font-size: var(--jp-content-font-size1);
line-height: var(--jp-content-line-height);
/* Give a bit more R padding on Markdown text to keep line lengths reasonable */
padding-right: 20px;
}
.jp-RenderedHTMLCommon em {
font-style: italic;
}
.jp-RenderedHTMLCommon strong {
font-weight: bold;
}
.jp-RenderedHTMLCommon u {
text-decoration: underline;
}
.jp-RenderedHTMLCommon a:link {
text-decoration: none;
color: var(--jp-content-link-color);
}
.jp-RenderedHTMLCommon a:hover {
text-decoration: underline;
color: var(--jp-content-link-color);
}
.jp-RenderedHTMLCommon a:visited {
text-decoration: none;
color: var(--jp-content-link-color);
}
/* Headings */
.jp-RenderedHTMLCommon h1,
.jp-RenderedHTMLCommon h2,
.jp-RenderedHTMLCommon h3,
.jp-RenderedHTMLCommon h4,
.jp-RenderedHTMLCommon h5,
.jp-RenderedHTMLCommon h6 {
line-height: var(--jp-content-heading-line-height);
font-weight: var(--jp-content-heading-font-weight);
font-style: normal;
margin: var(--jp-content-heading-margin-top) 0 var(--jp-content-heading-margin-bottom) 0;
}
.jp-RenderedHTMLCommon h1:first-child,
.jp-RenderedHTMLCommon h2:first-child,
.jp-RenderedHTMLCommon h3:first-child,
.jp-RenderedHTMLCommon h4:first-child,
.jp-RenderedHTMLCommon h5:first-child,
.jp-RenderedHTMLCommon h6:first-child {
margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
}
.jp-RenderedHTMLCommon h1:last-child,
.jp-RenderedHTMLCommon h2:last-child,
.jp-RenderedHTMLCommon h3:last-child,
.jp-RenderedHTMLCommon h4:last-child,
.jp-RenderedHTMLCommon h5:last-child,
.jp-RenderedHTMLCommon h6:last-child {
margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
}
.jp-RenderedHTMLCommon h1 {
font-size: var(--jp-content-font-size5);
}
.jp-RenderedHTMLCommon h2 {
font-size: var(--jp-content-font-size4);
}
.jp-RenderedHTMLCommon h3 {
font-size: var(--jp-content-font-size3);
}
.jp-RenderedHTMLCommon h4 {
font-size: var(--jp-content-font-size2);
}
.jp-RenderedHTMLCommon h5 {
font-size: var(--jp-content-font-size1);
}
.jp-RenderedHTMLCommon h6 {
font-size: var(--jp-content-font-size0);
}
/* Lists */
.jp-RenderedHTMLCommon ul:not(.list-inline),
.jp-RenderedHTMLCommon ol:not(.list-inline) {
padding-left: 2em;
}
.jp-RenderedHTMLCommon ul {
list-style: disc;
}
.jp-RenderedHTMLCommon ul ul {
list-style: square;
}
.jp-RenderedHTMLCommon ul ul ul {
list-style: circle;
}
.jp-RenderedHTMLCommon ol {
list-style: decimal;
}
.jp-RenderedHTMLCommon ol ol {
list-style: upper-alpha;
}
.jp-RenderedHTMLCommon ol ol ol {
list-style: lower-alpha;
}
.jp-RenderedHTMLCommon ol ol ol ol {
list-style: lower-roman;
}
.jp-RenderedHTMLCommon ol ol ol ol ol {
list-style: decimal;
}
.jp-RenderedHTMLCommon ol,
.jp-RenderedHTMLCommon ul {
margin-bottom: 1em;
}
.jp-RenderedHTMLCommon ul ul,
.jp-RenderedHTMLCommon ul ol,
.jp-RenderedHTMLCommon ol ul,
.jp-RenderedHTMLCommon ol ol {
margin-bottom: 0em;
}
.jp-RenderedHTMLCommon hr {
color: var(--jp-border-color2);
background-color: var(--jp-border-color1);
margin-top: 1em;
margin-bottom: 1em;
}
.jp-RenderedHTMLCommon>pre {
margin: 1.5em 2em;
}
.jp-RenderedHTMLCommon pre,
.jp-RenderedHTMLCommon code {
border: 0;
background-color: var(--jp-layout-color0);
color: var(--jp-content-font-color1);
font-family: var(--jp-code-font-family);
font-size: inherit;
line-height: var(--jp-code-line-height);
padding: 0;
white-space: pre-wrap;
}
.jp-RenderedHTMLCommon :not(pre)>code {
background-color: var(--jp-layout-color2);
padding: 1px 5px;
}
/* Tables */
.jp-RenderedHTMLCommon table {
border-collapse: collapse;
border-spacing: 0;
border: none;
color: var(--jp-ui-font-color1);
font-size: 12px;
table-layout: fixed;
margin-left: auto;
margin-right: auto;
}
.jp-RenderedHTMLCommon thead {
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
vertical-align: bottom;
}
.jp-RenderedHTMLCommon td,
.jp-RenderedHTMLCommon th,
.jp-RenderedHTMLCommon tr {
vertical-align: middle;
padding: 0.5em 0.5em;
line-height: normal;
white-space: normal;
max-width: none;
border: none;
}
.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
max-width: none;
}
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
text-align: right;
}
.jp-RenderedHTMLCommon th {
font-weight: bold;
}
.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
background: var(--jp-layout-color0);
}
.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
background: var(--jp-rendermime-table-row-background);
}
.jp-RenderedHTMLCommon tbody tr:hover {
background: var(--jp-rendermime-table-row-hover-background);
}
.jp-RenderedHTMLCommon table {
margin-bottom: 1em;
}
.jp-RenderedHTMLCommon p {
text-align: left;
margin: 0px;
}
.jp-RenderedHTMLCommon p {
margin-bottom: 1em;
}
.jp-RenderedHTMLCommon img {
-moz-force-broken-image-icon: 1;
}
/* Restrict to direct children as other images could be nested in other content. */
.jp-RenderedHTMLCommon>img {
display: block;
margin-left: 0;
margin-right: 0;
margin-bottom: 1em;
}
/* Change color behind transparent images if they need it... */
[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
background-color: var(--jp-inverse-layout-color1);
}
[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
background-color: var(--jp-inverse-layout-color1);
}
/* ...or leave it untouched if they don't */
[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-dark-background {}
[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-light-background {}
.jp-RenderedHTMLCommon img,
.jp-RenderedImage img,
.jp-RenderedHTMLCommon svg,
.jp-RenderedSVG svg {
max-width: 100%;
height: auto;
}
.jp-RenderedHTMLCommon img.jp-mod-unconfined,
.jp-RenderedImage img.jp-mod-unconfined,
.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
.jp-RenderedSVG svg.jp-mod-unconfined {
max-width: none;
}
.jp-RenderedHTMLCommon .alert {
padding: var(--jp-notebook-padding);
border: var(--jp-border-width) solid transparent;
border-radius: var(--jp-border-radius);
margin-bottom: 1em;
}
.jp-RenderedHTMLCommon .alert-info {
color: var(--jp-info-color0);
background-color: var(--jp-info-color3);
border-color: var(--jp-info-color2);
}
.jp-RenderedHTMLCommon .alert-info hr {
border-color: var(--jp-info-color3);
}
.jp-RenderedHTMLCommon .alert-info>p:last-child,
.jp-RenderedHTMLCommon .alert-info>ul:last-child {
margin-bottom: 0;
}
.jp-RenderedHTMLCommon .alert-warning {
color: var(--jp-warn-color0);
background-color: var(--jp-warn-color3);
border-color: var(--jp-warn-color2);
}
.jp-RenderedHTMLCommon .alert-warning hr {
border-color: var(--jp-warn-color3);
}
.jp-RenderedHTMLCommon .alert-warning>p:last-child,
.jp-RenderedHTMLCommon .alert-warning>ul:last-child {
margin-bottom: 0;
}
.jp-RenderedHTMLCommon .alert-success {
color: var(--jp-success-color0);
background-color: var(--jp-success-color3);
border-color: var(--jp-success-color2);
}
.jp-RenderedHTMLCommon .alert-success hr {
border-color: var(--jp-success-color3);
}
.jp-RenderedHTMLCommon .alert-success>p:last-child,
.jp-RenderedHTMLCommon .alert-success>ul:last-child {
margin-bottom: 0;
}
.jp-RenderedHTMLCommon .alert-danger {
color: var(--jp-error-color0);
background-color: var(--jp-error-color3);
border-color: var(--jp-error-color2);
}
.jp-RenderedHTMLCommon .alert-danger hr {
border-color: var(--jp-error-color3);
}
.jp-RenderedHTMLCommon .alert-danger>p:last-child,
.jp-RenderedHTMLCommon .alert-danger>ul:last-child {
margin-bottom: 0;
}
.jp-RenderedHTMLCommon blockquote {
margin: 1em 2em;
padding: 0 1em;
border-left: 5px solid var(--jp-border-color2);
}
a.jp-InternalAnchorLink {
visibility: hidden;
margin-left: 8px;
color: var(--md-blue-800);
}
h1:hover .jp-InternalAnchorLink,
h2:hover .jp-InternalAnchorLink,
h3:hover .jp-InternalAnchorLink,
h4:hover .jp-InternalAnchorLink,
h5:hover .jp-InternalAnchorLink,
h6:hover .jp-InternalAnchorLink {
visibility: visible;
}
.jp-RenderedHTMLCommon kbd {
background-color: var(--jp-rendermime-table-row-background);
border: 1px solid var(--jp-border-color0);
border-bottom-color: var(--jp-border-color2);
border-radius: 3px;
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
display: inline-block;
font-size: 0.8em;
line-height: 1em;
padding: 0.2em 0.5em;
}
/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
* At the bottom of cells this is a bit too much as there is also spacing
* between cells. Going all the way to 0 gets too tight between markdown and
* code cells.
*/
.jp-RenderedHTMLCommon>*:last-child {
margin-bottom: 0.5em;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-MimeDocument {
outline: none;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Variables
|----------------------------------------------------------------------------*/
:root {
--jp-private-filebrowser-button-height: 28px;
--jp-private-filebrowser-button-width: 48px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-FileBrowser {
display: flex;
flex-direction: column;
color: var(--jp-ui-font-color1);
background: var(--jp-layout-color1);
/* This is needed so that all font sizing of children done in ems is
* relative to this base size */
font-size: var(--jp-ui-font-size1);
}
.jp-FileBrowser-toolbar.jp-Toolbar {
border-bottom: none;
height: auto;
margin: var(--jp-toolbar-header-margin);
box-shadow: none;
}
.jp-BreadCrumbs {
flex: 0 0 auto;
margin: 4px 12px;
}
.jp-BreadCrumbs-item {
margin: 0px 2px;
padding: 0px 2px;
border-radius: var(--jp-border-radius);
cursor: pointer;
}
.jp-BreadCrumbs-item:hover {
background-color: var(--jp-layout-color2);
}
.jp-BreadCrumbs-item:first-child {
margin-left: 0px;
}
.jp-BreadCrumbs-item.jp-mod-dropTarget {
background-color: var(--jp-brand-color2);
opacity: 0.7;
}
/*-----------------------------------------------------------------------------
| Buttons
|----------------------------------------------------------------------------*/
.jp-FileBrowser-toolbar.jp-Toolbar {
padding: 0px;
}
.jp-FileBrowser-toolbar.jp-Toolbar {
justify-content: space-evenly;
}
.jp-FileBrowser-toolbar.jp-Toolbar .jp-Toolbar-item {
flex: 1;
}
.jp-FileBrowser-toolbar.jp-Toolbar .jp-ToolbarButtonComponent {
width: 100%;
}
/*-----------------------------------------------------------------------------
| DirListing
|----------------------------------------------------------------------------*/
.jp-DirListing {
flex: 1 1 auto;
display: flex;
flex-direction: column;
outline: 0;
}
.jp-DirListing-header {
flex: 0 0 auto;
display: flex;
flex-direction: row;
overflow: hidden;
border-top: var(--jp-border-width) solid var(--jp-border-color2);
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
box-shadow: var(--jp-toolbar-box-shadow);
z-index: 2;
}
.jp-DirListing-headerItem {
padding: 4px 12px 2px 12px;
font-weight: 500;
}
.jp-DirListing-headerItem:hover {
background: var(--jp-layout-color2);
}
.jp-DirListing-headerItem.jp-id-name {
flex: 1 0 84px;
}
.jp-DirListing-headerItem.jp-id-modified {
flex: 0 0 112px;
border-left: var(--jp-border-width) solid var(--jp-border-color2);
text-align: right;
}
.jp-DirListing-narrow .jp-id-modified,
.jp-DirListing-narrow .jp-DirListing-itemModified {
display: none;
}
.jp-DirListing-headerItem.jp-mod-selected {
font-weight: 600;
}
/* increase specificity to override bundled default */
.jp-DirListing-content {
flex: 1 1 auto;
margin: 0;
padding: 0;
list-style-type: none;
overflow: auto;
background-color: var(--jp-layout-color1);
}
/* Style the directory listing content when a user drops a file to upload */
.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
outline: 5px dashed rgba(128, 128, 128, 0.5);
outline-offset: -10px;
cursor: copy;
}
.jp-DirListing-item {
display: flex;
flex-direction: row;
padding: 4px 12px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.jp-DirListing-item.jp-mod-selected {
color: white;
background: var(--jp-brand-color1);
}
.jp-DirListing-item.jp-mod-dropTarget {
background: var(--jp-brand-color3);
}
.jp-DirListing-item:hover:not(.jp-mod-selected) {
background: var(--jp-layout-color2);
}
.jp-DirListing-itemIcon {
flex: 0 0 20px;
margin-right: 4px;
}
.jp-DirListing-itemText {
flex: 1 0 64px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
user-select: none;
}
.jp-DirListing-itemModified {
flex: 0 0 125px;
text-align: right;
}
.jp-DirListing-editor {
flex: 1 0 64px;
outline: none;
border: none;
}
.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon:before {
color: limegreen;
content: '\25CF';
font-size: 8px;
position: absolute;
left: -8px;
}
.jp-DirListing-item.lm-mod-drag-image,
.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
font-size: var(--jp-ui-font-size1);
padding-left: 4px;
margin-left: 4px;
width: 160px;
background-color: var(--jp-ui-inverse-font-color2);
box-shadow: var(--jp-elevation-z2);
border-radius: 0px;
color: var(--jp-ui-font-color1);
transform: translateX(-40%) translateY(-58%);
}
.jp-DirListing-deadSpace {
flex: 1 1 auto;
margin: 0;
padding: 0;
list-style-type: none;
overflow: auto;
background-color: var(--jp-layout-color1);
}
.jp-Document {
min-width: 120px;
min-height: 120px;
outline: none;
}
.jp-FileDialog.jp-mod-conflict input {
color: red;
}
.jp-FileDialog .jp-new-name-title {
margin-top: 12px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Private CSS variables
|----------------------------------------------------------------------------*/
:root {}
/*-----------------------------------------------------------------------------
| Main OutputArea
| OutputArea has a list of Outputs
|----------------------------------------------------------------------------*/
.jp-OutputArea {
overflow-y: auto;
}
.jp-OutputArea-child {
display: flex;
flex-direction: row;
}
.jp-OutputPrompt {
flex: 0 0 var(--jp-cell-prompt-width);
color: var(--jp-cell-outprompt-font-color);
font-family: var(--jp-cell-prompt-font-family);
padding: var(--jp-code-padding);
letter-spacing: var(--jp-cell-prompt-letter-spacing);
line-height: var(--jp-code-line-height);
font-size: var(--jp-code-font-size);
border: var(--jp-border-width) solid transparent;
opacity: var(--jp-cell-prompt-opacity);
/* Right align prompt text, don't wrap to handle large prompt numbers */
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* Disable text selection */
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.jp-OutputArea-output {
height: auto;
overflow: auto;
user-select: text;
-moz-user-select: text;
-webkit-user-select: text;
-ms-user-select: text;
}
.jp-OutputArea-child .jp-OutputArea-output {
flex-grow: 1;
flex-shrink: 1;
}
/**
* Isolated output.
*/
.jp-OutputArea-output.jp-mod-isolated {
width: 100%;
display: block;
}
/*
When drag events occur, `p-mod-override-cursor` is added to the body.
Because iframes steal all cursor events, the following two rules are necessary
to suppress pointer events while resize drags are occurring. There may be a
better solution to this problem.
*/
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
position: relative;
}
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated:before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: transparent;
}
/* pre */
.jp-OutputArea-output pre {
border: none;
margin: 0px;
padding: 0px;
overflow-x: auto;
overflow-y: auto;
word-break: break-all;
word-wrap: break-word;
white-space: pre-wrap;
}
/* tables */
.jp-OutputArea-output.jp-RenderedHTMLCommon table {
margin-left: 0;
margin-right: 0;
}
/* description lists */
.jp-OutputArea-output dl,
.jp-OutputArea-output dt,
.jp-OutputArea-output dd {
display: block;
}
.jp-OutputArea-output dl {
width: 100%;
overflow: hidden;
padding: 0;
margin: 0;
}
.jp-OutputArea-output dt {
font-weight: bold;
float: left;
width: 20%;
padding: 0;
margin: 0;
}
.jp-OutputArea-output dd {
float: left;
width: 80%;
padding: 0;
margin: 0;
}
/* Hide the gutter in case of
* - nested output areas (e.g. in the case of output widgets)
* - mirrored output areas
*/
.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
display: none;
}
/*-----------------------------------------------------------------------------
| executeResult is added to any Output-result for the display of the object
| returned by a cell
|----------------------------------------------------------------------------*/
.jp-OutputArea-output.jp-OutputArea-executeResult {
margin-left: 0px;
flex: 1 1 auto;
}
.jp-OutputArea-executeResult.jp-RenderedText {
padding-top: var(--jp-code-padding);
}
/*-----------------------------------------------------------------------------
| The Stdin output
|----------------------------------------------------------------------------*/
.jp-OutputArea-stdin {
line-height: var(--jp-code-line-height);
padding-top: var(--jp-code-padding);
display: flex;
}
.jp-Stdin-prompt {
color: var(--jp-content-font-color0);
padding-right: var(--jp-code-padding);
vertical-align: baseline;
flex: 0 0 auto;
}
.jp-Stdin-input {
font-family: var(--jp-code-font-family);
font-size: inherit;
color: inherit;
background-color: inherit;
width: 42%;
min-width: 200px;
/* make sure input baseline aligns with prompt */
vertical-align: baseline;
/* padding + margin = 0.5em between prompt and cursor */
padding: 0em 0.25em;
margin: 0em 0.25em;
flex: 0 0 70%;
}
.jp-Stdin-input:focus {
box-shadow: none;
}
/*-----------------------------------------------------------------------------
| Output Area View
|----------------------------------------------------------------------------*/
.jp-LinkedOutputView .jp-OutputArea {
height: 100%;
display: block;
}
.jp-LinkedOutputView .jp-OutputArea-output:only-child {
height: 100%;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-Collapser {
flex: 0 0 var(--jp-cell-collapser-width);
padding: 0px;
margin: 0px;
border: none;
outline: none;
background: transparent;
border-radius: var(--jp-border-radius);
opacity: 1;
}
.jp-Collapser-child {
display: block;
width: 100%;
box-sizing: border-box;
/* height: 100% doesn't work because the height of its parent is computed from content */
position: absolute;
top: 0px;
bottom: 0px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Header/Footer
|----------------------------------------------------------------------------*/
/* Hidden by zero height by default */
.jp-CellHeader,
.jp-CellFooter {
height: 0px;
width: 100%;
padding: 0px;
margin: 0px;
border: none;
outline: none;
background: transparent;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Input
|----------------------------------------------------------------------------*/
/* All input areas */
.jp-InputArea {
display: flex;
flex-direction: row;
}
.jp-InputArea-editor {
flex: 1 1 auto;
}
.jp-InputArea-editor {
/* This is the non-active, default styling */
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
border-radius: 0px;
background: var(--jp-cell-editor-background);
}
.jp-InputPrompt {
flex: 0 0 var(--jp-cell-prompt-width);
color: var(--jp-cell-inprompt-font-color);
font-family: var(--jp-cell-prompt-font-family);
padding: var(--jp-code-padding);
letter-spacing: var(--jp-cell-prompt-letter-spacing);
opacity: var(--jp-cell-prompt-opacity);
line-height: var(--jp-code-line-height);
font-size: var(--jp-code-font-size);
border: var(--jp-border-width) solid transparent;
opacity: var(--jp-cell-prompt-opacity);
/* Right align prompt text, don't wrap to handle large prompt numbers */
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* Disable text selection */
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Placeholder
|----------------------------------------------------------------------------*/
.jp-Placeholder {
display: flex;
flex-direction: row;
flex: 1 1 auto;
}
.jp-Placeholder-prompt {
box-sizing: border-box;
}
.jp-Placeholder-content {
flex: 1 1 auto;
border: none;
background: transparent;
height: 20px;
box-sizing: border-box;
}
.jp-Placeholder-content .jp-MoreHorizIcon {
width: 32px;
height: 16px;
border: 1px solid transparent;
border-radius: var(--jp-border-radius);
}
.jp-Placeholder-content .jp-MoreHorizIcon:hover {
border: 1px solid var(--jp-border-color1);
box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.25);
background-color: var(--jp-layout-color0);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Private CSS variables
|----------------------------------------------------------------------------*/
:root {
--jp-private-cell-scrolling-output-offset: 5px;
}
/*-----------------------------------------------------------------------------
| Cell
|----------------------------------------------------------------------------*/
.jp-Cell {
padding: var(--jp-cell-padding);
margin: 0px;
border: none;
outline: none;
background: transparent;
}
/*-----------------------------------------------------------------------------
| Common input/output
|----------------------------------------------------------------------------*/
.jp-Cell-inputWrapper,
.jp-Cell-outputWrapper {
display: flex;
flex-direction: row;
padding: 0px;
margin: 0px;
/* Added to reveal the box-shadow on the input and output collapsers. */
overflow: visible;
}
/* Only input/output areas inside cells */
.jp-Cell-inputArea,
.jp-Cell-outputArea {
flex: 1 1 auto;
}
/*-----------------------------------------------------------------------------
| Collapser
|----------------------------------------------------------------------------*/
/* Make the output collapser disappear when there is not output, but do so
* in a manner that leaves it in the layout and preserves its width.
*/
.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
border: none !important;
background: transparent !important;
}
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
min-height: var(--jp-cell-collapser-min-height);
}
/*-----------------------------------------------------------------------------
| Output
|----------------------------------------------------------------------------*/
/* Put a space between input and output when there IS output */
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
margin-top: 5px;
}
/* Text output with the Out[] prompt needs a top padding to match the
* alignment of the Out[] prompt itself.
*/
.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
padding-top: var(--jp-code-padding);
}
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
overflow-y: auto;
max-height: 200px;
box-shadow: inset 0 0 6px 2px rgba(0, 0, 0, 0.3);
margin-left: var(--jp-private-cell-scrolling-output-offset);
}
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
flex: 0 0 calc(var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset));
}
/*-----------------------------------------------------------------------------
| CodeCell
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| MarkdownCell
|----------------------------------------------------------------------------*/
.jp-MarkdownOutput {
flex: 1 1 auto;
margin-top: 0;
margin-bottom: 0;
padding-left: var(--jp-code-padding);
}
.jp-MarkdownOutput.jp-RenderedHTMLCommon {
overflow: auto;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Variables
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
| Styles
|----------------------------------------------------------------------------*/
.jp-NotebookPanel-toolbar {
padding: 2px;
}
.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
border: none;
box-shadow: none;
}
.jp-Notebook-toolbarCellTypeDropdown select {
height: 24px;
font-size: var(--jp-ui-font-size1);
line-height: 14px;
border-radius: 0;
display: block;
}
.jp-Notebook-toolbarCellTypeDropdown span {
top: 5px !important;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Private CSS variables
|----------------------------------------------------------------------------*/
:root {
--jp-private-notebook-dragImage-width: 304px;
--jp-private-notebook-dragImage-height: 36px;
--jp-private-notebook-selected-color: var(--md-blue-400);
--jp-private-notebook-active-color: var(--md-green-400);
}
/*-----------------------------------------------------------------------------
| Imports
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Notebook
|----------------------------------------------------------------------------*/
.jp-NotebookPanel {
display: block;
height: 100%;
}
.jp-NotebookPanel.jp-Document {
min-width: 240px;
min-height: 120px;
}
.jp-Notebook {
padding: var(--jp-notebook-padding);
outline: none;
overflow: auto;
background: var(--jp-layout-color0);
}
.jp-Notebook.jp-mod-scrollPastEnd::after {
display: block;
content: '';
min-height: var(--jp-notebook-scroll-padding);
}
.jp-Notebook .jp-Cell {
overflow: visible;
}
.jp-Notebook .jp-Cell .jp-InputPrompt {
cursor: move;
}
/*-----------------------------------------------------------------------------
| Notebook state related styling
|
| The notebook and cells each have states, here are the possibilities:
|
| - Notebook
| - Command
| - Edit
| - Cell
| - None
| - Active (only one can be active)
| - Selected (the cells actions are applied to)
| - Multiselected (when multiple selected, the cursor)
| - No outputs
|----------------------------------------------------------------------------*/
/* Command or edit modes */
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
opacity: var(--jp-cell-prompt-not-active-opacity);
color: var(--jp-cell-prompt-not-active-font-color);
}
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
opacity: var(--jp-cell-prompt-not-active-opacity);
color: var(--jp-cell-prompt-not-active-font-color);
}
/* cell is active */
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
background: var(--jp-brand-color1);
}
/* collapser is hovered */
.jp-Notebook .jp-Cell .jp-Collapser:hover {
box-shadow: var(--jp-elevation-z2);
background: var(--jp-brand-color1);
opacity: var(--jp-cell-collapser-not-active-hover-opacity);
}
/* cell is active and collapser is hovered */
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
background: var(--jp-brand-color0);
opacity: 1;
}
/* Command mode */
.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
background: var(--jp-notebook-multiselected-color);
}
.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
background: transparent;
}
/* Edit mode */
.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
box-shadow: var(--jp-input-box-shadow);
background-color: var(--jp-cell-editor-active-background);
}
/*-----------------------------------------------------------------------------
| Notebook drag and drop
|----------------------------------------------------------------------------*/
.jp-Notebook-cell.jp-mod-dropSource {
opacity: 0.5;
}
.jp-Notebook-cell.jp-mod-dropTarget,
.jp-Notebook.jp-mod-commandMode .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
border-top-color: var(--jp-private-notebook-selected-color);
border-top-style: solid;
border-top-width: 2px;
}
.jp-dragImage {
display: flex;
flex-direction: row;
width: var(--jp-private-notebook-dragImage-width);
height: var(--jp-private-notebook-dragImage-height);
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
background: var(--jp-cell-editor-background);
overflow: visible;
}
.jp-dragImage-singlePrompt {
box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12);
}
.jp-dragImage .jp-dragImage-content {
flex: 1 1 auto;
z-index: 2;
font-size: var(--jp-code-font-size);
font-family: var(--jp-code-font-family);
line-height: var(--jp-code-line-height);
padding: var(--jp-code-padding);
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
background: var(--jp-cell-editor-background-color);
color: var(--jp-content-font-color3);
text-align: left;
margin: 4px 4px 4px 0px;
}
.jp-dragImage .jp-dragImage-prompt {
flex: 0 0 auto;
min-width: 36px;
color: var(--jp-cell-inprompt-font-color);
padding: var(--jp-code-padding);
padding-left: 12px;
font-family: var(--jp-cell-prompt-font-family);
letter-spacing: var(--jp-cell-prompt-letter-spacing);
line-height: 1.9;
font-size: var(--jp-code-font-size);
border: var(--jp-border-width) solid transparent;
}
.jp-dragImage-multipleBack {
z-index: -1;
position: absolute;
height: 32px;
width: 300px;
top: 8px;
left: 8px;
background: var(--jp-layout-color2);
border: var(--jp-border-width) solid var(--jp-input-border-color);
box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12);
}
/*-----------------------------------------------------------------------------
| Cell toolbar
|----------------------------------------------------------------------------*/
.jp-NotebookTools {
display: block;
min-width: var(--jp-sidebar-min-width);
color: var(--jp-ui-font-color1);
background: var(--jp-layout-color1);
/* This is needed so that all font sizing of children done in ems is
* relative to this base size */
font-size: var(--jp-ui-font-size1);
overflow: auto;
}
.jp-NotebookTools-tool {
padding: 0px 12px 0 12px;
}
.jp-ActiveCellTool {
padding: 12px;
background-color: var(--jp-layout-color1);
border-top: none !important;
}
.jp-ActiveCellTool .jp-InputArea-prompt {
flex: 0 0 auto;
padding-left: 0px;
}
.jp-ActiveCellTool .jp-InputArea-editor {
flex: 1 1 auto;
background: var(--jp-cell-editor-background);
border-color: var(--jp-cell-editor-border-color);
}
.jp-ActiveCellTool .jp-InputArea-editor .CodeMirror {
background: transparent;
}
.jp-MetadataEditorTool {
flex-direction: column;
padding: 12px 0px 12px 0px;
}
.jp-RankedPanel> :not(:first-child) {
margin-top: 12px;
}
.jp-KeySelector select.jp-mod-styled {
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color0);
border: var(--jp-border-width) solid var(--jp-border-color1);
}
.jp-KeySelector label,
.jp-MetadataEditorTool label {
line-height: 1.4;
}
/*-----------------------------------------------------------------------------
| Presentation Mode (.jp-mod-presentationMode)
|----------------------------------------------------------------------------*/
.jp-mod-presentationMode .jp-Notebook {
--jp-content-font-size1: var(--jp-content-presentation-font-size1);
--jp-code-font-size: var(--jp-code-presentation-font-size);
}
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
flex: 0 0 110px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
</style>
<style type="text/css">
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*
The following CSS variables define the main, public API for styling JupyterLab.
These variables should be used by all plugins wherever possible. In other
words, plugins should not define custom colors, sizes, etc unless absolutely
necessary. This enables users to change the visual theme of JupyterLab
by changing these variables.
Many variables appear in an ordered sequence (0,1,2,3). These sequences
are designed to work well together, so for example, `--jp-border-color1` should
be used with `--jp-layout-color1`. The numbers have the following meanings:
* 0: super-primary, reserved for special emphasis
* 1: primary, most important under normal situations
* 2: secondary, next most important under normal situations
* 3: tertiary, next most important under normal situations
Throughout JupyterLab, we are mostly following principles from Google's
Material Design when selecting colors. We are not, however, following
all of MD as it is not optimized for dense, information rich UIs.
*/
:root {
/* Elevation
*
* We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
*
* https://github.com/material-components/material-components-web
* https://material-components-web.appspot.com/elevation.html
*/
--jp-shadow-base-lightness: 0;
--jp-shadow-umbra-color: rgba(var(--jp-shadow-base-lightness),
var(--jp-shadow-base-lightness),
var(--jp-shadow-base-lightness),
0.2);
--jp-shadow-penumbra-color: rgba(var(--jp-shadow-base-lightness),
var(--jp-shadow-base-lightness),
var(--jp-shadow-base-lightness),
0.14);
--jp-shadow-ambient-color: rgba(var(--jp-shadow-base-lightness),
var(--jp-shadow-base-lightness),
var(--jp-shadow-base-lightness),
0.12);
--jp-elevation-z0: none;
--jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),
0px 1px 1px 0px var(--jp-shadow-penumbra-color),
0px 1px 3px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),
0px 2px 2px 0px var(--jp-shadow-penumbra-color),
0px 1px 5px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),
0px 4px 5px 0px var(--jp-shadow-penumbra-color),
0px 1px 10px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),
0px 6px 10px 0px var(--jp-shadow-penumbra-color),
0px 1px 18px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),
0px 8px 10px 1px var(--jp-shadow-penumbra-color),
0px 3px 14px 2px var(--jp-shadow-ambient-color);
--jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),
0px 12px 17px 2px var(--jp-shadow-penumbra-color),
0px 5px 22px 4px var(--jp-shadow-ambient-color);
--jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),
0px 16px 24px 2px var(--jp-shadow-penumbra-color),
0px 6px 30px 5px var(--jp-shadow-ambient-color);
--jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),
0px 20px 31px 3px var(--jp-shadow-penumbra-color),
0px 8px 38px 7px var(--jp-shadow-ambient-color);
--jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),
0px 24px 38px 3px var(--jp-shadow-penumbra-color),
0px 9px 46px 8px var(--jp-shadow-ambient-color);
/* Borders
*
* The following variables, specify the visual styling of borders in JupyterLab.
*/
--jp-border-width: 1px;
--jp-border-color0: var(--md-grey-400);
--jp-border-color1: var(--md-grey-400);
--jp-border-color2: var(--md-grey-300);
--jp-border-color3: var(--md-grey-200);
--jp-border-radius: 2px;
/* UI Fonts
*
* The UI font CSS variables are used for the typography all of the JupyterLab
* user interface elements that are not directly user generated content.
*
* The font sizing here is done assuming that the body font size of --jp-ui-font-size1
* is applied to a parent element. When children elements, such as headings, are sized
* in em all things will be computed relative to that body size.
*/
--jp-ui-font-scale-factor: 1.2;
--jp-ui-font-size0: 0.83333em;
--jp-ui-font-size1: 13px;
/* Base font size */
--jp-ui-font-size2: 1.2em;
--jp-ui-font-size3: 1.44em;
--jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,
Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
/*
* Use these font colors against the corresponding main layout colors.
* In a light theme, these go from dark to light.
*/
/* Defaults use Material Design specification */
--jp-ui-font-color0: rgba(0, 0, 0, 1);
--jp-ui-font-color1: rgba(0, 0, 0, 0.87);
--jp-ui-font-color2: rgba(0, 0, 0, 0.54);
--jp-ui-font-color3: rgba(0, 0, 0, 0.38);
/*
* Use these against the brand/accent/warn/error colors.
* These will typically go from light to darker, in both a dark and light theme.
*/
--jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
--jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);
--jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);
--jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);
/* Content Fonts
*
* Content font variables are used for typography of user generated content.
*
* The font sizing here is done assuming that the body font size of --jp-content-font-size1
* is applied to a parent element. When children elements, such as headings, are sized
* in em all things will be computed relative to that body size.
*/
--jp-content-line-height: 1.6;
--jp-content-font-scale-factor: 1.2;
--jp-content-font-size0: 0.83333em;
--jp-content-font-size1: 14px;
/* Base font size */
--jp-content-font-size2: 1.2em;
--jp-content-font-size3: 1.44em;
--jp-content-font-size4: 1.728em;
--jp-content-font-size5: 2.0736em;
/* This gives a magnification of about 125% in presentation mode over normal. */
--jp-content-presentation-font-size1: 17px;
--jp-content-heading-line-height: 1;
--jp-content-heading-margin-top: 1.2em;
--jp-content-heading-margin-bottom: 0.8em;
--jp-content-heading-font-weight: 500;
/* Defaults use Material Design specification */
--jp-content-font-color0: rgba(0, 0, 0, 1);
--jp-content-font-color1: rgba(0, 0, 0, 0.87);
--jp-content-font-color2: rgba(0, 0, 0, 0.54);
--jp-content-font-color3: rgba(0, 0, 0, 0.38);
--jp-content-link-color: var(--md-blue-700);
--jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',
Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
'Segoe UI Symbol';
/*
* Code Fonts
*
* Code font variables are used for typography of code and other monospaces content.
*/
--jp-code-font-size: 13px;
--jp-code-line-height: 1.3077;
/* 17px for 13px base */
--jp-code-padding: 5px;
/* 5px for 13px base, codemirror highlighting needs integer px value */
--jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;
--jp-code-font-family: var(--jp-code-font-family-default);
/* This gives a magnification of about 125% in presentation mode over normal. */
--jp-code-presentation-font-size: 16px;
/* may need to tweak cursor width if you change font size */
--jp-code-cursor-width0: 1.4px;
--jp-code-cursor-width1: 2px;
--jp-code-cursor-width2: 4px;
/* Layout
*
* The following are the main layout colors use in JupyterLab. In a light
* theme these would go from light to dark.
*/
--jp-layout-color0: white;
--jp-layout-color1: white;
--jp-layout-color2: var(--md-grey-200);
--jp-layout-color3: var(--md-grey-400);
--jp-layout-color4: var(--md-grey-600);
/* Inverse Layout
*
* The following are the inverse layout colors use in JupyterLab. In a light
* theme these would go from dark to light.
*/
--jp-inverse-layout-color0: #111111;
--jp-inverse-layout-color1: var(--md-grey-900);
--jp-inverse-layout-color2: var(--md-grey-800);
--jp-inverse-layout-color3: var(--md-grey-700);
--jp-inverse-layout-color4: var(--md-grey-600);
/* Brand/accent */
--jp-brand-color0: var(--md-blue-700);
--jp-brand-color1: var(--md-blue-500);
--jp-brand-color2: var(--md-blue-300);
--jp-brand-color3: var(--md-blue-100);
--jp-brand-color4: var(--md-blue-50);
--jp-accent-color0: var(--md-green-700);
--jp-accent-color1: var(--md-green-500);
--jp-accent-color2: var(--md-green-300);
--jp-accent-color3: var(--md-green-100);
/* State colors (warn, error, success, info) */
--jp-warn-color0: var(--md-orange-700);
--jp-warn-color1: var(--md-orange-500);
--jp-warn-color2: var(--md-orange-300);
--jp-warn-color3: var(--md-orange-100);
--jp-error-color0: var(--md-red-700);
--jp-error-color1: var(--md-red-500);
--jp-error-color2: var(--md-red-300);
--jp-error-color3: var(--md-red-100);
--jp-success-color0: var(--md-green-700);
--jp-success-color1: var(--md-green-500);
--jp-success-color2: var(--md-green-300);
--jp-success-color3: var(--md-green-100);
--jp-info-color0: var(--md-cyan-700);
--jp-info-color1: var(--md-cyan-500);
--jp-info-color2: var(--md-cyan-300);
--jp-info-color3: var(--md-cyan-100);
/* Cell specific styles */
--jp-cell-padding: 5px;
--jp-cell-collapser-width: 8px;
--jp-cell-collapser-min-height: 20px;
--jp-cell-collapser-not-active-hover-opacity: 0.6;
--jp-cell-editor-background: var(--md-grey-100);
--jp-cell-editor-border-color: var(--md-grey-300);
--jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
--jp-cell-editor-active-background: var(--jp-layout-color0);
--jp-cell-editor-active-border-color: var(--jp-brand-color1);
--jp-cell-prompt-width: 64px;
--jp-cell-prompt-font-family: 'Source Code Pro', monospace;
--jp-cell-prompt-letter-spacing: 0px;
--jp-cell-prompt-opacity: 1;
--jp-cell-prompt-not-active-opacity: 0.5;
--jp-cell-prompt-not-active-font-color: var(--md-grey-700);
/* A custom blend of MD grey and blue 600
* See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
--jp-cell-inprompt-font-color: #307fc1;
/* A custom blend of MD grey and orange 600
* https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
--jp-cell-outprompt-font-color: #bf5b3d;
/* Notebook specific styles */
--jp-notebook-padding: 10px;
--jp-notebook-select-background: var(--jp-layout-color1);
--jp-notebook-multiselected-color: var(--md-blue-50);
/* The scroll padding is calculated to fill enough space at the bottom of the
notebook to show one single-line cell (with appropriate padding) at the top
when the notebook is scrolled all the way to the bottom. We also subtract one
pixel so that no scrollbar appears if we have just one single-line cell in the
notebook. This padding is to enable a 'scroll past end' feature in a notebook.
*/
--jp-notebook-scroll-padding: calc(100% - var(--jp-code-font-size) * var(--jp-code-line-height) - var(--jp-code-padding) - var(--jp-cell-padding) - 1px);
/* Rendermime styles */
--jp-rendermime-error-background: #fdd;
--jp-rendermime-table-row-background: var(--md-grey-100);
--jp-rendermime-table-row-hover-background: var(--md-light-blue-50);
/* Dialog specific styles */
--jp-dialog-background: rgba(0, 0, 0, 0.25);
/* Console specific styles */
--jp-console-padding: 10px;
/* Toolbar specific styles */
--jp-toolbar-border-color: var(--jp-border-color1);
--jp-toolbar-micro-height: 8px;
--jp-toolbar-background: var(--jp-layout-color1);
--jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);
--jp-toolbar-header-margin: 4px 4px 0px 4px;
--jp-toolbar-active-background: var(--md-grey-300);
/* Input field styles */
--jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
--jp-input-active-background: var(--jp-layout-color1);
--jp-input-hover-background: var(--jp-layout-color1);
--jp-input-background: var(--md-grey-100);
--jp-input-border-color: var(--jp-border-color1);
--jp-input-active-border-color: var(--jp-brand-color1);
--jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
/* General editor styles */
--jp-editor-selected-background: #d9d9d9;
--jp-editor-selected-focused-background: #d7d4f0;
--jp-editor-cursor-color: var(--jp-ui-font-color0);
/* Code mirror specific styles */
--jp-mirror-editor-keyword-color: #008000;
--jp-mirror-editor-atom-color: #88f;
--jp-mirror-editor-number-color: #080;
--jp-mirror-editor-def-color: #00f;
--jp-mirror-editor-variable-color: var(--md-grey-900);
--jp-mirror-editor-variable-2-color: #05a;
--jp-mirror-editor-variable-3-color: #085;
--jp-mirror-editor-punctuation-color: #05a;
--jp-mirror-editor-property-color: #05a;
--jp-mirror-editor-operator-color: #aa22ff;
--jp-mirror-editor-comment-color: #408080;
--jp-mirror-editor-string-color: #ba2121;
--jp-mirror-editor-string-2-color: #708;
--jp-mirror-editor-meta-color: #aa22ff;
--jp-mirror-editor-qualifier-color: #555;
--jp-mirror-editor-builtin-color: #008000;
--jp-mirror-editor-bracket-color: #997;
--jp-mirror-editor-tag-color: #170;
--jp-mirror-editor-attribute-color: #00c;
--jp-mirror-editor-header-color: blue;
--jp-mirror-editor-quote-color: #090;
--jp-mirror-editor-link-color: #00c;
--jp-mirror-editor-error-color: #f00;
--jp-mirror-editor-hr-color: #999;
/* Vega extension styles */
--jp-vega-background: white;
/* Sidebar-related styles */
--jp-sidebar-min-width: 180px;
/* Search-related styles */
--jp-search-toggle-off-opacity: 0.5;
--jp-search-toggle-hover-opacity: 0.8;
--jp-search-toggle-on-opacity: 1;
--jp-search-selected-match-background-color: rgb(245, 200, 0);
--jp-search-selected-match-color: black;
--jp-search-unselected-match-background-color: var(--jp-inverse-layout-color0);
--jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
/* Icon colors that work well with light or dark backgrounds */
--jp-icon-contrast-color0: var(--md-purple-600);
--jp-icon-contrast-color1: var(--md-green-600);
--jp-icon-contrast-color2: var(--md-pink-600);
--jp-icon-contrast-color3: var(--md-blue-600);
}
</style>
<style type="text/css">
a.anchor-link {
display: none;
}
.highlight {
margin: 0.4em;
}
/* Input area styling */
.jp-InputArea {
overflow: hidden;
}
.jp-InputArea-editor {
overflow: hidden;
}
@media print {
body {
margin: 0;
}
}
</style>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-80968441424148724402021-10-17T22:23:00.007+04:002022-02-22T10:48:46.854+04:00JupyterLab Как изменить стартовую директорию в Windows 10<p style="margin: 0cm;"><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">Задача:</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;"> необходимо, чтобы
при запуске </span><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">JupyterLab</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt;"> </span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;">открывалась
определенная директория (в которой например располагаются ваши рабочие
нотбуки).<o:p></o:p></span></p>
<span><a name='more'></a></span><p style="margin: 0cm;"><br /></p>
<p style="margin: 0cm;"><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">Решение:</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;"> <o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;">1.
Запустить консоль (</span><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">CMD</span><span face=""Calibri",sans-serif" style="font-size: 11pt;">) из навигатора Анаконды (</span><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Anaconda</span><span face=""Calibri",sans-serif" style="font-size: 11pt;">.</span><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Navigator</span><span face=""Calibri",sans-serif" style="font-size: 11pt;">).
См. скриншот ниже.<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;">2.
Выполнить следующую команду:<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;"> <o:p></o:p></span></p>
<p style="margin: 0cm;"><b><span face="Calibri, sans-serif" lang="EN-US" style="background: rgb(253, 234, 218); font-size: 11pt;">jupyter server --generate-config</span></b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><br /></p><p style="margin: 0cm;"><span face="Calibri, sans-serif" style="font-size: 11pt;"></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNFDeqCfDpCgCKMEDwxN83snabhICPLomOGW2rxa2OfKLzz-8iUXh5DyfoO5WxbisHBwHeR5qyQ59UCbdPQGqLoU7MtRmf048EKYfdjgru8kGZbG_zBM-LIZApr5UWZs0Nehk2dup4Zoo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="482" data-original-width="1037" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNFDeqCfDpCgCKMEDwxN83snabhICPLomOGW2rxa2OfKLzz-8iUXh5DyfoO5WxbisHBwHeR5qyQ59UCbdPQGqLoU7MtRmf048EKYfdjgru8kGZbG_zBM-LIZApr5UWZs0Nehk2dup4Zoo/w640-h298/image.png" width="640" /></a></div><br /><span face="Calibri, sans-serif" style="font-size: 11pt;">Будет
сгенерирован специальный конфигурационный файл для </span><span face="Calibri, sans-serif" lang="EN-US" style="font-size: 11pt;">Jupyter</span><span face="Calibri, sans-serif" lang="EN-US" style="font-size: 11pt;">
</span><span face="Calibri, sans-serif" lang="EN-US" style="font-size: 11pt;">Server</span><span face="Calibri, sans-serif" style="font-size: 11pt;">, например, по пути: </span><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">C</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">:\</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Users</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">\</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">user</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">1\.</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">jupyter</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">\</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">jupyter</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">_</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">server</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">_</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">config</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">.</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">py</span></b><p></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;"> </span><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;">3.
В данном файле необходимо указать следующий параметр:<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;"> </span><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><b><span face="Calibri, sans-serif" lang="EN-US" style="background: rgb(253, 234, 218); font-size: 11pt;">c</span></b><b><span face="Calibri, sans-serif" style="background: rgb(253, 234, 218); font-size: 11pt;">.</span></b><b><span face="Calibri, sans-serif" lang="EN-US" style="background: rgb(253, 234, 218); font-size: 11pt;">ServerApp</span></b><b><span face="Calibri, sans-serif" style="background: rgb(253, 234, 218); font-size: 11pt;">.</span></b><b><span face="Calibri, sans-serif" lang="EN-US" style="background: rgb(253, 234, 218); font-size: 11pt;">root</span></b><b><span face="Calibri, sans-serif" style="background: rgb(253, 234, 218); font-size: 11pt;">_</span></b><b><span face="Calibri, sans-serif" lang="EN-US" style="background: rgb(253, 234, 218); font-size: 11pt;">dir</span></b><b><span face="Calibri, sans-serif" style="background: rgb(253, 234, 218); font-size: 11pt;"> = 'путь к нужной директории'</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;"> </span><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><i><span face=""Calibri",sans-serif" style="font-size: 11pt;">Примечание:
если путь содержит пробелы, то обрамить в двойные кавычки или изменить на путь
без пробелов.</span></i><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><br /></p><p style="margin: 0cm;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV6Bb5h9YZ24HiXeRKTaY5kfg1mc5XzvmD4V5HL6t_rb0XE0zFxaZIu-Xkcq_NAznKMqMUC8FwVNIYKEHj5V9NJYagIDJFtwjEHrfoz0RyI0NaIwx-UdLzUq_yVMVP6tUaafYM0Um0SYA/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="240" data-original-width="537" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV6Bb5h9YZ24HiXeRKTaY5kfg1mc5XzvmD4V5HL6t_rb0XE0zFxaZIu-Xkcq_NAznKMqMUC8FwVNIYKEHj5V9NJYagIDJFtwjEHrfoz0RyI0NaIwx-UdLzUq_yVMVP6tUaafYM0Um0SYA/s16000/image.png" /></a></div><p></p><p class="MsoNormal"><br /></p>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com1tag:blogger.com,1999:blog-4403788466717695768.post-26390482812333906062021-10-17T21:17:00.012+04:002022-02-22T10:48:59.528+04:00Jupyter Notebook Как изменить стартовую директорию в Windows 10<p style="margin: 0cm;"><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">Задача</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;">: необходимо, чтобы
при запуске </span><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Jupyter</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt;"> </span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Notebook</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;">
открывалась определенная директория (в которой например располагаются ваши
рабочие нотбуки).<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;"> <span></span></span></p><a name='more'></a><o:p></o:p><p></p>
<p style="margin: 0cm;"><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">Решение</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;">:<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;"> <o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;">1.
Запустить консоль (</span><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">CMD</span><span face=""Calibri",sans-serif" style="font-size: 11pt;">) из навигатора Анаконды (</span><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Anaconda</span><span face=""Calibri",sans-serif" style="font-size: 11pt;">.</span><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Navigator</span><span face=""Calibri",sans-serif" style="font-size: 11pt;">).
См. скриншот ниже.<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;">2.
Выполнить следующую команду:<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;"> <o:p></o:p></span></p>
<p style="margin: 0cm;"><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">jupyter
notebook --generate-config</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;"> <o:p></o:p></span></p>
<p style="margin: 0cm;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVFs2MPQqVfcQ950u3zM7igYt_bxSKJOvdZz9P8IZpjGKOJsLu4NI1c7xxZLZXSm12SdK-u-35-hK1NpOTLCIcw3vgiqdCPL9zGh9WnBpdnbyU8y-lPCHGgF9OCOescxHPD7iC6JPoNUo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="572" data-original-width="1083" height="338" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVFs2MPQqVfcQ950u3zM7igYt_bxSKJOvdZz9P8IZpjGKOJsLu4NI1c7xxZLZXSm12SdK-u-35-hK1NpOTLCIcw3vgiqdCPL9zGh9WnBpdnbyU8y-lPCHGgF9OCOescxHPD7iC6JPoNUo/w640-h338/image.png" width="640" /></a></div><br /><span face="Calibri, sans-serif" style="font-size: 11pt;">Будет
сгенерирован специальный конфигурационный файл для </span><span face="Calibri, sans-serif" lang="EN-US" style="font-size: 11pt;">Jupyter</span><span face="Calibri, sans-serif" lang="EN-US" style="font-size: 11pt;">
</span><span face="Calibri, sans-serif" lang="EN-US" style="font-size: 11pt;">Notebook</span><span face="Calibri, sans-serif" style="font-size: 11pt;">, например, по пути: </span><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">C</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">:\</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">Users</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">\</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">user</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">1\.</span></b><b><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;">jupyter</span></b><b><span face=""Calibri",sans-serif" style="font-size: 11pt;">\jupyter_notebook_config.py</span></b><p></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;"> </span><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;">3.
В данном файле необходимо указать следующий параметр:<o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;"> </span><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><b><span face="Calibri, sans-serif" style="background: rgb(253, 234, 218); font-size: 11pt;">c.NotebookApp.notebook_dir
= 'путь к нужной директории'</span></b><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" lang="EN-US" style="font-size: 11pt; mso-ansi-language: EN-US;"> </span><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><i><span face=""Calibri",sans-serif" style="font-size: 11pt;">Примечание:
если путь содержит пробелы, то обрамить в двойные кавычки или изменить на путь
без пробелов.</span></i><span face=""Calibri",sans-serif" style="font-size: 11pt;"><o:p></o:p></span></p>
<p style="margin: 0cm;"><span face=""Calibri",sans-serif" style="font-size: 11pt;"> <o:p></o:p></span></p>
<p style="margin: 0cm;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWX0HHPvoVI2s7yXxBquPaIvAozWIJ1RRliUqkePgTDLtt9WMMFfhDhsOhq8_SgwyUNHPOK_NAWLKV3ge3_OqogSNvEevzrX_us3ZtNB7DzHiTg4SJyRM9J_j2WTSj6C8wrfz29ne_Paw/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="213" data-original-width="526" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWX0HHPvoVI2s7yXxBquPaIvAozWIJ1RRliUqkePgTDLtt9WMMFfhDhsOhq8_SgwyUNHPOK_NAWLKV3ge3_OqogSNvEevzrX_us3ZtNB7DzHiTg4SJyRM9J_j2WTSj6C8wrfz29ne_Paw/s16000/image.png" /></a></div><p></p><p class="MsoNormal"><br /></p><div style="text-align: right;">
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com2tag:blogger.com,1999:blog-4403788466717695768.post-47587298039767825732021-10-06T23:23:00.004+04:002022-02-22T10:49:06.157+04:00Оптимизация размера памяти dataframe (python, pandas) путем преобразования числовых типовОбычно данные для анализа довольно большого объема сами по себе и при загрузке занимают от сотен мегабайт до гигабайт. Помимо этого при загрузке данных в dataframe (pandas) числовые значения не всегда получают наиболее подходящие типы, например вместо int8 назначается тип int64 из-за чего объем используемой под dataframe памяти существенно возрастает.<div>Приведенная в статье функция позволит быстро переопределить указанные типы в случае такой возможности и в некоторых случаях существенно сократить размер памяти под dataframe.</div><div><br /></div><span><a name='more'></a></span><div><br /></div><div><a href="https://github.com/ellavs/python-pandas-optimize-dataframe-memory-usage" target="_blank">Ссылка на Jupyter Notebook на GitHub</a></div><div><br /></div><div>Далее сама функция и пример применения.</div><div><br /></div><div><div class="cell border-box-sizing code_cell rendered" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; border: 1px solid transparent; box-sizing: border-box; display: flex; flex-direction: column; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin: 0px; outline: none; padding: 5px 5px 5px 0px; width: 700px;"><div class="input" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; break-inside: avoid; display: flex; flex-direction: row; margin: 0px; padding: 0px;"><div class="prompt input_prompt" style="border-top: 1px solid transparent; color: navy; font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0.4em; text-align: right;">In [25]:</div><div class="inner_cell" style="-webkit-box-align: stretch; -webkit-box-flex: 1; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; flex: 1 1 0%; margin: 0px; padding: 0px; width: 600px;"><div class="input_area" style="background: rgb(247, 247, 247); border-radius: 4px; border: 1px solid rgb(207, 207, 207); line-height: 1.21429em; margin: 0px; padding: 0px;"><div class=" highlight hl-ipython3" style="background: transparent; border: none; margin: 0.4em; padding: 0px;"><pre style="background-color: transparent; border-radius: 4px; border: none; color: #333333; font-size: inherit; line-height: inherit; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; padding: 0px; white-space: pre-wrap; word-break: break-all;"><span style="margin: 0px; padding: 0px;"></span><span class="kn" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">import</span> <span class="nn" style="color: blue; font-weight: bold; margin: 0px; padding: 0px;">pandas</span> <span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">as</span> <span class="nn" style="color: blue; font-weight: bold; margin: 0px; padding: 0px;">pd</span>
<span class="kn" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">import</span> <span class="nn" style="color: blue; font-weight: bold; margin: 0px; padding: 0px;">numpy</span> <span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">as</span> <span class="nn" style="color: blue; font-weight: bold; margin: 0px; padding: 0px;">np</span>
</pre></div></div></div></div></div><div class="cell border-box-sizing code_cell rendered" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; border: 1px solid transparent; box-sizing: border-box; display: flex; flex-direction: column; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin: 0px; outline: none; padding: 5px 5px 5px 0px; width: 700px;"><div class="input" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; break-inside: avoid; display: flex; flex-direction: row; margin: 0px; padding: 0px;"><div class="prompt input_prompt" style="border-top: 1px solid transparent; color: navy; font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0.4em; text-align: right;">In [26]:</div><div class="inner_cell" style="-webkit-box-align: stretch; -webkit-box-flex: 1; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; flex: 1 1 0%; margin: 0px; padding: 0px;"><div class="input_area" style="background: rgb(247, 247, 247); border-radius: 4px; border: 1px solid rgb(207, 207, 207); line-height: 1.21429em; margin: 0px; padding: 0px;"><div class=" highlight hl-ipython3" style="background: transparent; border: none; margin: 0.4em; padding: 0px;"><pre style="background-color: transparent; border-radius: 4px; border: none; color: #333333; font-size: inherit; line-height: inherit; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; padding: 0px; white-space: pre-wrap; word-break: break-all;"><span style="margin: 0px; padding: 0px;"></span><span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">def</span> <span class="nf" style="color: blue; margin: 0px; padding: 0px;">optimize_memory_usage</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="n" style="margin: 0px; padding: 0px;">print_size</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span><span class="kc" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">True</span><span class="p" style="margin: 0px; padding: 0px;">):</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Function optimizes memory usage in dataframe.</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># (RU) Функция оптимизации типов в dataframe.</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Types for optimization.</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Типы, которые будем проверять на оптимизацию.</span>
<span class="n" style="margin: 0px; padding: 0px;">numerics</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="p" style="margin: 0px; padding: 0px;">[</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'int16'</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'int32'</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'int64'</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'float16'</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'float32'</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'float64'</span><span class="p" style="margin: 0px; padding: 0px;">]</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Memory usage size before optimize (Mb).</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># (RU) Размер занимаемой памяти до оптимизации (в Мб).</span>
<span class="n" style="margin: 0px; padding: 0px;">before_size</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">memory_usage</span><span class="p" style="margin: 0px; padding: 0px;">()</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">sum</span><span class="p" style="margin: 0px; padding: 0px;">()</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">/</span> <span class="mi" style="color: #666666; margin: 0px; padding: 0px;">1024</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">**</span><span class="mi" style="color: #666666; margin: 0px; padding: 0px;">2</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">for</span> <span class="n" style="margin: 0px; padding: 0px;">column</span> <span class="ow" style="color: #aa22ff; font-weight: bold; margin: 0px; padding: 0px;">in</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">columns</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">column_type</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">dtypes</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">if</span> <span class="n" style="margin: 0px; padding: 0px;">column_type</span> <span class="ow" style="color: #aa22ff; font-weight: bold; margin: 0px; padding: 0px;">in</span> <span class="n" style="margin: 0px; padding: 0px;">numerics</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">column_min</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">min</span><span class="p" style="margin: 0px; padding: 0px;">()</span>
<span class="n" style="margin: 0px; padding: 0px;">column_max</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">max</span><span class="p" style="margin: 0px; padding: 0px;">()</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">if</span> <span class="nb" style="color: green; margin: 0px; padding: 0px;">str</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">column_type</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">startswith</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'int'</span><span class="p" style="margin: 0px; padding: 0px;">):</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">if</span> <span class="n" style="margin: 0px; padding: 0px;">column_min</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">></span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int8</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">min</span> <span class="ow" style="color: #aa22ff; font-weight: bold; margin: 0px; padding: 0px;">and</span> <span class="n" style="margin: 0px; padding: 0px;">column_max</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;"><</span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int8</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">max</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">astype</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int8</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">elif</span> <span class="n" style="margin: 0px; padding: 0px;">column_min</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">></span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int16</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">min</span> <span class="ow" style="color: #aa22ff; font-weight: bold; margin: 0px; padding: 0px;">and</span> <span class="n" style="margin: 0px; padding: 0px;">column_max</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;"><</span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int16</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">max</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">astype</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int16</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">elif</span> <span class="n" style="margin: 0px; padding: 0px;">column_min</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">></span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int32</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">min</span> <span class="ow" style="color: #aa22ff; font-weight: bold; margin: 0px; padding: 0px;">and</span> <span class="n" style="margin: 0px; padding: 0px;">column_max</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;"><</span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int32</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">max</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">astype</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int32</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">elif</span> <span class="n" style="margin: 0px; padding: 0px;">column_min</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">></span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int64</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">min</span> <span class="ow" style="color: #aa22ff; font-weight: bold; margin: 0px; padding: 0px;">and</span> <span class="n" style="margin: 0px; padding: 0px;">column_max</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;"><</span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">iinfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int64</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">max</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">astype</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">int64</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">else</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">if</span> <span class="n" style="margin: 0px; padding: 0px;">column_min</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">></span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">finfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">float32</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">min</span> <span class="ow" style="color: #aa22ff; font-weight: bold; margin: 0px; padding: 0px;">and</span> <span class="n" style="margin: 0px; padding: 0px;">column_max</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;"><</span> <span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">finfo</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">float32</span><span class="p" style="margin: 0px; padding: 0px;">)</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">max</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">astype</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">float32</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">else</span><span class="p" style="margin: 0px; padding: 0px;">:</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">[</span><span class="n" style="margin: 0px; padding: 0px;">column</span><span class="p" style="margin: 0px; padding: 0px;">]</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">astype</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">np</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">float64</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Memory usage size after optimize (Mb).</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># (RU) Размер занимаемой памяти после оптимизации (в Мб).</span>
<span class="n" style="margin: 0px; padding: 0px;">after_size</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">df</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">memory_usage</span><span class="p" style="margin: 0px; padding: 0px;">()</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">sum</span><span class="p" style="margin: 0px; padding: 0px;">()</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">/</span> <span class="mi" style="color: #666666; margin: 0px; padding: 0px;">1024</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">**</span><span class="mi" style="color: #666666; margin: 0px; padding: 0px;">2</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">if</span> <span class="n" style="margin: 0px; padding: 0px;">print_size</span><span class="p" style="margin: 0px; padding: 0px;">:</span> <span class="nb" style="color: green; margin: 0px; padding: 0px;">print</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'Memory usage size: before </span><span class="si" style="color: #bb6688; font-weight: bold; margin: 0px; padding: 0px;">{:5.4f}</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;"> Mb - after </span><span class="si" style="color: #bb6688; font-weight: bold; margin: 0px; padding: 0px;">{:5.4f}</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;"> Mb (</span><span class="si" style="color: #bb6688; font-weight: bold; margin: 0px; padding: 0px;">{:.1f}</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">%).'</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">format</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">before_size</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="n" style="margin: 0px; padding: 0px;">after_size</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="mi" style="color: #666666; margin: 0px; padding: 0px;">100</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">*</span> <span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">before_size</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">-</span> <span class="n" style="margin: 0px; padding: 0px;">after_size</span><span class="p" style="margin: 0px; padding: 0px;">)</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">/</span> <span class="n" style="margin: 0px; padding: 0px;">before_size</span><span class="p" style="margin: 0px; padding: 0px;">))</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">return</span> <span class="n" style="margin: 0px; padding: 0px;">df</span>
</pre></div></div></div></div></div><div class="cell border-box-sizing code_cell rendered" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; border: 1px solid transparent; box-sizing: border-box; display: flex; flex-direction: column; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin: 0px; outline: none; padding: 5px 5px 5px 0px; width: 700px;"><div class="input" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; break-inside: avoid; display: flex; flex-direction: row; margin: 0px; padding: 0px;"><div class="prompt input_prompt" style="border-top: 1px solid transparent; color: navy; font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0.4em; text-align: right;">In [30]:</div><div class="inner_cell" style="-webkit-box-align: stretch; -webkit-box-flex: 1; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; flex: 1 1 0%; margin: 0px; padding: 0px;"><div class="input_area" style="background: rgb(247, 247, 247); border-radius: 4px; border: 1px solid rgb(207, 207, 207); line-height: 1.21429em; margin: 0px; padding: 0px;"><div class=" highlight hl-ipython3" style="background: transparent; border: none; margin: 0.4em; padding: 0px;"><pre style="background-color: transparent; border-radius: 4px; border: none; color: #333333; font-size: inherit; line-height: inherit; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; padding: 0px; white-space: pre-wrap; word-break: break-all;"><span style="margin: 0px; padding: 0px;"></span><span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">def</span> <span class="nf" style="color: blue; margin: 0px; padding: 0px;">import_data_from_csv</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">filePath</span><span class="p" style="margin: 0px; padding: 0px;">):</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Load a dataframe from csv-file and optimize its memory usage.</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># (RU) Загрузка данных из csv-файла и оптимизация числовых типов для оптимизации использования памяти</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">pd</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">read_csv</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">filePath</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="n" style="margin: 0px; padding: 0px;">parse_dates</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span><span class="kc" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">True</span><span class="p" style="margin: 0px; padding: 0px;">,</span> <span class="n" style="margin: 0px; padding: 0px;">keep_date_col</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span><span class="kc" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">True</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Show dataframe info before optimize.</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># (RU) Показать информацию о таблице до оптимизации.</span>
<span class="nb" style="color: green; margin: 0px; padding: 0px;">print</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'-'</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">*</span> <span class="mi" style="color: #666666; margin: 0px; padding: 0px;">80</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="nb" style="color: green; margin: 0px; padding: 0px;">print</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">df</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">info</span><span class="p" style="margin: 0px; padding: 0px;">())</span>
<span class="nb" style="color: green; margin: 0px; padding: 0px;">print</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'-'</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">*</span> <span class="mi" style="color: #666666; margin: 0px; padding: 0px;">80</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># (RU) Оптимизация типов в dataframe.</span>
<span class="n" style="margin: 0px; padding: 0px;">df</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">optimize_memory_usage</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">df</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># Show dataframe info after optimize.</span>
<span class="c1" style="color: #408080; font-style: italic; margin: 0px; padding: 0px;"># (RU) Показать информацию о таблице после оптимизации.</span>
<span class="nb" style="color: green; margin: 0px; padding: 0px;">print</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'-'</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">*</span> <span class="mi" style="color: #666666; margin: 0px; padding: 0px;">80</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="nb" style="color: green; margin: 0px; padding: 0px;">print</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="n" style="margin: 0px; padding: 0px;">df</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">info</span><span class="p" style="margin: 0px; padding: 0px;">())</span>
<span class="nb" style="color: green; margin: 0px; padding: 0px;">print</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'-'</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">*</span> <span class="mi" style="color: #666666; margin: 0px; padding: 0px;">80</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
<span class="k" style="color: green; font-weight: bold; margin: 0px; padding: 0px;">return</span> <span class="n" style="margin: 0px; padding: 0px;">df</span>
</pre></div></div></div></div></div><div class="cell border-box-sizing code_cell rendered" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; border: 1px solid transparent; box-sizing: border-box; display: flex; flex-direction: column; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin: 0px; outline: none; padding: 5px 5px 5px 0px; width: 700px;"><div class="input" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; break-inside: avoid; display: flex; flex-direction: row; margin: 0px; padding: 0px;"><div class="prompt input_prompt" style="border-top: 1px solid transparent; color: navy; font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0.4em; text-align: right;">In [31]:</div><div class="inner_cell" style="-webkit-box-align: stretch; -webkit-box-flex: 1; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; flex: 1 1 0%; margin: 0px; padding: 0px;"><div class="input_area" style="background: rgb(247, 247, 247); border-radius: 4px; border: 1px solid rgb(207, 207, 207); line-height: 1.21429em; margin: 0px; padding: 0px;"><div class=" highlight hl-ipython3" style="background: transparent; border: none; margin: 0.4em; padding: 0px;"><pre style="background-color: transparent; border-radius: 4px; border: none; color: #333333; font-size: inherit; line-height: inherit; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; padding: 0px; white-space: pre-wrap; word-break: break-all;"><span style="margin: 0px; padding: 0px;"></span><span class="n" style="margin: 0px; padding: 0px;">df</span> <span class="o" style="color: #666666; margin: 0px; padding: 0px;">=</span> <span class="n" style="margin: 0px; padding: 0px;">import_data_from_csv</span><span class="p" style="margin: 0px; padding: 0px;">(</span><span class="s1" style="color: #ba2121; margin: 0px; padding: 0px;">'data.csv'</span><span class="p" style="margin: 0px; padding: 0px;">)</span>
</pre></div></div></div></div><div class="output_wrapper" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; margin: 0px; padding: 0px; position: relative;"><div class="output" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; margin: 0px; padding: 0px;"><div class="output_area" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; break-inside: avoid; display: flex; flex-direction: row; margin: 0px; padding: 0px;"><div class="prompt" style="font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0px 0.4em; text-align: right;"></div><div class="output_subarea output_stream output_stdout output_text" style="-webkit-box-flex: 1; flex: 1 1 0%; line-height: 1.21429em; margin: 0px; padding: 0.4em 0.4em 0px;"><pre style="border-radius: 0px; border: 0px; font-size: inherit; line-height: inherit; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; padding: 0px; vertical-align: baseline; white-space: pre-wrap; word-break: break-all;">------------------------------------------------------------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 157 entries, 0 to 156
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Passengers 145 non-null <span style="background-color: #fcff01;">float64</span>
1 Year 157 non-null <span style="background-color: #fcff01;">int64 </span>
2 Month 157 non-null <span style="background-color: #fcff01;">int64 </span>
dtypes: float64(1), int64(2)
memory usage: 3.8 KB
None
-----------------------------------------------------------------------
<span style="background-color: #fff2cc;">Memory usage size: before 0.0037 Mb - after 0.0012 Mb (68.5%).</span>
-----------------------------------------------------------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 157 entries, 0 to 156
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Passengers 145 non-null <span style="background-color: #b6d7a8;">float32</span>
1 Year 157 non-null <span style="background-color: #b6d7a8;">int16 </span>
2 Month 157 non-null <span style="background-color: #b6d7a8;">int8 </span>
dtypes: float32(1), int16(1), int8(1)
memory usage: 1.2 KB
None
------------------------------------------------------------------------
</pre></div></div></div></div></div><div class="cell border-box-sizing code_cell rendered" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; border: 1px solid transparent; box-sizing: border-box; display: flex; flex-direction: column; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin: 0px; outline: none; padding: 5px 5px 5px 0px; width: 700px;"><div class="input" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; break-inside: avoid; display: flex; flex-direction: row; margin: 0px; padding: 0px;"><div class="prompt input_prompt" style="border-top: 1px solid transparent; color: navy; font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0.4em; text-align: right;">In [32]:</div><div class="inner_cell" style="-webkit-box-align: stretch; -webkit-box-flex: 1; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; flex: 1 1 0%; margin: 0px; padding: 0px;"><div class="input_area" style="background: rgb(247, 247, 247); border-radius: 4px; border: 1px solid rgb(207, 207, 207); line-height: 1.21429em; margin: 0px; padding: 0px;"><div class=" highlight hl-ipython3" style="background: transparent; border: none; margin: 0.4em; padding: 0px;"><pre style="background-color: transparent; border-radius: 4px; border: none; color: #333333; font-size: inherit; line-height: inherit; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; padding: 0px; white-space: pre-wrap; word-break: break-all;"><span style="margin: 0px; padding: 0px;"></span><span class="n" style="margin: 0px; padding: 0px;">df</span><span class="o" style="color: #666666; margin: 0px; padding: 0px;">.</span><span class="n" style="margin: 0px; padding: 0px;">head</span><span class="p" style="margin: 0px; padding: 0px;">()</span>
</pre></div></div></div></div><div class="output_wrapper" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; margin: 0px; padding: 0px; position: relative;"><div class="output" style="-webkit-box-align: stretch; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; margin: 0px; padding: 0px;"><div class="output_area" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; break-inside: avoid; display: flex; flex-direction: row; margin: 0px; padding: 0px;"><div class="prompt output_prompt" style="color: darkred; font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0.4em; text-align: right;">Out[32]:</div><div class="output_html rendered_html output_subarea output_execute_result" style="-webkit-box-flex: 1; flex: 1 1 0%; margin: 0px; overflow: scroll hidden; padding: 0.4em 0.4em 0px;"><div style="margin: 0px; padding: 0px;"><table border="1" class="dataframe" style="border-collapse: collapse; border-spacing: 0px; border: 1px solid rgb(0, 0, 0); margin: 0px; max-width: 100%; padding: 0px;"><thead style="margin: 0px; padding: 0px;"><tr style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 0px;"><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;"></th><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">Passengers</th><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">Year</th><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">Month</th></tr></thead><tbody style="margin: 0px; padding: 0px;"><tr style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 0px;"><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">0</th><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">1235.750000</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">2007</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">4</td></tr><tr style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 0px;"><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">1</th><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">1487.530029</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">2007</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">3</td></tr><tr style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 0px;"><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">2</th><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">1563.959961</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">2007</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">7</td></tr><tr style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 0px;"><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">3</th><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">1575.270020</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">2007</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">0</td></tr><tr style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 0px;"><th style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; text-align: left; vertical-align: middle;">4</th><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">1762.000000</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">2007</td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin: 1em 2em; padding: 4px; vertical-align: middle;">8</td></tr></tbody></table></div></div></div></div></div></div><div class="cell border-box-sizing text_cell rendered" style="-webkit-box-align: stretch; -webkit-box-orient: horizontal; align-items: stretch; border: 1px solid transparent; box-sizing: border-box; display: flex; flex-direction: row; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin: 0px; outline: none; padding: 0px; width: 700px;"><div class="prompt input_prompt" style="border-top: 1px solid transparent; color: navy; font-family: monospace; line-height: 1.21429em; margin: 0px; min-width: 11ex; padding: 0.4em; text-align: right;"></div><div class="inner_cell" style="-webkit-box-align: stretch; -webkit-box-flex: 1; -webkit-box-orient: vertical; align-items: stretch; display: flex; flex-direction: column; flex: 1 1 0%; margin: 0px; padding: 0px;"><div class="text_cell_render border-box-sizing rendered_html" style="border-style: none; box-sizing: border-box; margin: 0px; outline: none; padding: 0.5em 0.5em 0.5em 0.4em; resize: none; width: inherit;"><p style="margin: 0px; padding: 0px; text-align: justify;"><br /></p></div></div></div></div><div><span style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify;">Видно, что при загрузке dataframe были назначены типы - float64(1) и int64(2), а после оптимизации они преобразованы в float32(1), int16(1) и int8(1).</span></div><div><div style="text-align: right;"><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div>
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com1tag:blogger.com,1999:blog-4403788466717695768.post-14653948535709492082021-05-17T22:00:00.008+04:002021-05-21T16:25:26.670+04:001С. Аварийное завершение, платформа легальная<div>При запуске базы в режиме Предприятие начала появляться ошибка "Аварийное завершение".</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_JXHp6qvqA5EO3MPCfdJZU6uqP6i3BwXsgyIMatdDSS9b1HiXTXfVZo-ccYj_nVVfHUviJRhcXsMwSIqAM3UwBSi40Z9WdWrE_AlaeckzmOmUXGeebgHLPHzSycIZMOYMbz2RgAW7L30/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="270" data-original-width="549" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_JXHp6qvqA5EO3MPCfdJZU6uqP6i3BwXsgyIMatdDSS9b1HiXTXfVZo-ccYj_nVVfHUviJRhcXsMwSIqAM3UwBSi40Z9WdWrE_AlaeckzmOmUXGeebgHLPHzSycIZMOYMbz2RgAW7L30/s16000/image.png" /></a></div><br /><br /></div><span><a name='more'></a></span><div>Полный скриншот:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYzJTnVZW9I0h43mybiddrbqjDSEqav8qI7u_4ukWsrMhYCqLgI6IvQaiUl3n5J_qjZdytKo0lolOIIC5ua4yH-4acIrZwHaocwoKcFwnGqrA_gaEKx0iYCT8FmdPAFTM6yir90b7-hlU/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1080" data-original-width="1920" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYzJTnVZW9I0h43mybiddrbqjDSEqav8qI7u_4ukWsrMhYCqLgI6IvQaiUl3n5J_qjZdytKo0lolOIIC5ua4yH-4acIrZwHaocwoKcFwnGqrA_gaEKx0iYCT8FmdPAFTM6yir90b7-hlU/w400-h225/image.png" width="400" /></a></div><br /></div><div>Больше никаких подробностей 1С платформа не выдает, в журнале регистрации записей нет.</div><div>Приложение сразу закрывается после этой ошибки. При повторном запуске не появляется.</div><div>Носит нерегулярный характер (то появляется, то нет).</div><div>Возникла на платформе: 8.3.18.1334 (по сообщениях из чатов у других было на платформе 8.3.17.1851)</div><div>Операционная система Windows 10 корпоративная LTSC 1809 и Windows Server 2012 R2 Standard</div><div><br /></div><div>Ошибка приложения записывается в системный журнал Windows в следующем виде:</div><div><br /></div><div><span style="color: red;">Faulting application name: 1cv8c.exe, version: 8.3.18.1334, time stamp: 0x6021c237</span></div><div><span style="color: red;">Faulting module name: backbas.dll, version: 8.3.18.1334, time stamp: 0x6021c6c8</span></div><div><span style="color: red;">Exception code: 0xc0000005</span></div><div><span style="color: red;">Fault offset: 0x00000000000ce7f3</span></div><div><span style="color: red;">Faulting process id: 0x1840</span></div><div><span style="color: red;">Faulting application start time: 0x01d74ba9efcea74f</span></div><div><span style="color: red;">Faulting application path: C:\Program Files\1cv8\8.3.18.1334\bin\1cv8c.exe</span></div><div><span style="color: red;">Faulting module path: C:\Program Files\1cv8\8.3.18.1334\bin\backbas.dll</span></div><div><span style="color: red;">Report Id: 59b36157-b79e-11eb-811c-0cc47a6431af</span></div><div><span style="color: red;">Faulting package full name: </span></div><div><span style="color: red;">Faulting package-relative application ID: </span></div><div><br /></div><div>Или на русском:</div><div><br /></div><div><span style="color: red;">Имя сбойного приложения: 1CV8C.exe, версия: 8.3.18.1334, метка времени: 0x6021c237</span></div><div><span style="color: red;">Имя сбойного модуля: backbas.dll, версия: 8.3.18.1334, метка времени: 0x6021c6c8</span></div><div><span style="color: red;">Код исключения: 0xc0000005</span></div><div><span style="color: red;">Смещение ошибки: 0x00000000000ce7f3</span></div><div><span style="color: red;">Идентификатор сбойного процесса: 0x2840</span></div><div><span style="color: red;">Время запуска сбойного приложения: 0x01d74b4aa253611e</span></div><div><span style="color: red;">Путь сбойного приложения: C:\Program Files\1cv8\8.3.18.1334\bin\1CV8C.exe</span></div><div><span style="color: red;">Путь сбойного модуля: C:\Program Files\1cv8\8.3.18.1334\bin\backbas.dll</span></div><div><span style="color: red;">Идентификатор отчета: b175aeec-357b-4c35-bdbc-0bfc9883a372</span></div><div><span style="color: red;">Полное имя сбойного пакета: </span></div><div><span style="color: red;">Код приложения, связанного со сбойным пакетом: </span></div><div><br /></div><div>Легальность продуктов 100% (эмуляторов нет и никогда не было). В одном месте кластер и настроен сервер лицензирования, в другом USB ключ. В интернете все советы сводятся к "удалите эмуляторы и т.п. нелегальщину", а затем всё удалите и поставьте заново с восстановлением баз.</div><div>Совсем не хочется делать это на серверных базах, где всё настроено под <a href="https://www.e-du.ru/2018/06/1c-license-server.html" target="_blank">сервер лицензирования</a> и постоянно работает несколько десятков пользователей.</div><div><br /></div><div>На данный момент есть опасения, что виновато какое-нибудь очередное обновление системы, как было <a href="https://www.e-du.ru/2021/03/1c-windows-10-error.html" target="_blank">здесь</a>, но подробной информации пока нет, что именно нужно сделать для исправления.</div><div><br /></div><div><div>Советы от коллег: <i>(из чата телеграм) </i>В нашем случае кажется проблема в отсутствии свободных лицензий. Сейчас активировали дополнительные, вроде перестало вылетать.</div><div><br /></div></div><div>UPDATE: 18.05.2021</div><div><br /></div><div>Ошибка появляется, если есть доступ в интернет.</div><div><br /></div><div>Проблему подвердили коллеги со всей страны.</div><div>Ошибка присутствует в версиях платформы начиная с 8.3.16.1791, 8.3.17.1823, 8.3.18.1201.</div><div><br /></div><div><b>UPDATE: есть обратная связь от разработчиков платформы. Про проблему они знают.</b></div><div><div><b>Это ошибка в платформе, связана с внешними сервисами.</b></div><div><b>В тестовой 8.3.17 уже исправлена. На 8.3.18 будет на этой неделе.</b></div><div><br /></div></div><div><a href="https://v8.1c.ru/news/oshibka-platformy-1c-predpriyatie-privodyashchaya-k-avariynomu-zaversheniyu.htm" rel="nofollow" target="_blank">Официальная новость на сайте 1С</a></div><div>Код ошибки для просмотра на трекере 1С - <a href="https://bugboard.v8.1c.ru/error/000109776" rel="nofollow" target="_blank">40049115</a></div><div>Ошибка исправлена в версиях платформы начиная с 8.3.17.2231 и 8.3.18.1483 (дата публикации 19.05.2021).</div><div><br /></div><div>Решение - обновить платформу, когда выйдет исправленный релиз.</div><div>Временное решение - отключить на машине доступ в Интернет. Также коллеги пишут, что как вариант, добавить в хост (в файл hosts) строку: 127.0.0.1 baidu.cn (но это не точно).</div><div><br /></div><div><b>UPDATE: 21.05.2021</b></div><div>По последним данным ошибка перестала появляться и на тех платформах, на которых ранее появлялась. Поэтому, если не больше не появляется, возможно обновление платформы не требуется.</div><div><br /></div>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com31tag:blogger.com,1999:blog-4403788466717695768.post-29892804191794890742021-05-06T12:37:00.007+04:002021-05-06T12:37:58.277+04:00Как расшифровать файл enc (без КриптоАрм) при помощи командной строки (утилита cryptcp)<div>Если имеется сертификат КриптоПро, но отсутствует программа КриптоАрм и необходимо расшифровать файл enc, то можно сделать это при помощи утилиты командной строки cryptcp.</div><div>Утилита бесплатна, входит в состав дистрибутивов или скачивается отдельно с сайта на странице загрузки КриптоПро.</div><span><a name='more'></a></span><div>Скачиваем файл нужной битности.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjznEqeQGdwtsjJ8tzllSQ3RspZjCGPwmRkZNcq1ujvA7UxnwJhlIVkONDFrN2Od16Z9wXl6hg4BhhHzcxZSHOvRcppT0THaOiGgNI8rPtOznNNO_WbdZFKokN81bd6CFtMLk5hfh_VpTA/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="516" data-original-width="659" height="501" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjznEqeQGdwtsjJ8tzllSQ3RspZjCGPwmRkZNcq1ujvA7UxnwJhlIVkONDFrN2Od16Z9wXl6hg4BhhHzcxZSHOvRcppT0THaOiGgNI8rPtOznNNO_WbdZFKokN81bd6CFtMLk5hfh_VpTA/w640-h501/image.png" width="640" /></a></div><br />Установки не требуется. Обязательно наличие установленного КриптоПро CSP.</div><div>Если запустить файл в командной строке, то будет выведен состав команд:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPXInDlCiXwmASdNow8MdIiIlsRkptmH7fCpZak0n5Eq9zascR5JSOv_l8-v04tjt9d2sME8HYkj5TuIA0uY9nlmCi0IabXSbBqCj_7iOtfST-xyKSFZFSJBoU7obc8SGycXX23Z10kGE/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="579" data-original-width="717" height="517" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPXInDlCiXwmASdNow8MdIiIlsRkptmH7fCpZak0n5Eq9zascR5JSOv_l8-v04tjt9d2sME8HYkj5TuIA0uY9nlmCi0IabXSbBqCj_7iOtfST-xyKSFZFSJBoU7obc8SGycXX23Z10kGE/w640-h517/image.png" width="640" /></a></div><br />CryptCP 5.0 "КРИПТО-ПРО". Утилита командной строки для подписи и шифрования файлов.</div><div>Список допустимых команд:</div><div><div>-encr создать зашифрованное сообщение</div><div>-decr расшифровать сообщение</div><div>-sign создать подписанное сообщение</div><div>-verify проверить подпись сообщения, получить исходный файл</div><div>-addsign добавить подпись в сообщение</div><div>-delsign удалить подпись из сообщения</div><div>-addattr добавить в подпись неподписанный атрибут</div><div>-signf создать подписи файлов в 'исходный_файл.sgn'</div><div>-vsignf проверить подписи файлов, созданные с помощью команды '-signf'</div><div>-addsignf добавить подпись файла в 'исходный_файл.sgn'</div><div>-hash посчитать хэши файлов в 'исходный_файл.hsh'</div><div>-vhash проверить хэши файлов, созданные с помощью команды '-hash'</div><div>-copycert скопировать сертификаты в заданное хранилище</div><div>-cspcert скопировать сертификат из ключевого контейнера в хранилище</div><div>-delcert удалить сертификат из хранилища</div><div>-listdn вывести на экран политику имен КриптоПро УЦ</div><div>-createuser зарегистрировать пользователя на КриптоПро УЦ</div><div>-checkreg проверить состояние регистрации пользователя на КриптоПро УЦ</div><div>-listtmpl вывести на экран шаблоны, доступные пользователю КриптоПро УЦ</div><div>-createrqst создать запрос на сертификат и сохранить его в файле PKCS #10</div><div>-instcert установить сертификат из файла PKCS #7 или файла сертификата</div><div>-createcert создать запрос на сертификат, отправить его в ЦС</div><div>-pendcert проверить, не выпущен ли сертификат</div><div>-sn сохранить/показать серийный номер лицензии</div><div>-help вывести справку по командам</div></div><div>Список допустимых опций:</div><div>-showstat вывести статистику работы программы</div><div>[ErrorCode: 0x00000001]</div><div><br /></div><div>Пример команды для расшифровки файла enc:</div><div><br /></div><div><b>"E:\Downloads\cryptcp.x64.exe" -decr -dn "УНИВЕРСИТЕТ" "E:\temp\file.zip.enc" "E:\temp\file.zip"</b></div><div><br /></div><div>Разбор команды:</div><div>"E:\Downloads\cryptcp.x64.exe" - путь к файлу утилиты.</div><div>-decr - указание, что необходимо сделать расшифровку.</div><div>-dn "УНИВЕРСИТЕТ" - пример отбора нужного сертификата - при помощи какого сертификата делать расшифровку (в данном случае - указание, что нужно использовать сертификат, у которого в поле Subject есть слово УНИВЕРСИТЕТ.</div><div>"E:\temp\file.zip.enc" - путь к зашифрованному файлу</div><div>"E:\temp\file.zip.enc" - путь к файлу, куда будет сохранен расшифрованный файл.</div><div><br /></div><div>Пример результата выполнения команды:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZzKK58yzxel-Bis2JdRja9rSLYHZYkpAtDGjorbf1bK8XxtGeagYtTI-hZXj8Ub5kh32hwsNLax3qVQmcbpg3NOINlybS_CiHSjQXCSxhqbcBOWYxNcUE2kO2QZje7rnPMMeuAF68siE/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="160" data-original-width="805" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZzKK58yzxel-Bis2JdRja9rSLYHZYkpAtDGjorbf1bK8XxtGeagYtTI-hZXj8Ub5kh32hwsNLax3qVQmcbpg3NOINlybS_CiHSjQXCSxhqbcBOWYxNcUE2kO2QZje7rnPMMeuAF68siE/w640-h128/image.png" width="640" /></a></div><br /><br /></div><div style="text-align: right;">
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com3tag:blogger.com,1999:blog-4403788466717695768.post-79595160423007868552021-04-08T10:54:00.007+04:002021-04-09T12:28:59.577+04:00Как подписать файл при помощи КриптоПро CSP (без КриптоАрм)<div>Если иногда возникает необходимость подписать файл электронно-цифровой подписью (ЭЦП), то необязательно покупать КриптоАрм, такую операцию можно произвести при помощи инструментов КриптоПро (устанавливаются вместе с КриптоПро).</div><span><a name='more'></a></span><div>Например, если Вы взаимодействуете с сервисом приема (СуперСервис Поступление в вуз онлайн) и необходимо загрузить в личный кабинет сервиса приема подписанный файл для привязки сертификата подписи для дальнейшей работы по API, то такой способ подойдет, а так как сделать это нужно только один раз, приобретение КриптоАрм в этом случае не совсем оправдано.</div><div><br /></div><div><b>Форматы получаемой подписи при таком способе:</b></div><div>1) <b><span style="color: #38761d;">attached PKSC#7</span></b>, кодировка der (присоединенная ЭЦП, включает сам файл)</div><div>2) <span style="color: #38761d;"><b>detached PKSC#7</b></span>, кодировка der (отсоединенная ЭЦП, только подпись, не включает файл)</div><div><br /></div><div>Для работы понадобится версия <b style="background-color: #fcff01;">КриптоПро CSP 5.0</b> (в версии 4 такой возможности нет).</div><div>Вместе с ней устанавливается дополнительная утилита <b style="background-color: #fff2cc;">"Инструменты КриптоПро"</b>:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4WQwbKZIzwm_PQhBU4xCJdOjXSsAbAtw3IhzbJ7jOzjsbKgEGeAK8d6d0MhU6tR_uOohCc8uw0b6z_g1x76BcdAjOokPfkn0apDkUx4dyH4CmBpBc6j4Hz-Qhvsti5ZzCRExk5gXsIbo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="296" data-original-width="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4WQwbKZIzwm_PQhBU4xCJdOjXSsAbAtw3IhzbJ7jOzjsbKgEGeAK8d6d0MhU6tR_uOohCc8uw0b6z_g1x76BcdAjOokPfkn0apDkUx4dyH4CmBpBc6j4Hz-Qhvsti5ZzCRExk5gXsIbo/s16000/image.png" /></a></div><br /><br /></div><div>Запускаем "Инструменты КриптоПро" и переходим на вкладку <b style="background-color: #fff2cc;">"Создание подписи"</b>:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3ALW7ej0jnxf3GYl4B_F3JdHw-bmOsZPKtOwnkVjYf7Aj0VLlubvDhmKOYnO6SdTwYHwrySHfkrVmH3anN6RB9LGNUCseQdB9ycWWWtGe6lh-27C3WXzvrUeowUp4TtHzlZ5RFApyA-Y/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="578" data-original-width="826" height="448" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3ALW7ej0jnxf3GYl4B_F3JdHw-bmOsZPKtOwnkVjYf7Aj0VLlubvDhmKOYnO6SdTwYHwrySHfkrVmH3anN6RB9LGNUCseQdB9ycWWWtGe6lh-27C3WXzvrUeowUp4TtHzlZ5RFApyA-Y/w640-h448/image.png" width="640" /></a></div><br /><br /></div><div>Нажмите кнопку "Показать расширенные", если отображаются не все настройки.</div><div><br /></div><div>В списке сертификатов необходимо выбрать нужный сертификат ЭЦП (действующий), см. также на колонку "Срок действия".</div><div><br /></div><div>Нажмите кнопку <b>"Выбрать файл для подписи"</b> и укажите файл, который необходимо подписать.</div><div><i>Примечание: для суперсервиса - это может быть любой файл в любым содержимым внутри.</i></div><div><br /></div><div>По кнопке <b>"Сохранить подпись как"</b> задайте путь для сохранения файла подписи.</div><div><i>Примечание: для суперсервиса параметр "Создать отсоединенную подпись" должен быть отключен.</i></div><div><br /></div><div>По умолчанию будет предложено расширение файла подписи <b>"p7s"</b>, но можно вручную переименовать в <b>"sig"</b> или <b>"sgn"</b>, если требуется.</div><div><br /></div><div>Для подписания нажмите кнопку <b>"Подписать"</b>. По указанному пути будет сохранена подпись в зависимости от заданного формата.</div><div><br /></div><div>Можно сразу же произвести проверку полученной подписи по кнопке <b>"Проверка подписи"</b>, если это необходимо.</div><div><br /></div><div><i>Примечание: для личного кабинета сервиса приема (СуперСервис Поступление в вуз онлайн) необходимо загрузить полученный файл с подписью в меню Организация - Управление - Блок "Файл подписанный ЭЦП". Если сертификат будет принят успешно, то будет отображена его информация.</i></div><div>См. также <a href="https://forum.vedu.ru/posts/t1530-EhCP-dlja-Superservisa" target="_blank">ЭЦП для Суперсервиса</a></div>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com2tag:blogger.com,1999:blog-4403788466717695768.post-34357027155016347652021-03-12T13:16:00.005+04:002021-03-21T16:35:31.381+04:001С и синий экран после обновления Windows 10<div>После очередного обновления операционной системы Windows 10 при запуске 1С в режиме Предприятие система уходила с ошибкой в "синий экран смерти":</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6t77toflwohwzU3YG2s8JpYhedDxYy5y4PVzCP1eEGOLFGwedb0ZhdR4k-zxQM6ku0Ou-vYKqAhOORnNoBIxFgeVydTDEopvW0DnAGaHA2xlyX2zR12iZEmvqedn1HQcA6M7iGIZvr0Y/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="757" data-original-width="934" height="518" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6t77toflwohwzU3YG2s8JpYhedDxYy5y4PVzCP1eEGOLFGwedb0ZhdR4k-zxQM6ku0Ou-vYKqAhOORnNoBIxFgeVydTDEopvW0DnAGaHA2xlyX2zR12iZEmvqedn1HQcA6M7iGIZvr0Y/w640-h518/image.png" width="640" /></a></div><span><a name='more'></a></span><div><br /></div>Параметры системы были такие:</div><div><b>Windows 10 Корпоративная LTSC 1809 сборка 17763.1817</b></div><div></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjq2worcswabrxtYjyqYCbvBoI6rWNxWkeoGpi6bjsU_ihEK76KkK0nOiVEI_K_u8JbHkVLTmC0ZKyQ2yNKohPGzycIBFSY6YBMHbbF3Ij67mp0NeHu8lG8l5fOUwfS6ZFWFjcW45_IAY/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="154" data-original-width="438" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjq2worcswabrxtYjyqYCbvBoI6rWNxWkeoGpi6bjsU_ihEK76KkK0nOiVEI_K_u8JbHkVLTmC0ZKyQ2yNKohPGzycIBFSY6YBMHbbF3Ij67mp0NeHu8lG8l5fOUwfS6ZFWFjcW45_IAY/s16000/image.png" /></a></div><br />Забегая вперед сразу скажу, что виноват оказался принтер, но расскажу действия по порядку.</div><div><br /></div><div>В первую очередь, если есть возможность поставить следующие обновления, сделайте это (они исправляют эту ошибку), а именно:</div><div><br /></div><div><div>Windows 10, версия 1803 — KB5001565 и KB5001634</div><div>Windows 10, версия 1809 — KB5001568 и KB5001638</div><div>Windows 10, версия 1909 — KB5001566 и KB5001648</div><div>Windows 10, версии 2004 и 20H2 — KB5001567 и KB5001649</div></div><div><br /></div><div>Если возможности установить перечисленные обновления нет, то продолжаем...</div><div><br /></div><div>На форумах и в новостях активно винили в проблеме обновление под номером 5000802 (массовая ошибка BSOD на win32kfull.sys - у кого при запуске RDP, у кого при печати, у кого при запуске 1С...).</div><div>Удалить его из интерфейса обновлений не всегда удается, так как оно считается обязательным.</div><div>В этом случае необходимо запустить следующую команду в консоли системы (под правами администратора):</div><div><br /></div><div><b>wusa /uninstall /kb:5000802</b></div><div><br /></div><div>Если в результате пишет, что KB5000802 не установлено на этом компьютере, то причиной может быть обновление с номером 5000808, поэтому пытаемся удалить и его:</div><div><br /></div><div><b>wusa /uninstall /kb:5000808</b></div><div><br /></div><div>Однако и его у меня не оказалось:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFWOFcL7gjvzJij9QeoaWpwLZRTr6Dygf5bkFGfrSVKTwsNS2XusvONaIsctmr6Z-Kcp5MYFeUrakruc1orhYOn3R6vuCWho6OtfjthkW-jlt5F1dT7SkU9R7FD07xTVx06Avgv7OVOFU/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="406" data-original-width="860" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFWOFcL7gjvzJij9QeoaWpwLZRTr6Dygf5bkFGfrSVKTwsNS2XusvONaIsctmr6Z-Kcp5MYFeUrakruc1orhYOn3R6vuCWho6OtfjthkW-jlt5F1dT7SkU9R7FD07xTVx06Avgv7OVOFU/w640-h302/image.png" width="640" /></a></div><br />Поэтому перед удалением, проверьте версию своей Windows сборки.</div><div>Список номеров обновлений для удаления:</div><div>Windows 10, версия 1803 — KB5000809</div><div>Windows 10, версия 1809 — KB5000822</div><div>Windows 10, версия 1909 — KB5000808</div><div>Windows 10, версии 2004 и 20H2 — KB5000802</div><div><br /></div><div>В итоге виновником оказался драйвер принтера <b>Kyocera ECOSYS M2035dn</b>.</div><div>Помогло обновление драйвера (в этом случае удалять обновления не требуется).</div><div><br /></div><div><b style="background-color: #fff2cc;">Для быстрого решения проблемы (пока не обновили драйвер), измените в системе принтер по умолчанию (например, на печать в pdf или аналогичное).</b></div><div><br /></div><div>Для обновления драйвера до Kyocera ECOSYS M2035dn v4 KX (XPS) для данного принтера скачиваем с официального сайта производителя:</div><div><a href="https://www.kyoceradocumentsolutions.ru/ru/support/downloads.name-L3J1L3J1L21mcC9FQ09TWVNNMjAzNURO.html#tab=driver">https://www.kyoceradocumentsolutions.ru/ru/support/downloads.name-L3J1L3J1L21mcC9FQ09TWVNNMjAzNURO.html#tab=driver</a></div><div><br /></div><div>следующий файл драйвера: <b>KX v4 Printer Driver (6.0.1527)</b></div><div><br /></div><div>После обновления перезагружаемся. Всё, теперь можно возвращать принтер по умолчанию, если этого не произошло автоматически после установки драйвера.</div><div>После этих действий у меня проблема ушла.</div>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com9tag:blogger.com,1999:blog-4403788466717695768.post-695199333551795562021-02-10T11:59:00.001+04:002021-02-25T21:26:52.276+04:00Ошибка в Microsoft Teams: не печатается буква Ж<div>Пользователи Microsoft Office 365 столкнулись с неожиданной проблемой: при создании Собрания в Teams в полях «Добавьте обязательных участников» и «Добавьте необязательных участников» нет возможности вводить с клавиатуры букву «Ж» (символ на русской раскладке).</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANABkw0D9Ae2oOJVBtOI9-aXJ-EFUxadPXC880KuCpkp_JRrVfom7Stkg3_77VlBBxWu5FOhIhBS6OZEmyFdDoKSjXOfsn9chaQBy0GGyDf0hnT9G6wWbPhxU867z5sz5xG0t4IESY64/s540/rus_keyboard_je.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="Ошибка не печатается буква Ж" border="0" data-original-height="270" data-original-width="540" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANABkw0D9Ae2oOJVBtOI9-aXJ-EFUxadPXC880KuCpkp_JRrVfom7Stkg3_77VlBBxWu5FOhIhBS6OZEmyFdDoKSjXOfsn9chaQBy0GGyDf0hnT9G6wWbPhxU867z5sz5xG0t4IESY64/s16000/rus_keyboard_je.jpg" /></a></div><br /><div></div><span><a name='more'></a></span><div><br /></div><div>На момент на писания статьи ошибке подвержены десктопное приложение MS Teams (текущая версии 1.4.00.28.79) и веб-приложение Teams.</div><div>Наглядно посмотреть, как проявляется ошибка (Ж-bug), можно в видео ролике:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/MRRWmRYef0M" width="560"></iframe></div><br /><div>Досадная ошибка, очевидно, была допущена разработчиками Teams при попытке отключения ввода в указанные поля символов «;» (точа с запятой) и «:» (двоеточие). Топорное исполнение и игнорирование того факта, что существуют другие альтернативные национальные раскладки, привели к тому, что пользователи Teams потеряли возможность вводить имена участников, которые содержат конкретные буквы национальных алфавитов (конкретно на русской раскладке клавиатуры на этой клавише должна находиться буква Ж).</div><div><br /></div><div><b>Официальный ответ службы технической поддержки Microsoft Online Services:</b></div><div><b><br /></b></div><div><div>Благодарим Вас за ожидание.</div><div><br /></div><div>Старшие инженеры эскалировали данный вопрос на уровень продуктовой группы. От продуктовой группы был получен ответ о том, что основная причина такого поведения была выявлена, на некоторых языках возникла ошибка кода, влияющая на эту кнопку. </div><div>Ожидаемое время выхода исправления - Апрель 2021. </div><div><br /></div><div>Спасибо, что обратились в службу технической поддержки Microsoft Online Services.</div><div style="font-weight: bold;"><br /></div></div><div><b><br /></b></div><div><b>Как решить проблему с вводом имен участников в Собрание Teams?</b></div><div><br /></div><div>Единственная возможность, которая осталась пользователям, что добавить участников с именами, которые содержат буквы "Ж" или «ж», вставлять символы или полностью имена через буфер обмена в поля «Добавьте обязательных участников» и «Добавьте необязательных участников».</div><div>Не забываем также про возможность создавать и редактировать Собрания Teams из настольного и веб-приложения Outlook, которое не подвержено Ж-bug.</div>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-81476030708062981882021-01-26T16:36:00.055+04:002021-01-26T16:57:31.332+04:001С. Объединение двух массивов в один (при помощи БСП, клиент, сервер)Если в Вашей конфигурации используется БСП, то объединить два массива в один можно при помощи следующей процедуры: <span><a name='more'></a></span><div>Процедура <b>ДополнитьМассив </b>общего модуля <b>ОбщегоНазначенияКлиентСервер</b></div><div><br /></div><div>Общий синтаксис процедуры:</div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: green; font-family: "Courier New"; font-size: 9pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">// Дополняет массив МассивПриемник
значениями из массива МассивИсточник.</span></p><div style="background: white; line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//</span></div><div style="background: white; line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: green; font-family: "Courier New"; font-size: 9pt;">// Параметры:</span></div>
<div style="background: white; line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: green; font-family: "Courier New"; font-size: 9pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">//
МассивПриемник - Массив - массив, в который необходимо добавить
значения.</span></div><div style="background: white; line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//
МассивИсточник - Массив - массив значений для заполнения.</span></div><div style="background: white; line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//
ТолькоУникальныеЗначения - Булево - если истина, то в массив будут
включены только уникальные значения.</span></div><div style="background: white; line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//</span></div><div style="background: white; line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: red; font-family: "Courier New"; font-size: 10pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Процедура</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">ДополнитьМассив</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">МассивПриемник</span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">МассивИсточник</span><span style="font-family: "Courier New"; font-size: 9pt;">,</span></div>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm; margin-left: 106.2pt; margin-right: 0cm; margin-top: 0cm; margin: 0cm 0cm 0cm 106.2pt; text-indent: 35.4pt;"><span style="color: blue; font-family: "Courier New"; font-size: 9pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">ТолькоУникальныеЗначения</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">=</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 9pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Ложь</span><span style="font-family: "Courier New"; font-size: 9pt;">)</span><span style="font-family: "Times New Roman",serif; font-size: 12pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;"><o:p></o:p></span></p></div><div><br /></div><div>Массивы будут объединены в МассивПриемник.</div><div>Процедура доступна как с клиента, так и с сервера.</div><div><br /></div><div>Пример использования:</div><div><br /></div><div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">МассивОбработанныхИдентификаторов</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">=</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc4" style="color: red; font-family: "Courier New"; font-size: 9pt;">Новый</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">Массив</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">;</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc4" style="color: red; font-family: "Courier New"; font-size: 9pt;">Для</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc4" style="color: red; font-family: "Courier New"; font-size: 9pt;">Каждого</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">ГруппаОбработки</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">Из</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">МассивГруппОбработки</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc8" style="color: red; font-family: "Courier New"; font-size: 10pt;">Цикл</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">МассивОбработанныхИдентификаторовГруппы</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">=</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбработатьИдентификаторыГруппы</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">(</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">ГруппаОбработки</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">);</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначенияКлиентСервер</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">.</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">ДополнитьМассив</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">(</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">МассивОбработанныхИдентификаторов</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">,</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">МассивОбработанныхИдентификаторовГруппы</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc4" style="color: red; font-family: "Courier New"; font-size: 9pt;">Истина</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">);</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;">
</span><span class="sc8" style="color: red; font-family: "Courier New"; font-size: 10pt;">КонецЦикла</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">;</span></div></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>Устаревшая процедура, но которая еще используется в конфигурациях на предыдущих версиях БСП:</div><div><br /></div><div><div style="background: rgb(255, 255, 255); float: left; line-height: 1; white-space: pre;"><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначения</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">.</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">ЗаполнитьМассивУникальнымиЗначениями</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">(</span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">МассивПриемник</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">,</span><span class="sc24" style="font-family: "Courier New"; font-size: 10pt;"> </span><span class="sc0" style="color: blue; font-family: "Courier New"; font-size: 9pt;">МассивИсточник</span><span class="sc12" style="font-family: "Courier New"; font-size: 9pt;">)</span></div></div><div><br /></div><div><br /></div><div><br />
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com1tag:blogger.com,1999:blog-4403788466717695768.post-67541947628107761272021-01-08T10:47:00.002+04:002021-01-08T10:47:48.442+04:001С, вывести сообщение пользователю (при помощи БСП, клиент, сервер)Если Ваша конфигурация применяет БСП, то рекомендуется использовать процедуры БСП для вывода сообщений пользователям.<div><b>Примеры вывода сообщений</b></div><span><a name='more'></a></span><div><br /></div><div>Если обращение "с сервера", то для вывода сообщения пользователю можно применять следующую процедуру БСП:</div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">ОбщегоНазначения</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"Текст сообщения"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p></div><div><br /></div><div>Если обращение "с клиента", то для вывода сообщения пользователю можно применять следующую процедуру БСП:</div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">ОбщегоНазначенияКлиент</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"Текст сообщения"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p></div><div><br /></div><div>Устаревшая процедура, но которая еще используется в конфигурациях на предыдущих версиях БСП:</div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">ОбщегоНазначенияКлиентСервер</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"</span></b><b style="background-color: transparent;"><span style="color: #8f4552; font-family: "Courier New"; font-size: 10pt;">Текст сообщения"</span></b><span style="background-color: transparent; font-family: "Courier New"; font-size: 9pt;">);</span></p></div><div><br /></div><div>Пример вывода сообщения об ошибке:</div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="font-family: "Courier New"; font-size: 10pt;"><span style="color: red;">Попытка<br /></span></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ФайлCSV</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Прочитать</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ПутьКФайлу</span><span style="font-family: "Courier New"; font-size: 9pt;">);<br /></span><span style="font-family: "Courier New";"><span style="color: red;"><span style="font-size: 9pt;">Исключение</span><span style="font-size: 12px;"><br /></span></span></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначенияКлиент</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"Не удалось загрузить файл: "</span></b><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">+</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ПутьКФайлу</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">+</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Символы</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ПС</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">+</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОписаниеОшибки</span><span style="font-family: "Courier New";"><span style="font-size: 9pt;">());</span><span style="font-size: 12px;"><br /></span></span><span style="background-color: transparent; color: red; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">КонецПопытки</span><span style="background-color: transparent; font-family: "Courier New"; font-size: 9pt; line-height: 107%;">;</span></p></div><div><br /></div><div>Общий синтаксис процедуры:</div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: green; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">// Формирует и выводит сообщение, которое
может быть связано с элементом управления формы.<br /></span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//<br /></span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">// Параметры:<br /></span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">
</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">ТекстСообщенияПользователю - Строка - текст сообщения.<br /></span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">
</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">КлючДанных - ЛюбаяСсылка - объект или ключ записи информационной базы, к
которому это сообщение относится.<br /></span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">
</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">Поле - Строка - наименование реквизита формы.<br /></span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">
</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">ПутьКДанным - Строка - путь к данным (путь к реквизиту формы).<br /></span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">//</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">
</span><span style="color: green; font-family: "Courier New"; font-size: 9pt;">Отказ - Булево - выходной параметр, всегда устанавливается в значение
Истина.</span></p></div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">Процедура</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(<br /></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Знач</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ТекстСообщенияПользователю</span><span style="font-family: "Courier New";"><span style="font-size: 9pt;">,</span><span style="font-size: 12px;"><br /></span></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Знач</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">КлючДанных</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">=</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 9pt;">Неопределено</span><span style="font-family: "Courier New";"><span style="font-size: 9pt;">,</span><span style="font-size: 12px;"><br /></span></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Знач</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Поле</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">=</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">""</span></b><span style="font-family: "Courier New";"><span style="font-size: 9pt;">,</span><span style="font-size: 12px;"><br /></span></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Знач</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ПутьКДанным</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">=</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">""</span></b><span style="font-family: "Courier New";"><span style="font-size: 9pt;">,</span><span style="font-size: 12px;"><br /></span></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Отказ</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">=</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 9pt;">Ложь</span><span style="font-family: "Courier New"; font-size: 9pt;">)</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 9pt;">Экспорт</span></p></div><div><br /></div><div>Примеры:</div><div><p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="font-family: "Courier New"; font-size: 9pt;"><span style="color: green;">// 1. Для вывода сообщения у поля
управляемой формы, связанного с реквизитом объекта:<br /></span></span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначенияКлиент</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">НСтр</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"ru = 'Сообщение об ошибке.'"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">),</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"ПолеВРеквизитеФормыОбъект"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"Объект"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">);</span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="font-family: "Courier New"; font-size: 9pt;"><span style="color: green;">// Альтернативный вариант использования в
форме объекта:<br /></span></span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначенияКлиент</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">НСтр</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"ru = 'Сообщение об ошибке.'"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">),</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"Объект.ПолеВРеквизитеФормыОбъект"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">);</span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="font-family: "Courier New"; font-size: 9pt;"><span style="color: green;">// 2. Для вывода сообщения рядом с полем
управляемой формы, связанным с реквизитом формы:<br /></span></span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначенияКлиент</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">НСтр</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"ru = 'Сообщение об ошибке.'"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">),</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"ИмяРеквизитаФормы"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">);</span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="font-family: "Courier New"; font-size: 9pt;"><span style="color: green;">// 3. Для вывода сообщения связанного с
объектом информационной базы:<br /></span></span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначенияКлиент</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">НСтр</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"ru = 'Сообщение об ошибке.'"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">),</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбъектИнформационнойБазы</span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"Ответственный"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">,,</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Отказ</span><span style="font-family: "Courier New"; font-size: 9pt;">);</span></p>
<p class="MsoNormal" style="background: white; line-height: normal; margin-bottom: 0cm;"><span style="font-family: "Courier New"; font-size: 9pt;"><span style="color: green;">// 4. Для вывода сообщения по ссылке на
объект информационной базы:<br /></span></span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">ОбщегоНазначенияКлиент</span><span style="font-family: "Courier New"; font-size: 9pt;">.</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">СообщитьПользователю</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">НСтр</span><span style="font-family: "Courier New"; font-size: 9pt;">(</span><b><span style="color: #8f4552; font-family: "Courier New"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: RU;">"ru = 'Сообщение об ошибке.'"</span></b><span style="font-family: "Courier New"; font-size: 9pt;">),</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Ссылка</span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="font-family: "Courier New"; font-size: 9pt;">,</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 9pt;">Отказ</span><span style="font-family: "Courier New"; font-size: 9pt;">);</span></p></div><div><br /></div><div><div>Случаи некорректного использования:</div><div>1. Передача одновременно параметров КлючДанных и ПутьКДанным.</div><div>2. Передача в параметре КлючДанных значения типа отличного от допустимого.</div><div>3. Установка ссылки без установки поля (и/или пути к данным).</div></div><div><br />
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0tag:blogger.com,1999:blog-4403788466717695768.post-12180802084214527562021-01-06T11:23:00.004+04:002021-01-06T11:24:14.752+04:001С. Дистрибутив платформы - отсутствует setup.exe (невозможно обновить)Скачала дистрибутив платформы 1С 8.3.17 для очередного обновления, однако при распаковке RAR-архива не обнаружила привычных файлов для инсталляции - отсутствовал файл setup.exe и другие. Присутствовали только следующие файлы:<span><a name='more'></a></span><div><div><ul style="text-align: left;"><li>Data</li><li>META-INF</li><li>component-manifest.xml</li></ul></div></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXdo-F01IBDxLWrfzyevRGQ-zaiPg2BgkFoJ-RTmjnLfgF7rYFTMZQdsb0Blo7Hy4kzP9tlkqQvjRRu6I8RhZtiGbw9Q0Mefv0_lVqqdae4VjRYmwnQ-zfxf56wR5Z54kl8bf4TU5gdh4/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="519" data-original-width="542" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXdo-F01IBDxLWrfzyevRGQ-zaiPg2BgkFoJ-RTmjnLfgF7rYFTMZQdsb0Blo7Hy4kzP9tlkqQvjRRu6I8RhZtiGbw9Q0Mefv0_lVqqdae4VjRYmwnQ-zfxf56wR5Z54kl8bf4TU5gdh4/s16000/image.png" /></a></div><br />Никакой документации, что изменился процесс обновления 1С-платформы обнаружено не было.</div><div>Причина оказалась в архиваторе. На сервере была установлена старая версия архиватора 7-Zip 9.20, которая некорректно распаковывала rar-архивы. Обновление его до версии 19.00 решило проблему.</div><div><br />
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com6tag:blogger.com,1999:blog-4403788466717695768.post-32759934330170724822020-12-02T16:37:00.005+04:002020-12-29T16:59:06.093+04:001С. Макет. Произвольные колонтитулы и повтор шапки таблицы в табличном документе (готовая функция)<p><b>Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).</b></p><p>В данной статье будет приведен пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки произвольной таблицы в документе (или таблиц, если в документе их несколько).</p><span><a name='more'></a></span><p>Сразу уточню, что функция не тестировалась на очень объемных документах, поэтому, если кто-то проведет такое испытание, пожалуйста, напишите результаты в комментариях.</p><p><b>Задача состояла в следующем: </b></p><p>1) выводить не очень большой табличный документ (до 30 листов) с <b>несколькими </b>таблицами,</p><p>2) на каждой странице в колонтитуле добавлять <b>нумерацию </b>(если страниц больше одной) и картинку (QR-код) (в том числе корректно выводить нижний колонтитул на последней странице),</p><p>3) если какие-либо из таблиц переносились на следующую страницу, необходимо было производить <b>повтор шапки</b> переносимой таблицы, при этом не допустить, чтобы на предыдущей странице осталась только шапка без хотя бы одной строки данных в ней,</p><p>4) предусмотреть возможность вывода <b>произвольного верхнего колонтитула</b> (изначально макетом заложен не был).</p><p>В частности, это была печатная форма электронной зачетной книжки студента с разбивкой по курсам и семестрам.</p><p>Статей на данную тему с примерами вывода колонтитулов и повторов шапки таблицы в интернете довольно много. Однако, когда возникла описанная выше задача, готового варианта реализации всех названных условий не нашлось (лишь фрагментарно), поэтому был написан некий свой универсальный вариант.</p><p>Привожу код получившейся основной рекурсивной функции вывода в табличный документ колонтитулов и повторения шапки таблицы:</p><p><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Функция вывода в табличный документ колонтитулов и повторения шапки таблицы.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">//</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Параметры:</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// ТабДок - ТабличныйДокумент - Итоговый табличный документ (размеры должны быть заданы заранее).</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// ВыводимаяОбласть - ОбластьТабличногоДокумента - Текущая выводимая область.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// ОбластьПустойСтроки - ОбластьТабличногоДокумента - Область с пустой строкой.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// ОбластьВерхнегоКолонтитула - ОбластьТабличногоДокумента - Необязательный, </span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// область с верхним колонтитулом.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// ОбластьНижнегоКолонтитула - ОбластьТабличногоДокумента - Необязательный, </span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// область с нижним колонтитулом.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// ОбластьШапкаТаблицы - ОбластьТабличногоДокумента - Необязательный, </span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// область шапки текущей выводимой таблицы.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// НомерСтраницы - Число - Необязательный, номер страницы </span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// (по умолчанию добавляется на нижний колонтитул).</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// </span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Возвращаемое значение:</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Число - текущий номер страницы.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">//</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Функция</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ВыводимаяОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьВерхнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьШапкаТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">0</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Фиксированно заданный параметр: не выводить шапку таблицы, </span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// если при добавлении к ней пустой строки происходит перенос на след. страницу</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ЗапретВисячихШапокТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Истина</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Проверка наличия областей.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ЕстьВыводимаяОбласть </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">?</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ВыводимаяОбласть </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Ложь</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Истина</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ЕстьВерхнийКолонтитул </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">?</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьВерхнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Ложь</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Истина</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ЕстьНижнийКолонтитул </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">?</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьНижнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Ложь</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Истина</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ЕстьШапкаТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">?</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьШапкаТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Ложь</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Истина</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Проверка, является ли эта итерация функции выводом шапки таблицы.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ЭтоВыводШапкиТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ЕстьШапкаТаблицы </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">И</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводимаяОбласть </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Формирование области с нижним колонтитулом.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьСНижнимКолонтитулом </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Новый</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Массив</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьСНижнимКолонтитулом.Добавить</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">?</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ЕстьВыводимаяОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводимаяОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Если параметр задан, то добавляем к шапке пустую строку для дальнейшей проверки.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЗапретВисячихШапокТаблицы </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЭтоВыводШапкиТаблицы </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьСНижнимКолонтитулом.Добавить</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Добавлем непосредственно сам нижний колонтитул в формируемую область нижнего колонтитула.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЕстьНижнийКолонтитул </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьСНижнимКолонтитулом.Добавить</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводимаяОбласть </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Неопределено</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">И</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЕстьНижнийКолонтитул </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// если не задана область вывода, то считаем, </span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// что нужно сделать завершение текущей страницы (вставить только нижний колонтитул)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// В цикле дополняем текущую страницу пустыми строками до области нижнего колонтитула.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Пока</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ТабДок.ПроверитьВывод</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьСНижнимКолонтитулом</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Цикл</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.Вывести</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЦикла</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Добавляем номер страницы в нижний колонтитул, если их более одной.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">></span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">1</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула.Параметры.НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.Вывести</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Иначе</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Проверка - помещается ли выводимая секция на текущую страницу или нужно перейти на новую.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Не</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ТабДок.ПроверитьВывод</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьСНижнимКолонтитулом</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводимаяОбласть </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьПустойСтроки </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Возврат</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Проверка, осталось ли место для пустой строки (если да, то добавляется до колонтитула).</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Вывод нижнего колонтитула.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЕстьНижнийКолонтитул </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">></span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">0</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула.Параметры.НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">+</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">1</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.Вывести</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ВывестиГоризонтальныйРазделительСтраниц</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Вывод верхнего колонтитула.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЕстьВерхнийКолонтитул </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.Вывести</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Повтор шапки таблицы на новой странице.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЕстьШапкаТаблицы </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">и</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Не</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЭтоВыводШапкиТаблицы </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.Вывести</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Вывод основных данных в документ.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.Вывести</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ВыводимаяОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводимаяОбласть </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьПустойСтроки </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Продолжение вывода пустых строк до окончания страницы.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Возврат</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецФункции</span></p>
<p><b>Как использовать данную функцию</b></p>
<p>Что понадобится задать в макете для использования функции:</p><p> 1) область пустой строки,</p><p> 2) область верхнего колонтитула с произвольным содержимым,</p><p> 3) область нижнего колонтитула с произвольным содержимым,</p><p> 4) области шапок таблиц.</p><p><br /></p><p>Пример:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPxEIuF8om9FnCjDZ5uSdGvZeqCAezBcs7nyro5GmMtDyZ4QpYF99kNIzVHRgjeD4s1xr81WxSqy3EBUsGhZwwgHHkBGT8tTE4jaayrvX8mkPsl5WwyyUMcXnKLWYKsF7sNLqijpGFanA/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="490" data-original-width="1124" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPxEIuF8om9FnCjDZ5uSdGvZeqCAezBcs7nyro5GmMtDyZ4QpYF99kNIzVHRgjeD4s1xr81WxSqy3EBUsGhZwwgHHkBGT8tTE4jaayrvX8mkPsl5WwyyUMcXnKLWYKsF7sNLqijpGFanA/w697-h304/image.png" width="697" /></a></div><br />
<p>В коде их соответственно зачитываем:</p>
<p><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьВерхнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ВерхнийКолонтитул"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"НижнийКолонтитул"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ПустаяСтрока"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span></p>
<p>Заполняем колонтитулы значениями параметров, если они присутствуют, например:
</p><p><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// картинка кода (здесь исключительно для примера).</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула.Параметры.QRCode </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> QRCode</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span></p><p>При создании табличного документа необходимо задать размер и параметры страницы, чтобы корректно вычислялись страницы при переносе:</p><p><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Новый</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ТабличныйДокумент</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// размер и параметры страницы (необходимо для вычислений страниц)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.РазмерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"A4"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ОриентацияСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОриентацияСтраницы.Ландшафт</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.МасштабПечати </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">100</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// 100%</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСверху </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">10</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСнизу </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">5</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСлева </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">15</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСправа </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">10</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">1</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span></p><p>Теперь можно формировать табличный документ, обращаясь к функции при построчном выводе данных в ТабДок.</p><p>Пример вывода какой-либо области:</p><p><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Область </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ШапкаДокумента"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// заполняем значениями параметров, если есть.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область.Параметры.Заполнить</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ПараметрыОтчетаВВидеСтруктуры</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Область</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span></p><p>Пример вывода таблицы:</p><p><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьШапкаТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ИмяТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">+</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ШапкаТаблицы"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Вывод шапки таблицы (с проверкой ЗапретВисячихШапокТаблицы)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Построчный вывод строк таблицы с данными.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Для</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">каждого</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Строка </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">из</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводимаяТаблица </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Цикл</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ИмяТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">+</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"Данные"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область.Параметры.Заполнить</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ПараметрыОтчетаВВидеСтруктуры</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// заполняем значениями параметров.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Вывод очередной строки таблицы с проверкой переноса и повтором шапки таблицы.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Область</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> О
бластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЦикла</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span></p>
<p>Параметр ЗапретВисячихШапокТаблицы в функции задан безусловно в Истина, но при использовании данной функции Вы можете вынести параметр за ее пределы и сделать настраиваемым, главное, что есть такая возможность.</p><p>Пример повтора шапки таблицы:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih0K8OzeUMew9HKvVAPn_l-5N2M0Y-STiRgM_2e32iMFEevPLTQmkOHE_FvS4M-dD8MtbQkFYnhAFYwO3VWk-LZEj1Ak7ySmKtxzB35Q_jfV_hmOKlAyXYhZcN1D1jxoyfl_vdQ2sbGHI/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="709" data-original-width="1013" height="466" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih0K8OzeUMew9HKvVAPn_l-5N2M0Y-STiRgM_2e32iMFEevPLTQmkOHE_FvS4M-dD8MtbQkFYnhAFYwO3VWk-LZEj1Ak7ySmKtxzB35Q_jfV_hmOKlAyXYhZcN1D1jxoyfl_vdQ2sbGHI/w665-h466/image.png" width="665" /></a></div><br />Почему в задаче был упомянут корректный вывод нижнего колонтитула на последней странице? Потому что при тех способах, что советовали в других статьях (например, просто добавить область нижнего колонтитула к последней выводимой области в документе) получалось, что колонтитул отображался не в самом низу страницы, а там, где закончился документ (например, где-нибудь посередине, а бывало и в вверху). В указанной функции для этого используется область пустой строки (т.е. последняя страница "дополняется" до самого низа пустыми строками и только в самом конце выводится нижний колонтитул).<p></p><p>Вот пример вывода последней страницы:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5feRIJO2b4SqkOv9Xt-zy6K6QBx2P7UiDM87vx9vHTOa78TMWr0CvFQ8rMOhXY2B4RTPLNzet68KBqcx67e4xoaibMkIhgZQquutatq4xp2AQthx31TCnonSdmnmLCnr9N0JNX9khFf8/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="784" data-original-width="808" height="647" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5feRIJO2b4SqkOv9Xt-zy6K6QBx2P7UiDM87vx9vHTOa78TMWr0CvFQ8rMOhXY2B4RTPLNzet68KBqcx67e4xoaibMkIhgZQquutatq4xp2AQthx31TCnonSdmnmLCnr9N0JNX9khFf8/w666-h647/image.png" width="666" /></a></div><br />Поэтому, после вывода всех данных в табличный документ делаем завершающий вызов функции, если нужно корректно завершить страницу с нижним колонтитулом:<p></p><p><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// завершающий вывод</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span></p><p>Полный пример:</p><p><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Функция</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> СформироватьПечатнуюФорму</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Получение макета.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Макет </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Документы.п_ВыпискаИзЭлектроннойЗачетнойКнижки.ПолучитьМакет</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"МакетСКолонтитулами"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьВерхнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ВерхнийКолонтитул"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"НижнийКолонтитул"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ПустаяСтрока"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">//Получаем данные для QR-кода</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
QRCode </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Новый</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Картинка</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">УправлениеПечатью.ДанныеQRКода</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"СтрокаДляКодирования"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">0</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">100</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула.Параметры.QRCode </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> QRCode</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Новый</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ТабличныйДокумент</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// размер и параметры страницы (необходимо для вычислений страниц)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.РазмерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"A4"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ОриентацияСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОриентацияСтраницы.Ландшафт</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.МасштабПечати </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">100</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// 100%</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСверху </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">10</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСнизу </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">5</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСлева </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">15</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.ПолеСправа </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">10</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">1</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Первый вывод верхнего колонтитула.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ТабДок.Вывести</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ПараметрыОтчетаВВидеСтруктуры </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Новый</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Структура</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ФамилияИмяОтчество, НомерДокумента"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ЭтотОбъект.ФизическоеЛицо</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЭтотОбъект.ЗачетнаяКнига</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"ШапкаДокумента"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// заполняем значениями параметров.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область.Параметры.Заполнить</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ПараметрыОтчетаВВидеСтруктуры</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Выводим в табличный документ.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Область</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Таблица курсовых работ.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Если</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЭтотОбъект.КурсовыеРаботы.Количество</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">></span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-number" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">0</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Тогда</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьШапкаТаблицы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"КурсовыеРаботыШапкаТаблицы"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Вывод шапки таблицы (с проверкой ЗапретВисячихШапокТаблицы)</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Построчный вывод строк таблицы с данными.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Для</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">каждого</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> СтрокаКР </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">из</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ЭтотОбъект.КурсовыеРаботы </span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Цикл</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"КурсовыеРаботыДанные"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область.Параметры.Заполнить</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">СтрокаКР</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> </span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// заполняем значениями параметров.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Вывод очередной строки таблицы с проверкой переноса и повтором шапки таблицы.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Область</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьШапкаТаблицы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЦикла</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецЕсли</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
Область </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Макет.ПолучитьОбласть</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span class="hljs-string" style="box-sizing: border-box; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">"Подвал"</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> Область</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьВерхнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-comment" style="box-sizing: border-box; color: #008200; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">// Завершающий вывод.</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
НомерСтраницы </span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">=</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ВыводВТабДокСКолонтитулами</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">(</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ОбластьПустойСтроки</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
ОбластьНижнегоКолонтитула</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">,</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> НомерСтраницы</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">)</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">Возврат</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;"> ТабДок</span><span class="hljs-special_symbols" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">;</span><span style="background-color: white; color: blue; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">
</span><span class="hljs-keyword" style="box-sizing: border-box; color: red; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14.3px; white-space: pre;">КонецФункции</span></p>
<p><br /></p><p><br /></p>
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div><i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com2tag:blogger.com,1999:blog-4403788466717695768.post-58034270897792910272020-04-13T11:00:00.001+04:002020-04-13T11:29:57.021+04:00Сравнение систем онлайн-трансляций (Teams, Proficonf, YouTube)<div dir="ltr" style="text-align: left;" trbidi="on">
В связи с режимом самоизоляции (апрель 2020) появилась необходимость проводить занятия в дистанционном формате.<br />
Провели с коллегами несколько экспериментов и выделили небольшой перечень систем онлайн-трансляций и видеоконференцсвязи, которые также доступны для учебного процесса.<br />
<br />
Сравнение производилась по 15 параметрам, результаты представлены в таблице.<br />
<br />
Надеемся, что данная информация поможет в выборе указанных технологий и определении сценариев более эффективного их использования.<br />
<br />
<b>Таблица: Сравнение систем онлайн-трансляций (Teams, Proficonf, YouTube)</b><br />
<br />
<a name='more'></a><br />
<table border="0" cellpadding="2" cellspacing="0" style="border: 1px dotted grey;">
<tbody>
<tr style="background-color: gold;">
<td style="border: 1px dotted grey; text-align: center; width: 36px;"><strong>П.п. </strong></td>
<td style="border: 1px dotted grey; text-align: center;"><strong>Возможность </strong></td>
<td style="border: 1px dotted grey; text-align: center;"><strong>Microsoft Teams </strong></td>
<td style="border: 1px dotted grey; text-align: center;"><strong>Proficonf </strong></td>
<td style="border: 1px dotted grey; text-align: center;"><strong>Трансляция YouTube </strong></td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">1</td>
<td style="border: 1px dotted grey; text-align: left;">Максимальное количество участников в одной трансляции</td>
<td style="background-color: lightyellow; border: 1px dotted grey; text-align: center;">до 100</td>
<td style="background-color: lightyellow; border: 1px dotted grey; text-align: center;">до 100</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">не ограничено</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">2</td>
<td style="border: 1px dotted grey; text-align: left;">Количество одновременных трансляций</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">не ограничено</td>
<td style="background-color: lightyellow; border: 1px dotted grey; text-align: center;">3</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">не ограничено</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">3</td>
<td style="border: 1px dotted grey; text-align: left;">Общее количество участников во всех трансляциях компании</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">согласно количеству лицензий</td>
<td style="background-color: lightyellow; border: 1px dotted grey; text-align: center;">100</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">не ограничено</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">4</td>
<td style="border: 1px dotted grey; text-align: left;">Требования к программному обеспечению ведущего </td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">любые варианты:<br />
приложение Windows, мобильное приложение, браузер</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">браузер</td>
<td style="background-color: pink; border: 1px dotted grey; text-align: center;">OBS Studio (+специально настроенный видеопоток), Google Chrome</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">5</td>
<td style="border: 1px dotted grey; text-align: left;">Требования к программному обеспечению зрителя</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">любые варианты:<br />
приложение Windows, мобильное приложение, браузер</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">браузер</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">любые варианты:<br />
браузер, мобильное приложение</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">6</td>
<td style="border: 1px dotted grey; text-align: left;">Несколько ведущих (с возможностью переключения сцены)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: pink; border: 1px dotted grey; text-align: center;">Нет</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">7</td>
<td style="border: 1px dotted grey; text-align: left;">Демонстрация ведущими экрана</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(расширенные возможности выбора)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">8</td>
<td style="border: 1px dotted grey; text-align: left;">Возможность передачи управления при демонстрации экрана (приложения) </td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: pink; border: 1px dotted grey; text-align: center;">Нет</td>
<td style="background-color: pink; border: 1px dotted grey; text-align: center;">Нет</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">9</td>
<td style="border: 1px dotted grey; text-align: left;">Демонстрация ведущим файла презентации (MS PowerPoint)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: pink; border: 1px dotted grey; text-align: center;">Нет<br />
(только при показе экрана)</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">10</td>
<td style="border: 1px dotted grey; text-align: left;">Демонстрация ведущим видео/аудио файла</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да</td>
<td style="background-color: pink; border: 1px dotted grey; text-align: center;">Нет</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">11</td>
<td style="border: 1px dotted grey; text-align: left;">Контроль допуска зрителей к трансляции</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(расширенные возможности по ограничению доступа)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(возможность организации открытых и закрытых собраний)</td>
<td style="background-color: lightyellow; border: 1px dotted grey; text-align: center;">Нет<br />
(доступ у всех, кто знает ссылку)</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">12</td>
<td style="border: 1px dotted grey; text-align: left;">Взаимодействие со слушателями</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(видео, аудио, чат, демонстрация экрана/презентации)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(видео, аудио, чат, демонстрация экрана/презентации)</td>
<td style="background-color: pink; border: 1px dotted grey; text-align: center;">Да<br />
(только чат)</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">13</td>
<td style="border: 1px dotted grey; text-align: left;">Ведущий должен иметь учетную запись</td>
<td style="background-color: lightyellow; border: 1px dotted grey; text-align: center;">Не обязательно<br />
(учетную запись должен иметь организатор встречи)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Нет</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Нет</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">14</td>
<td style="border: 1px dotted grey; text-align: left;">Зритель должен иметь учетную запись</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Не обязательно<br />
(есть возможность ограничить доступ только участникам с учетными записи)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Нет</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Нет</td>
</tr>
<tr>
<td style="border: 1px dotted grey; text-align: center;">15</td>
<td style="border: 1px dotted grey; text-align: left;">Запись трансляции</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(публикация в MS Stream)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(файл mp4, до 5 часов)</td>
<td style="background-color: palegreen; border: 1px dotted grey; text-align: center;">Да<br />
(публикация на YouTube)</td>
</tr>
</tbody>
</table>
<br />
<br />
<div style="text-align: right;">
<br />
(с) <a href="https://www.blogger.com/profile/07399414447459545634?rel=author" target="_blank">Ella S.</a></div>
<div>
<i><span style="color: #38761d;">Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.</span></i></div>
</div>
Ella S.http://www.blogger.com/profile/07399414447459545634noreply@blogger.com0