123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560 |
- <!DOCTYPE html><html lang="zh-cmn-Hans"><head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
- <style type="text/css">
- .anim-fade-in{-webkit-animation-name:fade-in;animation-name:fade-in;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.anim-fade-in.fast{-webkit-animation-duration:300ms;animation-duration:300ms}@-webkit-keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}.anim-fade-up{opacity:0;-webkit-animation-name:fade-up;animation-name:fade-up;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-delay:1s;animation-delay:1s}@-webkit-keyframes fade-up{0%{opacity:0.8;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fade-up{0%{opacity:0.8;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.anim-fade-down{-webkit-animation-name:fade-down;animation-name:fade-down;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes fade-down{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0.5;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes fade-down{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0.5;-webkit-transform:translateY(100%);transform:translateY(100%)}}.anim-grow-x{width:0%;-webkit-animation-name:grow-x;animation-name:grow-x;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes grow-x{to{width:100%}}@keyframes grow-x{to{width:100%}}.anim-shrink-x{-webkit-animation-name:shrink-x;animation-name:shrink-x;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes shrink-x{to{width:0%}}@keyframes shrink-x{to{width:0%}}.anim-scale-in{-webkit-animation-name:scale-in;animation-name:scale-in;-webkit-animation-duration:0.15s;animation-duration:0.15s;-webkit-animation-timing-function:cubic-bezier(0.2, 0, 0.13, 1.5);animation-timing-function:cubic-bezier(0.2, 0, 0.13, 1.5)}@-webkit-keyframes scale-in{0%{opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scale-in{0%{opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.anim-pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes pulse{0%{opacity:0.3}10%{opacity:1}100%{opacity:0.3}}@keyframes pulse{0%{opacity:0.3}10%{opacity:1}100%{opacity:0.3}}.anim-pulse-in{-webkit-animation-name:pulse-in;animation-name:pulse-in;-webkit-animation-duration:0.5s;animation-duration:0.5s}@-webkit-keyframes pulse-in{0%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}50%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}100%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes pulse-in{0%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}50%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}100%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}.border{border:1px #e1e4e8 solid !important}.border-top{border-top:1px #e1e4e8 solid !important}.border-right{border-right:1px #e1e4e8 solid !important}.border-bottom{border-bottom:1px #e1e4e8 solid !important}.border-left{border-left:1px #e1e4e8 solid !important}.border-y{border-top:1px #e1e4e8 solid !important;border-bottom:1px #e1e4e8 solid !important}.border-dashed{border-style:dashed !important}.border-blue{border-color:#0366d6 !important}.border-blue-light{border-color:#c8e1ff !important}.border-green{border-color:#34d058 !important}.border-green-light{border-color:#a2cbac !important}.border-red{border-color:#d73a49 !important}.border-red-light{border-color:#cea0a5 !important}.border-purple{border-color:#6f42c1 !important}.border-yellow{border-color:#d9d0a5 !important}.border-gray-light{border-color:#eaecef !important}.border-gray-dark{border-color:#d1d5da !important}.border-black-fade{border-color:rgba(27,31,35,0.15) !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:3px !important}.rounded-2{border-radius:6px !important}.box-shadow{box-shadow:0 1px 1px rgba(0,0,0,0.1) !important}.box-shadow-medium{box-shadow:0 1px 5px rgba(0,0,0,0.15) !important}.box-shadow-large{box-shadow:0 1px 15px rgba(0,0,0,0.15) !important}.box-shadow-extra-large{box-shadow:0 10px 50px rgba(0,0,0,0.07) !important}.box-shadow-none{box-shadow:none !important}.bg-white{background-color:#fff !important}.bg-blue{background-color:#0366d6 !important}.bg-blue-light{background-color:#f1f8ff !important}.bg-gray-dark{background-color:#24292e !important}.bg-gray{background-color:#f6f8fa !important}.bg-gray-light{background-color:#fafbfc !important}.bg-green{background-color:#28a745 !important}.bg-green-light{background-color:#dcffe4 !important}.bg-red{background-color:#d73a49 !important}.bg-red-light{background-color:#ffdce0 !important}.bg-yellow{background-color:#ffd33d !important}.bg-yellow-light{background-color:#fff5b1 !important}.bg-purple{background-color:#6f42c1 !important}.bg-purple-light{background-color:#f5f0ff !important}.bg-shade-gradient{background-image:-webkit-linear-gradient(270deg, rgba(0,0,0,0.065), transparent) !important;background-image:linear-gradient(180deg, rgba(0,0,0,0.065), transparent) !important;background-repeat:no-repeat !important;background-size:100% 200px !important}.text-blue{color:#0366d6 !important}.text-red{color:#cb2431 !important}.text-gray-light{color:#6a737d !important}.text-gray{color:#586069 !important}.text-gray-dark{color:#24292e !important}.text-green{color:#28a745 !important}.text-orange{color:#a04100 !important}.text-orange-light{color:#e36209 !important}.text-purple{color:#6f42c1 !important}.text-white{color:#fff !important}.text-inherit{color:inherit !important}.text-pending{color:#b08800 !important}.bg-pending{color:#dbab09 !important}.link-gray{color:#586069 !important}.link-gray:hover{color:#0366d6 !important}.link-gray-dark{color:#24292e !important}.link-gray-dark:hover{color:#0366d6 !important}.link-hover-blue:hover{color:#0366d6 !important}.muted-link{color:#586069 !important}.muted-link:hover{color:#0366d6 !important;text-decoration:none}.flex-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-webkit-flex-direction:row !important;flex-direction:row !important}.flex-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-webkit-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-webkit-flex-direction:column !important;flex-direction:column !important}.flex-wrap{-webkit-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-webkit-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-justify-start{-webkit-box-pack:start !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important}.flex-justify-end{-webkit-box-pack:end !important;-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.flex-justify-center{-webkit-box-pack:center !important;-webkit-justify-content:center !important;justify-content:center !important}.flex-justify-between{-webkit-box-pack:justify !important;-webkit-justify-content:space-between !important;justify-content:space-between !important}.flex-justify-around{-webkit-justify-content:space-around !important;justify-content:space-around !important}.flex-items-start{-webkit-box-align:start !important;-webkit-align-items:flex-start !important;align-items:flex-start !important}.flex-items-end{-webkit-box-align:end !important;-webkit-align-items:flex-end !important;align-items:flex-end !important}.flex-items-center{-webkit-box-align:center !important;-webkit-align-items:center !important;align-items:center !important}.flex-items-baseline{-webkit-box-align:baseline !important;-webkit-align-items:baseline !important;align-items:baseline !important}.flex-items-stretch{-webkit-box-align:stretch !important;-webkit-align-items:stretch !important;align-items:stretch !important}.flex-content-start{-webkit-align-content:flex-start !important;align-content:flex-start !important}.flex-content-end{-webkit-align-content:flex-end !important;align-content:flex-end !important}.flex-content-center{-webkit-align-content:center !important;align-content:center !important}.flex-content-between{-webkit-align-content:space-between !important;align-content:space-between !important}.flex-content-around{-webkit-align-content:space-around !important;align-content:space-around !important}.flex-content-stretch{-webkit-align-content:stretch !important;align-content:stretch !important}.flex-auto{-webkit-box-flex:1 !important;-webkit-flex:1 1 auto !important;flex:1 1 auto !important}.flex-shrink-0{-webkit-flex-shrink:0 !important;flex-shrink:0 !important}.flex-self-auto{-webkit-align-self:auto !important;align-self:auto !important}.flex-self-start{-webkit-align-self:flex-start !important;align-self:flex-start !important}.flex-self-end{-webkit-align-self:flex-end !important;align-self:flex-end !important}.flex-self-center{-webkit-align-self:center !important;align-self:center !important}.flex-self-baseline{-webkit-align-self:baseline !important;align-self:baseline !important}.flex-self-stretch{-webkit-align-self:stretch !important;align-self:stretch !important}.flex-item-equal{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:0;flex-basis:0}@media (min-width: 544px){.flex-sm-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-webkit-flex-direction:row !important;flex-direction:row !important}.flex-sm-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-webkit-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-webkit-flex-direction:column !important;flex-direction:column !important}.flex-sm-wrap{-webkit-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-justify-start{-webkit-box-pack:start !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important}.flex-sm-justify-end{-webkit-box-pack:end !important;-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.flex-sm-justify-center{-webkit-box-pack:center !important;-webkit-justify-content:center !important;justify-content:center !important}.flex-sm-justify-between{-webkit-box-pack:justify !important;-webkit-justify-content:space-between !important;justify-content:space-between !important}.flex-sm-justify-around{-webkit-justify-content:space-around !important;justify-content:space-around !important}.flex-sm-items-start{-webkit-box-align:start !important;-webkit-align-items:flex-start !important;align-items:flex-start !important}.flex-sm-items-end{-webkit-box-align:end !important;-webkit-align-items:flex-end !important;align-items:flex-end !important}.flex-sm-items-center{-webkit-box-align:center !important;-webkit-align-items:center !important;align-items:center !important}.flex-sm-items-baseline{-webkit-box-align:baseline !important;-webkit-align-items:baseline !important;align-items:baseline !important}.flex-sm-items-stretch{-webkit-box-align:stretch !important;-webkit-align-items:stretch !important;align-items:stretch !important}.flex-sm-content-start{-webkit-align-content:flex-start !important;align-content:flex-start !important}.flex-sm-content-end{-webkit-align-content:flex-end !important;align-content:flex-end !important}.flex-sm-content-center{-webkit-align-content:center !important;align-content:center !important}.flex-sm-content-between{-webkit-align-content:space-between !important;align-content:space-between !important}.flex-sm-content-around{-webkit-align-content:space-around !important;align-content:space-around !important}.flex-sm-content-stretch{-webkit-align-content:stretch !important;align-content:stretch !important}.flex-sm-auto{-webkit-box-flex:1 !important;-webkit-flex:1 1 auto !important;flex:1 1 auto !important}.flex-sm-shrink-0{-webkit-flex-shrink:0 !important;flex-shrink:0 !important}.flex-sm-self-auto{-webkit-align-self:auto !important;align-self:auto !important}.flex-sm-self-start{-webkit-align-self:flex-start !important;align-self:flex-start !important}.flex-sm-self-end{-webkit-align-self:flex-end !important;align-self:flex-end !important}.flex-sm-self-center{-webkit-align-self:center !important;align-self:center !important}.flex-sm-self-baseline{-webkit-align-self:baseline !important;align-self:baseline !important}.flex-sm-self-stretch{-webkit-align-self:stretch !important;align-self:stretch !important}.flex-sm-item-equal{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:0;flex-basis:0}}@media (min-width: 768px){.flex-md-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-webkit-flex-direction:row !important;flex-direction:row !important}.flex-md-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-webkit-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-webkit-flex-direction:column !important;flex-direction:column !important}.flex-md-wrap{-webkit-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-webkit-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-justify-start{-webkit-box-pack:start !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important}.flex-md-justify-end{-webkit-box-pack:end !important;-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.flex-md-justify-center{-webkit-box-pack:center !important;-webkit-justify-content:center !important;justify-content:center !important}.flex-md-justify-between{-webkit-box-pack:justify !important;-webkit-justify-content:space-between !important;justify-content:space-between !important}.flex-md-justify-around{-webkit-justify-content:space-around !important;justify-content:space-around !important}.flex-md-items-start{-webkit-box-align:start !important;-webkit-align-items:flex-start !important;align-items:flex-start !important}.flex-md-items-end{-webkit-box-align:end !important;-webkit-align-items:flex-end !important;align-items:flex-end !important}.flex-md-items-center{-webkit-box-align:center !important;-webkit-align-items:center !important;align-items:center !important}.flex-md-items-baseline{-webkit-box-align:baseline !important;-webkit-align-items:baseline !important;align-items:baseline !important}.flex-md-items-stretch{-webkit-box-align:stretch !important;-webkit-align-items:stretch !important;align-items:stretch !important}.flex-md-content-start{-webkit-align-content:flex-start !important;align-content:flex-start !important}.flex-md-content-end{-webkit-align-content:flex-end !important;align-content:flex-end !important}.flex-md-content-center{-webkit-align-content:center !important;align-content:center !important}.flex-md-content-between{-webkit-align-content:space-between !important;align-content:space-between !important}.flex-md-content-around{-webkit-align-content:space-around !important;align-content:space-around !important}.flex-md-content-stretch{-webkit-align-content:stretch !important;align-content:stretch !important}.flex-md-auto{-webkit-box-flex:1 !important;-webkit-flex:1 1 auto !important;flex:1 1 auto !important}.flex-md-shrink-0{-webkit-flex-shrink:0 !important;flex-shrink:0 !important}.flex-md-self-auto{-webkit-align-self:auto !important;align-self:auto !important}.flex-md-self-start{-webkit-align-self:flex-start !important;align-self:flex-start !important}.flex-md-self-end{-webkit-align-self:flex-end !important;align-self:flex-end !important}.flex-md-self-center{-webkit-align-self:center !important;align-self:center !important}.flex-md-self-baseline{-webkit-align-self:baseline !important;align-self:baseline !important}.flex-md-self-stretch{-webkit-align-self:stretch !important;align-self:stretch !important}.flex-md-item-equal{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:0;flex-basis:0}}@media (min-width: 1012px){.flex-lg-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-webkit-flex-direction:row !important;flex-direction:row !important}.flex-lg-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-webkit-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-webkit-flex-direction:column !important;flex-direction:column !important}.flex-lg-wrap{-webkit-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-justify-start{-webkit-box-pack:start !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important}.flex-lg-justify-end{-webkit-box-pack:end !important;-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.flex-lg-justify-center{-webkit-box-pack:center !important;-webkit-justify-content:center !important;justify-content:center !important}.flex-lg-justify-between{-webkit-box-pack:justify !important;-webkit-justify-content:space-between !important;justify-content:space-between !important}.flex-lg-justify-around{-webkit-justify-content:space-around !important;justify-content:space-around !important}.flex-lg-items-start{-webkit-box-align:start !important;-webkit-align-items:flex-start !important;align-items:flex-start !important}.flex-lg-items-end{-webkit-box-align:end !important;-webkit-align-items:flex-end !important;align-items:flex-end !important}.flex-lg-items-center{-webkit-box-align:center !important;-webkit-align-items:center !important;align-items:center !important}.flex-lg-items-baseline{-webkit-box-align:baseline !important;-webkit-align-items:baseline !important;align-items:baseline !important}.flex-lg-items-stretch{-webkit-box-align:stretch !important;-webkit-align-items:stretch !important;align-items:stretch !important}.flex-lg-content-start{-webkit-align-content:flex-start !important;align-content:flex-start !important}.flex-lg-content-end{-webkit-align-content:flex-end !important;align-content:flex-end !important}.flex-lg-content-center{-webkit-align-content:center !important;align-content:center !important}.flex-lg-content-between{-webkit-align-content:space-between !important;align-content:space-between !important}.flex-lg-content-around{-webkit-align-content:space-around !important;align-content:space-around !important}.flex-lg-content-stretch{-webkit-align-content:stretch !important;align-content:stretch !important}.flex-lg-auto{-webkit-box-flex:1 !important;-webkit-flex:1 1 auto !important;flex:1 1 auto !important}.flex-lg-shrink-0{-webkit-flex-shrink:0 !important;flex-shrink:0 !important}.flex-lg-self-auto{-webkit-align-self:auto !important;align-self:auto !important}.flex-lg-self-start{-webkit-align-self:flex-start !important;align-self:flex-start !important}.flex-lg-self-end{-webkit-align-self:flex-end !important;align-self:flex-end !important}.flex-lg-self-center{-webkit-align-self:center !important;align-self:center !important}.flex-lg-self-baseline{-webkit-align-self:baseline !important;align-self:baseline !important}.flex-lg-self-stretch{-webkit-align-self:stretch !important;align-self:stretch !important}.flex-lg-item-equal{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:0;flex-basis:0}}@media (min-width: 1280px){.flex-xl-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-webkit-flex-direction:row !important;flex-direction:row !important}.flex-xl-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-webkit-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-webkit-flex-direction:column !important;flex-direction:column !important}.flex-xl-wrap{-webkit-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-justify-start{-webkit-box-pack:start !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important}.flex-xl-justify-end{-webkit-box-pack:end !important;-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.flex-xl-justify-center{-webkit-box-pack:center !important;-webkit-justify-content:center !important;justify-content:center !important}.flex-xl-justify-between{-webkit-box-pack:justify !important;-webkit-justify-content:space-between !important;justify-content:space-between !important}.flex-xl-justify-around{-webkit-justify-content:space-around !important;justify-content:space-around !important}.flex-xl-items-start{-webkit-box-align:start !important;-webkit-align-items:flex-start !important;align-items:flex-start !important}.flex-xl-items-end{-webkit-box-align:end !important;-webkit-align-items:flex-end !important;align-items:flex-end !important}.flex-xl-items-center{-webkit-box-align:center !important;-webkit-align-items:center !important;align-items:center !important}.flex-xl-items-baseline{-webkit-box-align:baseline !important;-webkit-align-items:baseline !important;align-items:baseline !important}.flex-xl-items-stretch{-webkit-box-align:stretch !important;-webkit-align-items:stretch !important;align-items:stretch !important}.flex-xl-content-start{-webkit-align-content:flex-start !important;align-content:flex-start !important}.flex-xl-content-end{-webkit-align-content:flex-end !important;align-content:flex-end !important}.flex-xl-content-center{-webkit-align-content:center !important;align-content:center !important}.flex-xl-content-between{-webkit-align-content:space-between !important;align-content:space-between !important}.flex-xl-content-around{-webkit-align-content:space-around !important;align-content:space-around !important}.flex-xl-content-stretch{-webkit-align-content:stretch !important;align-content:stretch !important}.flex-xl-auto{-webkit-box-flex:1 !important;-webkit-flex:1 1 auto !important;flex:1 1 auto !important}.flex-xl-shrink-0{-webkit-flex-shrink:0 !important;flex-shrink:0 !important}.flex-xl-self-auto{-webkit-align-self:auto !important;align-self:auto !important}.flex-xl-self-start{-webkit-align-self:flex-start !important;align-self:flex-start !important}.flex-xl-self-end{-webkit-align-self:flex-end !important;align-self:flex-end !important}.flex-xl-self-center{-webkit-align-self:center !important;align-self:center !important}.flex-xl-self-baseline{-webkit-align-self:baseline !important;align-self:baseline !important}.flex-xl-self-stretch{-webkit-align-self:stretch !important;align-self:stretch !important}.flex-xl-item-equal{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:0;flex-basis:0}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.top-0{top:0 !important}.right-0{right:0 !important}.bottom-0{bottom:0 !important}.left-0{left:0 !important}.v-align-middle{vertical-align:middle !important}.v-align-top{vertical-align:top !important}.v-align-bottom{vertical-align:bottom !important}.v-align-text-top{vertical-align:text-top !important}.v-align-text-bottom{vertical-align:text-bottom !important}.overflow-hidden{overflow:hidden !important}.overflow-scroll{overflow:scroll !important}.overflow-auto{overflow:auto !important}.clearfix::before{display:table;content:""}.clearfix::after{display:table;clear:both;content:""}.float-right{float:right !important}.float-left{float:left !important}.float-none{float:none !important}@media (min-width: 544px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 1012px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1280px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.width-fit{max-width:100% !important}.width-full{width:100% !important}.height-full{height:100% !important}.min-width-0{min-width:0 !important}.direction-rtl{direction:rtl !important}.direction-ltr{direction:ltr !important}@media (min-width: 544px){.direction-sm-rtl{direction:rtl !important}.direction-sm-ltr{direction:ltr !important}}@media (min-width: 768px){.direction-md-rtl{direction:rtl !important}.direction-md-ltr{direction:ltr !important}}@media (min-width: 1012px){.direction-lg-rtl{direction:rtl !important}.direction-lg-ltr{direction:ltr !important}}@media (min-width: 1280px){.direction-xl-rtl{direction:rtl !important}.direction-xl-ltr{direction:ltr !important}}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mt-n0{margin-top:-0 !important}.mr-n0{margin-right:-0 !important}.mb-n0{margin-bottom:-0 !important}.ml-n0{margin-left:-0 !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:4px !important}.mt-1{margin-top:4px !important}.mr-1{margin-right:4px !important}.mb-1{margin-bottom:4px !important}.ml-1{margin-left:4px !important}.mt-n1{margin-top:-4px !important}.mr-n1{margin-right:-4px !important}.mb-n1{margin-bottom:-4px !important}.ml-n1{margin-left:-4px !important}.mx-1{margin-right:4px !important;margin-left:4px !important}.my-1{margin-top:4px !important;margin-bottom:4px !important}.m-2{margin:8px !important}.mt-2{margin-top:8px !important}.mr-2{margin-right:8px !important}.mb-2{margin-bottom:8px !important}.ml-2{margin-left:8px !important}.mt-n2{margin-top:-8px !important}.mr-n2{margin-right:-8px !important}.mb-n2{margin-bottom:-8px !important}.ml-n2{margin-left:-8px !important}.mx-2{margin-right:8px !important;margin-left:8px !important}.my-2{margin-top:8px !important;margin-bottom:8px !important}.m-3{margin:16px !important}.mt-3{margin-top:16px !important}.mr-3{margin-right:16px !important}.mb-3{margin-bottom:16px !important}.ml-3{margin-left:16px !important}.mt-n3{margin-top:-16px !important}.mr-n3{margin-right:-16px !important}.mb-n3{margin-bottom:-16px !important}.ml-n3{margin-left:-16px !important}.mx-3{margin-right:16px !important;margin-left:16px !important}.my-3{margin-top:16px !important;margin-bottom:16px !important}.m-4{margin:24px !important}.mt-4{margin-top:24px !important}.mr-4{margin-right:24px !important}.mb-4{margin-bottom:24px !important}.ml-4{margin-left:24px !important}.mt-n4{margin-top:-24px !important}.mr-n4{margin-right:-24px !important}.mb-n4{margin-bottom:-24px !important}.ml-n4{margin-left:-24px !important}.mx-4{margin-right:24px !important;margin-left:24px !important}.my-4{margin-top:24px !important;margin-bottom:24px !important}.m-5{margin:32px !important}.mt-5{margin-top:32px !important}.mr-5{margin-right:32px !important}.mb-5{margin-bottom:32px !important}.ml-5{margin-left:32px !important}.mt-n5{margin-top:-32px !important}.mr-n5{margin-right:-32px !important}.mb-n5{margin-bottom:-32px !important}.ml-n5{margin-left:-32px !important}.mx-5{margin-right:32px !important;margin-left:32px !important}.my-5{margin-top:32px !important;margin-bottom:32px !important}.m-6{margin:40px !important}.mt-6{margin-top:40px !important}.mr-6{margin-right:40px !important}.mb-6{margin-bottom:40px !important}.ml-6{margin-left:40px !important}.mt-n6{margin-top:-40px !important}.mr-n6{margin-right:-40px !important}.mb-n6{margin-bottom:-40px !important}.ml-n6{margin-left:-40px !important}.mx-6{margin-right:40px !important;margin-left:40px !important}.my-6{margin-top:40px !important;margin-bottom:40px !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}@media (min-width: 544px){.m-sm-0{margin:0 !important}.mt-sm-0{margin-top:0 !important}.mr-sm-0{margin-right:0 !important}.mb-sm-0{margin-bottom:0 !important}.ml-sm-0{margin-left:0 !important}.mt-sm-n0{margin-top:-0 !important}.mr-sm-n0{margin-right:-0 !important}.mb-sm-n0{margin-bottom:-0 !important}.ml-sm-n0{margin-left:-0 !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 544px){.m-sm-1{margin:4px !important}.mt-sm-1{margin-top:4px !important}.mr-sm-1{margin-right:4px !important}.mb-sm-1{margin-bottom:4px !important}.ml-sm-1{margin-left:4px !important}.mt-sm-n1{margin-top:-4px !important}.mr-sm-n1{margin-right:-4px !important}.mb-sm-n1{margin-bottom:-4px !important}.ml-sm-n1{margin-left:-4px !important}.mx-sm-1{margin-right:4px !important;margin-left:4px !important}.my-sm-1{margin-top:4px !important;margin-bottom:4px !important}}@media (min-width: 544px){.m-sm-2{margin:8px !important}.mt-sm-2{margin-top:8px !important}.mr-sm-2{margin-right:8px !important}.mb-sm-2{margin-bottom:8px !important}.ml-sm-2{margin-left:8px !important}.mt-sm-n2{margin-top:-8px !important}.mr-sm-n2{margin-right:-8px !important}.mb-sm-n2{margin-bottom:-8px !important}.ml-sm-n2{margin-left:-8px !important}.mx-sm-2{margin-right:8px !important;margin-left:8px !important}.my-sm-2{margin-top:8px !important;margin-bottom:8px !important}}@media (min-width: 544px){.m-sm-3{margin:16px !important}.mt-sm-3{margin-top:16px !important}.mr-sm-3{margin-right:16px !important}.mb-sm-3{margin-bottom:16px !important}.ml-sm-3{margin-left:16px !important}.mt-sm-n3{margin-top:-16px !important}.mr-sm-n3{margin-right:-16px !important}.mb-sm-n3{margin-bottom:-16px !important}.ml-sm-n3{margin-left:-16px !important}.mx-sm-3{margin-right:16px !important;margin-left:16px !important}.my-sm-3{margin-top:16px !important;margin-bottom:16px !important}}@media (min-width: 544px){.m-sm-4{margin:24px !important}.mt-sm-4{margin-top:24px !important}.mr-sm-4{margin-right:24px !important}.mb-sm-4{margin-bottom:24px !important}.ml-sm-4{margin-left:24px !important}.mt-sm-n4{margin-top:-24px !important}.mr-sm-n4{margin-right:-24px !important}.mb-sm-n4{margin-bottom:-24px !important}.ml-sm-n4{margin-left:-24px !important}.mx-sm-4{margin-right:24px !important;margin-left:24px !important}.my-sm-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 544px){.m-sm-5{margin:32px !important}.mt-sm-5{margin-top:32px !important}.mr-sm-5{margin-right:32px !important}.mb-sm-5{margin-bottom:32px !important}.ml-sm-5{margin-left:32px !important}.mt-sm-n5{margin-top:-32px !important}.mr-sm-n5{margin-right:-32px !important}.mb-sm-n5{margin-bottom:-32px !important}.ml-sm-n5{margin-left:-32px !important}.mx-sm-5{margin-right:32px !important;margin-left:32px !important}.my-sm-5{margin-top:32px !important;margin-bottom:32px !important}}@media (min-width: 544px){.m-sm-6{margin:40px !important}.mt-sm-6{margin-top:40px !important}.mr-sm-6{margin-right:40px !important}.mb-sm-6{margin-bottom:40px !important}.ml-sm-6{margin-left:40px !important}.mt-sm-n6{margin-top:-40px !important}.mr-sm-n6{margin-right:-40px !important}.mb-sm-n6{margin-bottom:-40px !important}.ml-sm-n6{margin-left:-40px !important}.mx-sm-6{margin-right:40px !important;margin-left:40px !important}.my-sm-6{margin-top:40px !important;margin-bottom:40px !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0{margin-top:0 !important}.mr-md-0{margin-right:0 !important}.mb-md-0{margin-bottom:0 !important}.ml-md-0{margin-left:0 !important}.mt-md-n0{margin-top:-0 !important}.mr-md-n0{margin-right:-0 !important}.mb-md-n0{margin-bottom:-0 !important}.ml-md-n0{margin-left:-0 !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 768px){.m-md-1{margin:4px !important}.mt-md-1{margin-top:4px !important}.mr-md-1{margin-right:4px !important}.mb-md-1{margin-bottom:4px !important}.ml-md-1{margin-left:4px !important}.mt-md-n1{margin-top:-4px !important}.mr-md-n1{margin-right:-4px !important}.mb-md-n1{margin-bottom:-4px !important}.ml-md-n1{margin-left:-4px !important}.mx-md-1{margin-right:4px !important;margin-left:4px !important}.my-md-1{margin-top:4px !important;margin-bottom:4px !important}}@media (min-width: 768px){.m-md-2{margin:8px !important}.mt-md-2{margin-top:8px !important}.mr-md-2{margin-right:8px !important}.mb-md-2{margin-bottom:8px !important}.ml-md-2{margin-left:8px !important}.mt-md-n2{margin-top:-8px !important}.mr-md-n2{margin-right:-8px !important}.mb-md-n2{margin-bottom:-8px !important}.ml-md-n2{margin-left:-8px !important}.mx-md-2{margin-right:8px !important;margin-left:8px !important}.my-md-2{margin-top:8px !important;margin-bottom:8px !important}}@media (min-width: 768px){.m-md-3{margin:16px !important}.mt-md-3{margin-top:16px !important}.mr-md-3{margin-right:16px !important}.mb-md-3{margin-bottom:16px !important}.ml-md-3{margin-left:16px !important}.mt-md-n3{margin-top:-16px !important}.mr-md-n3{margin-right:-16px !important}.mb-md-n3{margin-bottom:-16px !important}.ml-md-n3{margin-left:-16px !important}.mx-md-3{margin-right:16px !important;margin-left:16px !important}.my-md-3{margin-top:16px !important;margin-bottom:16px !important}}@media (min-width: 768px){.m-md-4{margin:24px !important}.mt-md-4{margin-top:24px !important}.mr-md-4{margin-right:24px !important}.mb-md-4{margin-bottom:24px !important}.ml-md-4{margin-left:24px !important}.mt-md-n4{margin-top:-24px !important}.mr-md-n4{margin-right:-24px !important}.mb-md-n4{margin-bottom:-24px !important}.ml-md-n4{margin-left:-24px !important}.mx-md-4{margin-right:24px !important;margin-left:24px !important}.my-md-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 768px){.m-md-5{margin:32px !important}.mt-md-5{margin-top:32px !important}.mr-md-5{margin-right:32px !important}.mb-md-5{margin-bottom:32px !important}.ml-md-5{margin-left:32px !important}.mt-md-n5{margin-top:-32px !important}.mr-md-n5{margin-right:-32px !important}.mb-md-n5{margin-bottom:-32px !important}.ml-md-n5{margin-left:-32px !important}.mx-md-5{margin-right:32px !important;margin-left:32px !important}.my-md-5{margin-top:32px !important;margin-bottom:32px !important}}@media (min-width: 768px){.m-md-6{margin:40px !important}.mt-md-6{margin-top:40px !important}.mr-md-6{margin-right:40px !important}.mb-md-6{margin-bottom:40px !important}.ml-md-6{margin-left:40px !important}.mt-md-n6{margin-top:-40px !important}.mr-md-n6{margin-right:-40px !important}.mb-md-n6{margin-bottom:-40px !important}.ml-md-n6{margin-left:-40px !important}.mx-md-6{margin-right:40px !important;margin-left:40px !important}.my-md-6{margin-top:40px !important;margin-bottom:40px !important}}@media (min-width: 1012px){.m-lg-0{margin:0 !important}.mt-lg-0{margin-top:0 !important}.mr-lg-0{margin-right:0 !important}.mb-lg-0{margin-bottom:0 !important}.ml-lg-0{margin-left:0 !important}.mt-lg-n0{margin-top:-0 !important}.mr-lg-n0{margin-right:-0 !important}.mb-lg-n0{margin-bottom:-0 !important}.ml-lg-n0{margin-left:-0 !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 1012px){.m-lg-1{margin:4px !important}.mt-lg-1{margin-top:4px !important}.mr-lg-1{margin-right:4px !important}.mb-lg-1{margin-bottom:4px !important}.ml-lg-1{margin-left:4px !important}.mt-lg-n1{margin-top:-4px !important}.mr-lg-n1{margin-right:-4px !important}.mb-lg-n1{margin-bottom:-4px !important}.ml-lg-n1{margin-left:-4px !important}.mx-lg-1{margin-right:4px !important;margin-left:4px !important}.my-lg-1{margin-top:4px !important;margin-bottom:4px !important}}@media (min-width: 1012px){.m-lg-2{margin:8px !important}.mt-lg-2{margin-top:8px !important}.mr-lg-2{margin-right:8px !important}.mb-lg-2{margin-bottom:8px !important}.ml-lg-2{margin-left:8px !important}.mt-lg-n2{margin-top:-8px !important}.mr-lg-n2{margin-right:-8px !important}.mb-lg-n2{margin-bottom:-8px !important}.ml-lg-n2{margin-left:-8px !important}.mx-lg-2{margin-right:8px !important;margin-left:8px !important}.my-lg-2{margin-top:8px !important;margin-bottom:8px !important}}@media (min-width: 1012px){.m-lg-3{margin:16px !important}.mt-lg-3{margin-top:16px !important}.mr-lg-3{margin-right:16px !important}.mb-lg-3{margin-bottom:16px !important}.ml-lg-3{margin-left:16px !important}.mt-lg-n3{margin-top:-16px !important}.mr-lg-n3{margin-right:-16px !important}.mb-lg-n3{margin-bottom:-16px !important}.ml-lg-n3{margin-left:-16px !important}.mx-lg-3{margin-right:16px !important;margin-left:16px !important}.my-lg-3{margin-top:16px !important;margin-bottom:16px !important}}@media (min-width: 1012px){.m-lg-4{margin:24px !important}.mt-lg-4{margin-top:24px !important}.mr-lg-4{margin-right:24px !important}.mb-lg-4{margin-bottom:24px !important}.ml-lg-4{margin-left:24px !important}.mt-lg-n4{margin-top:-24px !important}.mr-lg-n4{margin-right:-24px !important}.mb-lg-n4{margin-bottom:-24px !important}.ml-lg-n4{margin-left:-24px !important}.mx-lg-4{margin-right:24px !important;margin-left:24px !important}.my-lg-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 1012px){.m-lg-5{margin:32px !important}.mt-lg-5{margin-top:32px !important}.mr-lg-5{margin-right:32px !important}.mb-lg-5{margin-bottom:32px !important}.ml-lg-5{margin-left:32px !important}.mt-lg-n5{margin-top:-32px !important}.mr-lg-n5{margin-right:-32px !important}.mb-lg-n5{margin-bottom:-32px !important}.ml-lg-n5{margin-left:-32px !important}.mx-lg-5{margin-right:32px !important;margin-left:32px !important}.my-lg-5{margin-top:32px !important;margin-bottom:32px !important}}@media (min-width: 1012px){.m-lg-6{margin:40px !important}.mt-lg-6{margin-top:40px !important}.mr-lg-6{margin-right:40px !important}.mb-lg-6{margin-bottom:40px !important}.ml-lg-6{margin-left:40px !important}.mt-lg-n6{margin-top:-40px !important}.mr-lg-n6{margin-right:-40px !important}.mb-lg-n6{margin-bottom:-40px !important}.ml-lg-n6{margin-left:-40px !important}.mx-lg-6{margin-right:40px !important;margin-left:40px !important}.my-lg-6{margin-top:40px !important;margin-bottom:40px !important}}@media (min-width: 1280px){.m-xl-0{margin:0 !important}.mt-xl-0{margin-top:0 !important}.mr-xl-0{margin-right:0 !important}.mb-xl-0{margin-bottom:0 !important}.ml-xl-0{margin-left:0 !important}.mt-xl-n0{margin-top:-0 !important}.mr-xl-n0{margin-right:-0 !important}.mb-xl-n0{margin-bottom:-0 !important}.ml-xl-n0{margin-left:-0 !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 1280px){.m-xl-1{margin:4px !important}.mt-xl-1{margin-top:4px !important}.mr-xl-1{margin-right:4px !important}.mb-xl-1{margin-bottom:4px !important}.ml-xl-1{margin-left:4px !important}.mt-xl-n1{margin-top:-4px !important}.mr-xl-n1{margin-right:-4px !important}.mb-xl-n1{margin-bottom:-4px !important}.ml-xl-n1{margin-left:-4px !important}.mx-xl-1{margin-right:4px !important;margin-left:4px !important}.my-xl-1{margin-top:4px !important;margin-bottom:4px !important}}@media (min-width: 1280px){.m-xl-2{margin:8px !important}.mt-xl-2{margin-top:8px !important}.mr-xl-2{margin-right:8px !important}.mb-xl-2{margin-bottom:8px !important}.ml-xl-2{margin-left:8px !important}.mt-xl-n2{margin-top:-8px !important}.mr-xl-n2{margin-right:-8px !important}.mb-xl-n2{margin-bottom:-8px !important}.ml-xl-n2{margin-left:-8px !important}.mx-xl-2{margin-right:8px !important;margin-left:8px !important}.my-xl-2{margin-top:8px !important;margin-bottom:8px !important}}@media (min-width: 1280px){.m-xl-3{margin:16px !important}.mt-xl-3{margin-top:16px !important}.mr-xl-3{margin-right:16px !important}.mb-xl-3{margin-bottom:16px !important}.ml-xl-3{margin-left:16px !important}.mt-xl-n3{margin-top:-16px !important}.mr-xl-n3{margin-right:-16px !important}.mb-xl-n3{margin-bottom:-16px !important}.ml-xl-n3{margin-left:-16px !important}.mx-xl-3{margin-right:16px !important;margin-left:16px !important}.my-xl-3{margin-top:16px !important;margin-bottom:16px !important}}@media (min-width: 1280px){.m-xl-4{margin:24px !important}.mt-xl-4{margin-top:24px !important}.mr-xl-4{margin-right:24px !important}.mb-xl-4{margin-bottom:24px !important}.ml-xl-4{margin-left:24px !important}.mt-xl-n4{margin-top:-24px !important}.mr-xl-n4{margin-right:-24px !important}.mb-xl-n4{margin-bottom:-24px !important}.ml-xl-n4{margin-left:-24px !important}.mx-xl-4{margin-right:24px !important;margin-left:24px !important}.my-xl-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 1280px){.m-xl-5{margin:32px !important}.mt-xl-5{margin-top:32px !important}.mr-xl-5{margin-right:32px !important}.mb-xl-5{margin-bottom:32px !important}.ml-xl-5{margin-left:32px !important}.mt-xl-n5{margin-top:-32px !important}.mr-xl-n5{margin-right:-32px !important}.mb-xl-n5{margin-bottom:-32px !important}.ml-xl-n5{margin-left:-32px !important}.mx-xl-5{margin-right:32px !important;margin-left:32px !important}.my-xl-5{margin-top:32px !important;margin-bottom:32px !important}}@media (min-width: 1280px){.m-xl-6{margin:40px !important}.mt-xl-6{margin-top:40px !important}.mr-xl-6{margin-right:40px !important}.mb-xl-6{margin-bottom:40px !important}.ml-xl-6{margin-left:40px !important}.mt-xl-n6{margin-top:-40px !important}.mr-xl-n6{margin-right:-40px !important}.mb-xl-n6{margin-bottom:-40px !important}.ml-xl-n6{margin-left:-40px !important}.mx-xl-6{margin-right:40px !important;margin-left:40px !important}.my-xl-6{margin-top:40px !important;margin-bottom:40px !important}}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-right:0 !important;padding-left:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:4px !important}.pt-1{padding-top:4px !important}.pr-1{padding-right:4px !important}.pb-1{padding-bottom:4px !important}.pl-1{padding-left:4px !important}.px-1{padding-right:4px !important;padding-left:4px !important}.py-1{padding-top:4px !important;padding-bottom:4px !important}.p-2{padding:8px !important}.pt-2{padding-top:8px !important}.pr-2{padding-right:8px !important}.pb-2{padding-bottom:8px !important}.pl-2{padding-left:8px !important}.px-2{padding-right:8px !important;padding-left:8px !important}.py-2{padding-top:8px !important;padding-bottom:8px !important}.p-3{padding:16px !important}.pt-3{padding-top:16px !important}.pr-3{padding-right:16px !important}.pb-3{padding-bottom:16px !important}.pl-3{padding-left:16px !important}.px-3{padding-right:16px !important;padding-left:16px !important}.py-3{padding-top:16px !important;padding-bottom:16px !important}.p-4{padding:24px !important}.pt-4{padding-top:24px !important}.pr-4{padding-right:24px !important}.pb-4{padding-bottom:24px !important}.pl-4{padding-left:24px !important}.px-4{padding-right:24px !important;padding-left:24px !important}.py-4{padding-top:24px !important;padding-bottom:24px !important}.p-5{padding:32px !important}.pt-5{padding-top:32px !important}.pr-5{padding-right:32px !important}.pb-5{padding-bottom:32px !important}.pl-5{padding-left:32px !important}.px-5{padding-right:32px !important;padding-left:32px !important}.py-5{padding-top:32px !important;padding-bottom:32px !important}.p-6{padding:40px !important}.pt-6{padding-top:40px !important}.pr-6{padding-right:40px !important}.pb-6{padding-bottom:40px !important}.pl-6{padding-left:40px !important}.px-6{padding-right:40px !important;padding-left:40px !important}.py-6{padding-top:40px !important;padding-bottom:40px !important}@media (min-width: 544px){.p-sm-0{padding:0 !important}.pt-sm-0{padding-top:0 !important}.pr-sm-0{padding-right:0 !important}.pb-sm-0{padding-bottom:0 !important}.pl-sm-0{padding-left:0 !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 544px){.p-sm-1{padding:4px !important}.pt-sm-1{padding-top:4px !important}.pr-sm-1{padding-right:4px !important}.pb-sm-1{padding-bottom:4px !important}.pl-sm-1{padding-left:4px !important}.px-sm-1{padding-right:4px !important;padding-left:4px !important}.py-sm-1{padding-top:4px !important;padding-bottom:4px !important}}@media (min-width: 544px){.p-sm-2{padding:8px !important}.pt-sm-2{padding-top:8px !important}.pr-sm-2{padding-right:8px !important}.pb-sm-2{padding-bottom:8px !important}.pl-sm-2{padding-left:8px !important}.px-sm-2{padding-right:8px !important;padding-left:8px !important}.py-sm-2{padding-top:8px !important;padding-bottom:8px !important}}@media (min-width: 544px){.p-sm-3{padding:16px !important}.pt-sm-3{padding-top:16px !important}.pr-sm-3{padding-right:16px !important}.pb-sm-3{padding-bottom:16px !important}.pl-sm-3{padding-left:16px !important}.px-sm-3{padding-right:16px !important;padding-left:16px !important}.py-sm-3{padding-top:16px !important;padding-bottom:16px !important}}@media (min-width: 544px){.p-sm-4{padding:24px !important}.pt-sm-4{padding-top:24px !important}.pr-sm-4{padding-right:24px !important}.pb-sm-4{padding-bottom:24px !important}.pl-sm-4{padding-left:24px !important}.px-sm-4{padding-right:24px !important;padding-left:24px !important}.py-sm-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 544px){.p-sm-5{padding:32px !important}.pt-sm-5{padding-top:32px !important}.pr-sm-5{padding-right:32px !important}.pb-sm-5{padding-bottom:32px !important}.pl-sm-5{padding-left:32px !important}.px-sm-5{padding-right:32px !important;padding-left:32px !important}.py-sm-5{padding-top:32px !important;padding-bottom:32px !important}}@media (min-width: 544px){.p-sm-6{padding:40px !important}.pt-sm-6{padding-top:40px !important}.pr-sm-6{padding-right:40px !important}.pb-sm-6{padding-bottom:40px !important}.pl-sm-6{padding-left:40px !important}.px-sm-6{padding-right:40px !important;padding-left:40px !important}.py-sm-6{padding-top:40px !important;padding-bottom:40px !important}}@media (min-width: 768px){.p-md-0{padding:0 !important}.pt-md-0{padding-top:0 !important}.pr-md-0{padding-right:0 !important}.pb-md-0{padding-bottom:0 !important}.pl-md-0{padding-left:0 !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 768px){.p-md-1{padding:4px !important}.pt-md-1{padding-top:4px !important}.pr-md-1{padding-right:4px !important}.pb-md-1{padding-bottom:4px !important}.pl-md-1{padding-left:4px !important}.px-md-1{padding-right:4px !important;padding-left:4px !important}.py-md-1{padding-top:4px !important;padding-bottom:4px !important}}@media (min-width: 768px){.p-md-2{padding:8px !important}.pt-md-2{padding-top:8px !important}.pr-md-2{padding-right:8px !important}.pb-md-2{padding-bottom:8px !important}.pl-md-2{padding-left:8px !important}.px-md-2{padding-right:8px !important;padding-left:8px !important}.py-md-2{padding-top:8px !important;padding-bottom:8px !important}}@media (min-width: 768px){.p-md-3{padding:16px !important}.pt-md-3{padding-top:16px !important}.pr-md-3{padding-right:16px !important}.pb-md-3{padding-bottom:16px !important}.pl-md-3{padding-left:16px !important}.px-md-3{padding-right:16px !important;padding-left:16px !important}.py-md-3{padding-top:16px !important;padding-bottom:16px !important}}@media (min-width: 768px){.p-md-4{padding:24px !important}.pt-md-4{padding-top:24px !important}.pr-md-4{padding-right:24px !important}.pb-md-4{padding-bottom:24px !important}.pl-md-4{padding-left:24px !important}.px-md-4{padding-right:24px !important;padding-left:24px !important}.py-md-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 768px){.p-md-5{padding:32px !important}.pt-md-5{padding-top:32px !important}.pr-md-5{padding-right:32px !important}.pb-md-5{padding-bottom:32px !important}.pl-md-5{padding-left:32px !important}.px-md-5{padding-right:32px !important;padding-left:32px !important}.py-md-5{padding-top:32px !important;padding-bottom:32px !important}}@media (min-width: 768px){.p-md-6{padding:40px !important}.pt-md-6{padding-top:40px !important}.pr-md-6{padding-right:40px !important}.pb-md-6{padding-bottom:40px !important}.pl-md-6{padding-left:40px !important}.px-md-6{padding-right:40px !important;padding-left:40px !important}.py-md-6{padding-top:40px !important;padding-bottom:40px !important}}@media (min-width: 1012px){.p-lg-0{padding:0 !important}.pt-lg-0{padding-top:0 !important}.pr-lg-0{padding-right:0 !important}.pb-lg-0{padding-bottom:0 !important}.pl-lg-0{padding-left:0 !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 1012px){.p-lg-1{padding:4px !important}.pt-lg-1{padding-top:4px !important}.pr-lg-1{padding-right:4px !important}.pb-lg-1{padding-bottom:4px !important}.pl-lg-1{padding-left:4px !important}.px-lg-1{padding-right:4px !important;padding-left:4px !important}.py-lg-1{padding-top:4px !important;padding-bottom:4px !important}}@media (min-width: 1012px){.p-lg-2{padding:8px !important}.pt-lg-2{padding-top:8px !important}.pr-lg-2{padding-right:8px !important}.pb-lg-2{padding-bottom:8px !important}.pl-lg-2{padding-left:8px !important}.px-lg-2{padding-right:8px !important;padding-left:8px !important}.py-lg-2{padding-top:8px !important;padding-bottom:8px !important}}@media (min-width: 1012px){.p-lg-3{padding:16px !important}.pt-lg-3{padding-top:16px !important}.pr-lg-3{padding-right:16px !important}.pb-lg-3{padding-bottom:16px !important}.pl-lg-3{padding-left:16px !important}.px-lg-3{padding-right:16px !important;padding-left:16px !important}.py-lg-3{padding-top:16px !important;padding-bottom:16px !important}}@media (min-width: 1012px){.p-lg-4{padding:24px !important}.pt-lg-4{padding-top:24px !important}.pr-lg-4{padding-right:24px !important}.pb-lg-4{padding-bottom:24px !important}.pl-lg-4{padding-left:24px !important}.px-lg-4{padding-right:24px !important;padding-left:24px !important}.py-lg-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 1012px){.p-lg-5{padding:32px !important}.pt-lg-5{padding-top:32px !important}.pr-lg-5{padding-right:32px !important}.pb-lg-5{padding-bottom:32px !important}.pl-lg-5{padding-left:32px !important}.px-lg-5{padding-right:32px !important;padding-left:32px !important}.py-lg-5{padding-top:32px !important;padding-bottom:32px !important}}@media (min-width: 1012px){.p-lg-6{padding:40px !important}.pt-lg-6{padding-top:40px !important}.pr-lg-6{padding-right:40px !important}.pb-lg-6{padding-bottom:40px !important}.pl-lg-6{padding-left:40px !important}.px-lg-6{padding-right:40px !important;padding-left:40px !important}.py-lg-6{padding-top:40px !important;padding-bottom:40px !important}}@media (min-width: 1280px){.p-xl-0{padding:0 !important}.pt-xl-0{padding-top:0 !important}.pr-xl-0{padding-right:0 !important}.pb-xl-0{padding-bottom:0 !important}.pl-xl-0{padding-left:0 !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 1280px){.p-xl-1{padding:4px !important}.pt-xl-1{padding-top:4px !important}.pr-xl-1{padding-right:4px !important}.pb-xl-1{padding-bottom:4px !important}.pl-xl-1{padding-left:4px !important}.px-xl-1{padding-right:4px !important;padding-left:4px !important}.py-xl-1{padding-top:4px !important;padding-bottom:4px !important}}@media (min-width: 1280px){.p-xl-2{padding:8px !important}.pt-xl-2{padding-top:8px !important}.pr-xl-2{padding-right:8px !important}.pb-xl-2{padding-bottom:8px !important}.pl-xl-2{padding-left:8px !important}.px-xl-2{padding-right:8px !important;padding-left:8px !important}.py-xl-2{padding-top:8px !important;padding-bottom:8px !important}}@media (min-width: 1280px){.p-xl-3{padding:16px !important}.pt-xl-3{padding-top:16px !important}.pr-xl-3{padding-right:16px !important}.pb-xl-3{padding-bottom:16px !important}.pl-xl-3{padding-left:16px !important}.px-xl-3{padding-right:16px !important;padding-left:16px !important}.py-xl-3{padding-top:16px !important;padding-bottom:16px !important}}@media (min-width: 1280px){.p-xl-4{padding:24px !important}.pt-xl-4{padding-top:24px !important}.pr-xl-4{padding-right:24px !important}.pb-xl-4{padding-bottom:24px !important}.pl-xl-4{padding-left:24px !important}.px-xl-4{padding-right:24px !important;padding-left:24px !important}.py-xl-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 1280px){.p-xl-5{padding:32px !important}.pt-xl-5{padding-top:32px !important}.pr-xl-5{padding-right:32px !important}.pb-xl-5{padding-bottom:32px !important}.pl-xl-5{padding-left:32px !important}.px-xl-5{padding-right:32px !important;padding-left:32px !important}.py-xl-5{padding-top:32px !important;padding-bottom:32px !important}}@media (min-width: 1280px){.p-xl-6{padding:40px !important}.pt-xl-6{padding-top:40px !important}.pr-xl-6{padding-right:40px !important}.pb-xl-6{padding-bottom:40px !important}.pl-xl-6{padding-left:40px !important}.px-xl-6{padding-right:40px !important;padding-left:40px !important}.py-xl-6{padding-top:40px !important;padding-bottom:40px !important}}.h1{font-size:26px !important}@media (min-width: 768px){.h1{font-size:32px !important}}.h2{font-size:22px !important}@media (min-width: 768px){.h2{font-size:24px !important}}.h3{font-size:18px !important}@media (min-width: 768px){.h3{font-size:20px !important}}.h4{font-size:16px !important}.h5{font-size:14px !important}.h6{font-size:12px !important}.h1,.h2,.h3,.h4,.h5,.h6{font-weight:600 !important}.f1{font-size:26px !important}@media (min-width: 768px){.f1{font-size:32px !important}}.f2{font-size:22px !important}@media (min-width: 768px){.f2{font-size:24px !important}}.f3{font-size:18px !important}@media (min-width: 768px){.f3{font-size:20px !important}}.f4{font-size:16px !important}@media (min-width: 768px){.f4{font-size:16px !important}}.f5{font-size:14px !important}.f6{font-size:12px !important}.f00-light{font-size:40px !important;font-weight:300 !important}@media (min-width: 768px){.f00-light{font-size:48px !important}}.f0-light{font-size:32px !important;font-weight:300 !important}@media (min-width: 768px){.f0-light{font-size:40px !important}}.f1-light{font-size:26px !important;font-weight:300 !important}@media (min-width: 768px){.f1-light{font-size:32px !important}}.f2-light{font-size:22px !important;font-weight:300 !important}@media (min-width: 768px){.f2-light{font-size:24px !important}}.f3-light{font-size:18px !important;font-weight:300 !important}@media (min-width: 768px){.f3-light{font-size:20px !important}}.text-small{font-size:12px !important}.lead{margin-bottom:30px;font-size:20px;font-weight:300;color:#555}.lh-condensed-ultra{line-height:1 !important}.lh-condensed{line-height:1.25 !important}.lh-default{line-height:1.5 !important}.text-right{text-align:right !important}.text-left{text-align:left !important}.text-center{text-align:center !important}@media (min-width: 544px){.text-sm-right{text-align:right !important}.text-sm-left{text-align:left !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-right{text-align:right !important}.text-md-left{text-align:left !important}.text-md-center{text-align:center !important}}@media (min-width: 1012px){.text-lg-right{text-align:right !important}.text-lg-left{text-align:left !important}.text-lg-center{text-align:center !important}}@media (min-width: 1280px){.text-xl-right{text-align:right !important}.text-xl-left{text-align:left !important}.text-xl-center{text-align:center !important}}.text-normal{font-weight:normal !important}.text-bold{font-weight:600 !important}.text-italic{font-style:italic !important}.text-uppercase{text-transform:uppercase !important}.no-underline{text-decoration:none !important}.no-wrap{white-space:nowrap !important}.ws-normal{white-space:normal !important}.wb-break-all{word-break:break-all !important}.text-emphasized{font-weight:600;color:#24292e}.list-style-none{list-style:none !important}.text-shadow-dark{text-shadow:0 1px 1px rgba(0,0,0,0.25),0 1px 25px rgba(0,0,0,0.75)}.text-shadow-light{text-shadow:0 1px 0 rgba(255,255,255,0.5)}.v-hidden{visibility:hidden !important}.v-visible{visibility:visible !important}.d-table{display:table !important}.d-table-cell{display:table-cell !important}.table-fixed{table-layout:fixed !important}.d-block{display:block !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-flex{display:-webkit-box !important;display:-webkit-flex !important;display:flex !important}.d-inline-flex{display:-webkit-inline-box !important;display:-webkit-inline-flex !important;display:inline-flex !important}.d-none{display:none !important}@media (min-width: 544px){.d-sm-table{display:table !important}.d-sm-table-cell{display:table-cell !important}.d-sm-block{display:block !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-flex{display:-webkit-box !important;display:-webkit-flex !important;display:flex !important}.d-sm-inline-flex{display:-webkit-inline-box !important;display:-webkit-inline-flex !important;display:inline-flex !important}.d-sm-none{display:none !important}}@media (min-width: 768px){.d-md-table{display:table !important}.d-md-table-cell{display:table-cell !important}.d-md-block{display:block !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-flex{display:-webkit-box !important;display:-webkit-flex !important;display:flex !important}.d-md-inline-flex{display:-webkit-inline-box !important;display:-webkit-inline-flex !important;display:inline-flex !important}.d-md-none{display:none !important}}@media (min-width: 1012px){.d-lg-table{display:table !important}.d-lg-table-cell{display:table-cell !important}.d-lg-block{display:block !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-flex{display:-webkit-box !important;display:-webkit-flex !important;display:flex !important}.d-lg-inline-flex{display:-webkit-inline-box !important;display:-webkit-inline-flex !important;display:inline-flex !important}.d-lg-none{display:none !important}}@media (min-width: 1280px){.d-xl-table{display:table !important}.d-xl-table-cell{display:table-cell !important}.d-xl-block{display:block !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-flex{display:-webkit-box !important;display:-webkit-flex !important;display:flex !important}.d-xl-inline-flex{display:-webkit-inline-box !important;display:-webkit-inline-flex !important;display:inline-flex !important}.d-xl-none{display:none !important}}@media (max-width: 544px){.hide-sm{display:none !important}}@media (min-width: 544px) and (max-width: 768px){.hide-md{display:none !important}}@media (min-width: 768px) and (max-width: 1012px){.hide-lg{display:none !important}}@media (min-width: 1012px){.hide-xl{display:none !important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);word-wrap:normal;border:0}fieldset{padding:0;margin:0;border:0}label{font-weight:600}.form-control,.form-select{min-height:34px;padding:6px 8px;font-size:14px;line-height:20px;color:#24292e;vertical-align:middle;background-color:#fff;background-repeat:no-repeat;background-position:right 8px center;border:1px solid #d1d5da;border-radius:3px;outline:none;box-shadow:inset 0 1px 2px rgba(27,31,35,0.075)}.form-control.focus,.form-control:focus,.form-select.focus,.form-select:focus{border-color:#2188ff;outline:none;box-shadow:inset 0 1px 2px rgba(27,31,35,0.075),0 0 0 0.2em rgba(3,102,214,0.3)}.input-contrast{background-color:#fafbfc}.input-contrast:focus{background-color:#fff}::-webkit-input-placeholder{color:#6a737d}::-moz-placeholder{color:#6a737d}:-ms-input-placeholder{color:#6a737d}::placeholder{color:#6a737d}.input-sm{min-height:28px;padding-top:3px;padding-bottom:3px;font-size:12px;line-height:20px}.input-lg{padding:4px 10px;font-size:16px}.input-block{display:block;width:100%}.input-monospace{font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace}.input-hide-webkit-autofill::-webkit-contacts-auto-fill-button{position:absolute;right:0;display:none !important;pointer-events:none;visibility:hidden}.form-checkbox{padding-left:20px;margin:15px 0;vertical-align:middle}.form-checkbox label em.highlight{position:relative;left:-4px;padding:2px 4px;font-style:normal;background:#fffbdd;border-radius:3px}.form-checkbox input[type=checkbox],.form-checkbox input[type=radio]{float:left;margin:5px 0 0 -20px;vertical-align:middle}.form-checkbox .note{display:block;margin:0;font-size:12px;font-weight:normal;color:#586069}.form-checkbox-details{display:none}.form-checkbox-details-trigger:checked ~ * .form-checkbox-details,.form-checkbox-details-trigger:checked ~ .form-checkbox-details{display:block}.hfields{margin:15px 0}.hfields::before{display:table;content:""}.hfields::after{display:table;clear:both;content:""}.hfields .form-group{float:left;margin:0 30px 0 0}.hfields .form-group dt label{display:inline-block;margin:5px 0 0;color:#586069}.hfields .form-group dt img{position:relative;top:-2px}.hfields .btn{float:left;margin:28px 25px 0 -20px}.hfields .form-select{margin-top:5px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;appearance:none}.form-actions::before{display:table;content:""}.form-actions::after{display:table;clear:both;content:""}.form-actions .btn{float:right}.form-actions .btn+.btn{margin-right:5px}.form-warning{padding:8px 10px;margin:10px 0;font-size:14px;color:#735c0f;background:#fffbdd;border:1px solid #d9d0a5;border-radius:3px}.form-warning p{margin:0;line-height:1.5}.form-warning a{font-weight:600}.form-select{display:inline-block;max-width:100%;height:34px;padding-right:24px;padding-right:8px \9;background:#fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC") no-repeat right 8px center;background-image:none \9;background-size:8px 10px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-select::-ms-expand{opacity:0}.form-select[multiple]{height:auto}.select-sm{height:28px;min-height:28px;padding-top:3px;padding-bottom:3px;font-size:12px}.select-sm[multiple]{height:auto;min-height:0}.form-group{margin:15px 0}.form-group .form-control{width:440px;max-width:100%;margin-right:5px;background-color:#fafbfc}.form-group .form-control:focus{background-color:#fff}.form-group .form-control.shorter{width:130px}.form-group .form-control.short{width:250px}.form-group .form-control.long{width:100%}.form-group textarea.form-control{width:100%;height:200px;min-height:200px}.form-group textarea.form-control.short{height:50px;min-height:50px}.form-group dt{margin:0 0 6px}.form-group label{position:relative}.form-group.flattened dt{float:left;margin:0;line-height:32px}.form-group.flattened dd{line-height:32px}.form-group dd h4{margin:4px 0 0}.form-group dd h4.is-error{color:#cb2431}.form-group dd h4.is-success{color:#28a745}.form-group dd h4+.note{margin-top:0}.form-group.required dt label::after{padding-left:5px;color:#cb2431;content:"*"}.form-group .success,.form-group .error,.form-group .indicator{display:none;font-size:12px;font-weight:600}.form-group.loading{opacity:0.5}.form-group.loading .indicator{display:inline}.form-group.loading .spinner{display:inline-block;vertical-align:middle}.form-group.successful .success{display:inline;color:#28a745}.form-group.warn .warning,.form-group.warn .error,.form-group.errored .warning,.form-group.errored .error{position:absolute;z-index:10;display:block;max-width:450px;padding:5px 8px;margin:4px 0 0;font-size:13px;font-weight:normal;border-style:solid;border-width:1px;border-radius:3px}.form-group.warn .warning::after,.form-group.warn .warning::before,.form-group.warn .error::after,.form-group.warn .error::before,.form-group.errored .warning::after,.form-group.errored .warning::before,.form-group.errored .error::after,.form-group.errored .error::before{position:absolute;bottom:100%;left:10px;z-index:15;width:0;height:0;pointer-events:none;content:" ";border:solid transparent}.form-group.warn .warning::after,.form-group.warn .error::after,.form-group.errored .warning::after,.form-group.errored .error::after{border-width:5px}.form-group.warn .warning::before,.form-group.warn .error::before,.form-group.errored .warning::before,.form-group.errored .error::before{margin-left:-1px;border-width:6px}.form-group.warn .warning{color:#735c0f;background-color:#fffbdd;border-color:#d9d0a5}.form-group.warn .warning::after{border-bottom-color:#fffbdd}.form-group.warn .warning::before{border-bottom-color:#d9d0a5}.form-group.errored label{color:#cb2431}.form-group.errored .error{color:#86181d;background-color:#ffdce0;border-color:#cea0a5}.form-group.errored .error::after{border-bottom-color:#ffdce0}.form-group.errored .error::before{border-bottom-color:#cea0a5}.note{min-height:17px;margin:4px 0 2px;font-size:12px;color:#586069}.note .spinner{margin-right:3px;vertical-align:middle}.css-truncate.css-truncate-target,.css-truncate .css-truncate-target{display:inline-block;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:top}.css-truncate.expandable.zeroclipboard-is-hover .css-truncate-target,.css-truncate.expandable.zeroclipboard-is-hover.css-truncate-target,.css-truncate.expandable:hover .css-truncate-target,.css-truncate.expandable:hover.css-truncate-target{max-width:10000px !important}.TableObject{display:table}.TableObject-item{display:table-cell;width:1%;white-space:nowrap;vertical-align:middle}.TableObject-item--primary{width:99%}.labels{position:relative}.label,.Label{display:inline-block;padding:3px 4px;font-size:12px;font-weight:600;line-height:1;color:#fff;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(27,31,35,0.12)}.label:hover,.Label:hover{text-decoration:none}.Label--gray{color:#586069;background-color:#eaecef}.Label--outline{margin-top:-1px;margin-bottom:-1px;font-weight:normal;color:#586069;background-color:transparent;border:1px solid rgba(27,31,35,0.15);box-shadow:none}.Label--outline-green{color:#28a745;border:1px solid #34d058}.Label--gray-darker{background-color:#6a737d}.Label--orange{background-color:#d15704}.state,.State{display:inline-block;padding:4px 8px;font-weight:600;line-height:20px;color:#fff;text-align:center;background-color:#6a737d;border-radius:3px}.State--green{background-color:#2cbe4e}.State--purple{background-color:#6f42c1}.State--red{background-color:#cb2431}.State--small{padding:0.125em 4px;font-size:12px}.State--small .octicon{width:1em}.Counter{display:inline-block;padding:2px 5px;font-size:12px;font-weight:600;line-height:1;color:#586069;background-color:rgba(27,31,35,0.08);border-radius:20px}.Counter--gray-light{color:#24292e;background-color:rgba(27,31,35,0.15)}.Counter--gray{color:#fff;background-color:#6a737d}.avatar{display:inline-block;overflow:hidden;line-height:1;vertical-align:middle;border-radius:3px}.avatar-small{border-radius:2px}.avatar-link{float:left;line-height:1}.avatar-group-item{display:inline-block;margin-bottom:3px}.avatar-parent-child{position:relative}.avatar-child{position:absolute;right:-15%;bottom:-9%;background-color:#fff;border-radius:2px;box-shadow:-2px -2px 0 rgba(255,255,255,0.8)}.markdown-body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>*:first-child{margin-top:0 !important}.markdown-body>*:last-child{margin-bottom:0 !important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#cb2431}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin-top:0;margin-bottom:16px}.markdown-body hr{height:0.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:0.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit}.markdown-body h1{padding-bottom:0.3em;font-size:2em;border-bottom:1px solid #eaecef}.markdown-body h2{padding-bottom:0.3em;font-size:1.5em;border-bottom:1px solid #eaecef}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:0.875em}.markdown-body h6{font-size:0.85em;color:#6a737d}.markdown-body ul,.markdown-body ol{padding-left:2em}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:0.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table th,.markdown-body table td{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body table img{background-color:transparent}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid #dfe2e5}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:#24292e}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:0;padding-top:0.2em;padding-bottom:0.2em;margin:0;font-size:85%;background-color:rgba(27,31,35,0.05);border-radius:3px}.markdown-body code::before,.markdown-body code::after,.markdown-body tt::before,.markdown-body tt::after{letter-spacing:-0.2em;content:"\00a0"}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code::before,.markdown-body pre code::after,.markdown-body pre tt::before,.markdown-body pre tt::after{content:normal}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{padding:10px 8px 9px;text-align:right;background:#fff;border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:600;background:#f6f8fa;border-top:0}/*!
- * GitHub Light v0.3.0
- * Copyright (c) 2012 - 2016 GitHub, Inc.
- * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE)
- */.pl-c{color:#969896}.pl-c1,.pl-s .pl-v{color:#0086b3}.pl-e,.pl-en{color:#795da3}.pl-smi,.pl-s .pl-s1{color:#333}.pl-ent{color:#63a35c}.pl-k{color:#a71d5d}.pl-s,.pl-pds,.pl-s .pl-pse .pl-s1,.pl-sr,.pl-sr .pl-cce,.pl-sr .pl-sre,.pl-sr .pl-sra{color:#183691}.pl-v,.pl-smw{color:#ed6a43}.pl-bu{color:#b52a1d}.pl-ii{color:#f8f8f8;background-color:#b52a1d}.pl-c2{color:#f8f8f8;background-color:#b52a1d}.pl-c2::before{content:"^M"}.pl-sr .pl-cce{font-weight:bold;color:#63a35c}.pl-ml{color:#693a17}.pl-mh,.pl-mh .pl-en,.pl-ms{font-weight:bold;color:#1d3e81}.pl-mq{color:#008080}.pl-mi{font-style:italic;color:#333}.pl-mb{font-weight:bold;color:#333}.pl-md{color:#bd2c00;background-color:#ffecec}.pl-mi1{color:#55a532;background-color:#eaffea}.pl-mc{color:#ef9700;background-color:#ffe3b4}.pl-mi2{color:#d8d8d8;background-color:#808080}.pl-mdr{font-weight:bold;color:#795da3}.pl-mo{color:#1d3e81}.pl-ba{color:#595e62}.pl-sg{color:#c0c0c0}.pl-corl{text-decoration:underline;color:#183691}kbd{display:inline-block;padding:3px 5px;font:11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5}.badmono{font-family:sans-serif;font-weight:600}.diffstat{font-size:12px;font-weight:600;color:#586069;white-space:nowrap;cursor:default}.block-diff-deleted,.block-diff-added,.block-diff-neutral{display:inline-block;width:8px;height:8px;margin-left:1px}.block-diff-deleted,.text-red .block-diff-neutral{background-color:#cb2431}.block-diff-added,.block-diff-neutral{background-color:#2cbe4e}.block-diff-neutral{background-color:#d1d5da}.tab-size[data-tab-size="1"]{-moz-tab-size:1;-o-tab-size:1;tab-size:1}.tab-size[data-tab-size="2"]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}.tab-size[data-tab-size="3"]{-moz-tab-size:3;-o-tab-size:3;tab-size:3}.tab-size[data-tab-size="4"]{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.tab-size[data-tab-size="5"]{-moz-tab-size:5;-o-tab-size:5;tab-size:5}.tab-size[data-tab-size="6"]{-moz-tab-size:6;-o-tab-size:6;tab-size:6}.tab-size[data-tab-size="7"]{-moz-tab-size:7;-o-tab-size:7;tab-size:7}.tab-size[data-tab-size="8"]{-moz-tab-size:8;-o-tab-size:8;tab-size:8}.tab-size[data-tab-size="9"]{-moz-tab-size:9;-o-tab-size:9;tab-size:9}.tab-size[data-tab-size="10"]{-moz-tab-size:10;-o-tab-size:10;tab-size:10}.tab-size[data-tab-size="11"]{-moz-tab-size:11;-o-tab-size:11;tab-size:11}.tab-size[data-tab-size="12"]{-moz-tab-size:12;-o-tab-size:12;tab-size:12}.task-list-item{list-style-type:none}.task-list-item label{font-weight:normal}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item .handle{display:none}.task-list-item-checkbox{margin:0 0.2em 0.25em -1.6em;vertical-align:middle}.reorderable-task-lists .markdown-body .contains-task-list{padding:0}.reorderable-task-lists .markdown-body li:not(.task-list-item){margin-left:26px}.reorderable-task-lists .markdown-body ol:not(.contains-task-list) li,.reorderable-task-lists .markdown-body ul:not(.contains-task-list) li{margin-left:0}.reorderable-task-lists .markdown-body li p{margin-top:0}.reorderable-task-lists .markdown-body .task-list-item{padding-right:15px;padding-left:42px;margin-right:-15px;margin-left:-15px;border:1px solid transparent}.reorderable-task-lists .markdown-body .task-list-item+.task-list-item{margin-top:0}.reorderable-task-lists .markdown-body .task-list-item .contains-task-list{padding-top:4px}.reorderable-task-lists .markdown-body .task-list-item .handle{display:block;float:left;width:20px;padding:2px 0 0 2px;margin-left:-43px;opacity:0}.reorderable-task-lists .markdown-body .task-list-item .drag-handle{fill:#333}.reorderable-task-lists .markdown-body .task-list-item.hovered{background:#fafafa;border-top-color:#ededed;border-bottom-color:#ededed}.reorderable-task-lists .markdown-body .task-list-item.hovered>.handle{opacity:1}.reorderable-task-lists .markdown-body .task-list-item.is-dragging{opacity:0}.reorderable-task-lists .markdown-body .task-list-item.is-ghost{border-right-color:#ededed;border-left-color:#ededed}.review-comment-contents .markdown-body .task-list-item{padding-left:42px;margin-right:-12px;margin-left:-12px;border-top-left-radius:3px;border-bottom-left-radius:3px}.review-comment-contents .markdown-body .task-list-item.hovered{border-left-color:#ededed}#user-content-toc{overflow:visible}#user-content-toc tr{border-top:0}#user-content-toc td{padding:0 20px;background-color:#f7f7f7;border:0;border-radius:3px}#user-content-toc ul{padding-left:0;font-weight:600;list-style:none}#user-content-toc ul li{padding-left:0.2em}#user-content-toc ul ul{font-weight:normal}#user-content-toc ul ul li::before{float:left;margin-top:-0.2em;margin-right:0.2em;font-size:1.2em;line-height:1;color:#aaa;content:"\231e"}#user-content-toc ul ul ul{padding-left:0.9em}#user-content-toctitle h2{margin-top:1em;margin-bottom:0.5em;font-size:1.25em;border-bottom:0}*{box-sizing:border-box}html{font-size:14px;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{width:100%;padding:0;margin:0;font:1rem/1.42 -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";color:#333;background-color:#fafbfc}button,input,textarea{margin:0;font-family:inherit;font-size:inherit}button{padding:0;margin:0;background:none;border:0}table{border-spacing:0;border-collapse:collapse}a{color:#0366d6;text-decoration:none}a:active{color:inherit}strong{font-weight:600}pre{word-wrap:break-word;white-space:pre-wrap}code,pre{font-family:Consolas, "Liberation Mono", Courier, monospace}hr{background:#eee;border-color:transparent}input[type="checkbox"][disabled]{opacity:0.25}textarea[disabled]::-webkit-input-placeholder{color:#000}.color-icons .octicon-comment-discussion{color:#333}.color-icons .octicon-issue-closed{color:#cb2431}.color-icons .octicon-issue-opened{color:#28a745}.color-icons .octicon-git-branch{color:#28a745}.color-icons .octicon-git-pull-request{color:#28a745}.color-icons .octicon-git-commit{color:#586069}.color-icons .opened{color:#28a745}.color-icons .closed{color:#cb2431}.color-icons .merged{color:#6f42c1}footer{padding:12px 0;font-size:14px;border-top:1px solid #ddd}footer .octicon{float:left;color:#aaa}footer ul{float:right;padding-left:0;margin-top:0;margin-bottom:0}footer li{float:left;line-height:32px;color:#aaa;list-style-type:none}footer li+li{margin-left:15px}footer li a{color:inherit}footer form{display:inline}footer .switch-to-desktop{display:inline;color:inherit}.clearfix::before,.clearfix::after{display:table;line-height:0;content:""}.clearfix::after{clear:both}.protip{margin:20px 0;font-size:13px;color:#666;text-align:center}.labels{position:relative;display:block}.label{font-size:10px}.switcher{position:relative;padding:15px 15px 15px 35px}.switcher.open .switcher-icon-open{display:none}.switcher.open .switcher-icon-close,.switcher.open .switcher-options{display:block}.switcher-toggle{display:block;font-weight:600;color:inherit}.switcher-toggle-meta{display:block;font-size:85%;font-weight:normal;color:#586069}.switcher-options{position:relative;display:none;padding-top:6px}.switcher-option{display:block;padding:6px 0;font-weight:600}.switcher-option .octicon-check{position:absolute;left:-19px}.switcher-option .css-truncate-target{max-width:80%}.switcher-icon{float:left;margin-top:1px;margin-left:-20px;color:#586069}.switcher-icon-open,.switcher-icon-close{position:relative;top:1px;float:right;width:auto;margin-right:0;margin-left:0;color:#586069}.switcher-icon-close{display:none}.octicon.switcher-icon-close{display:none}.octicon.switcher-icon-open{display:block}.bubble{padding:0;margin:0 15px 15px;overflow:hidden;word-break:break-word;word-wrap:break-word;white-space:normal;background:#fff;border:1px solid #ddd;border-radius:3px}.nav-bar+.bubble,.tabs+.bubble{margin-top:15px}.bubble.padded{padding:10px}.bubble.no-padding .bubble-content{padding:0}.bubble.no-margin{margin:0}.bubble.bubble-warn{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}.bubble-title{display:block;padding:10px 15px;margin:0;font-size:14px;color:#444;border-bottom:1px solid #ddd}.bubble-title .octicon{width:16px;margin-right:2px;margin-left:-3px;color:#586069;text-align:center}.bubble-title time{float:right;font-size:12px;font-weight:normal;line-height:20px;color:#586069}.bubble-content{padding:15px}.bubble-content .markdown-body{padding:0}.bubble-actions{display:table;width:100%;text-align:center;table-layout:fixed}.bubble-content+.bubble-actions,.repo-list+.bubble-actions{border-top:1px solid #ddd}.bubble-action-form{display:table-cell}.bubble-action{display:table-cell;padding:10px 15px;font-weight:500;line-height:1.5;color:#0366d6}.bubble-action+.bubble-action,.bubble-action+.bubble-action-form,.bubble-action-form+.bubble-action,.bubble-action-form+.bubble-action-form{border-left:1px solid #ddd}.bubble-disabled{background:#f5f5f5;border-color:#ccc;box-shadow:inset 0 0 10px rgba(0,0,0,0.1)}.bubble-disabled .bubble-title{color:#586069}.bubble-disabled .bubble-content{font-size:15px;color:#586069;text-align:center}.bubble-disabled .bubble-content.full-bleed{padding:15px}.bubble-disabled .bubble-action{color:#586069}ol ol,ul ol{list-style-type:lower-roman}ul ul ol,ul ol ol,ol ul ol,ol ol ol{list-style-type:lower-alpha}.list{padding:0;margin:0;list-style:none;background-color:#fff}.list:first-child .list-heading:first-child{border-top:0}.list .list-item-template{display:none}.list.list-rendered:empty{display:none}.list.list-rendered .list-item-template{display:block}.list-item{position:relative;display:block;width:100%;padding:14px 15px 14px 35px;line-height:inherit;text-align:left}.list-item+.list-item,.list-item+.list-heading,.list-heading+.list-item{border-top:1px solid #eee}.list-item.with-avatar{padding-left:45px}.list-item.no-padding{padding-left:15px}.list-item>.octicon{position:absolute;top:14px;left:12px;width:16px;text-align:center;vertical-align:bottom}.list-item>.list-item-chevron{top:50%;right:15px;left:auto;margin-top:-10px;font-size:20px;color:#586069}.list-item .avatar{position:absolute;top:14px;left:15px;border-radius:2px}.list-item .meta{float:right;margin-bottom:5px;margin-left:5px;font-size:11px;color:#6a737d}.list-item .meta ~ .list-item-title{margin-right:55px}.list-item .meta .octicon-star{vertical-align:top}.list-item .nwo-link{display:block;margin-bottom:2px;font-size:12px;font-weight:600;color:#586069}.list-item .ref{color:#586069}.list-item .byline{display:block;margin:0;font-size:12px;color:#586069}.list-item .byline strong{font-weight:normal;color:#444}.list-item .labels{margin-top:2px}.list-item.read{background-color:#fafbfc}.list-item.read .list-item-title{color:#586069}.list-item.read>.octicon{color:#586069}.list-item.read .list-action-archive{display:none}.list-item .filename{max-width:100%}.list-item mark{font-weight:600;color:inherit;background-color:inherit}.list-item-title{display:block;margin-bottom:3px;font-weight:600;line-height:1.2;color:#0366d6;word-wrap:break-word}.list-heading{position:relative;padding:7px 15px;clear:both;font-size:12px;font-weight:600;color:#586069;background-color:#f5f5f5;border-top:1px solid #eee}.list-heading::before{display:table;content:""}.list-heading::after{display:table;clear:both;content:""}.list-heading a,.list-heading .btn-link{color:inherit}.list-heading .btn-link>.octicon{opacity:0.65}.list-heading .path-item{float:left}.list-action-form{float:right;margin-top:-10px;margin-right:-15px}.list-action-form>.btn-link{padding:10px 15px;color:#ccc}.list-action-form ~ .list-item-title{margin-right:30px}.list-empty .list-item{padding:45px;font-weight:600;color:#586069;text-align:center}.list-options .list-item .list-item-title{color:#586069}.list-options .list-item>.octicon{color:#fff}.list-options .selected .list-item-title{color:#333}.list-options .selected>.octicon{color:#444}.repo-list-item .repo-name{max-width:80%;margin-right:32px}.repo-list .private{background-color:#fffdef}.repo-list .author-avatar{border-radius:2px}.repo-list .octicon{color:#586069}.repo-list .octicon-lock{color:rgba(27,31,35,0.7)}.repo-list .no-repo{padding:15px;color:#586069;text-align:center}.files-list{word-wrap:break-word}.files-list+.files-list{border-top:1px solid #ddd}.files-list .meta{float:none;margin:5px 0 0}.files-list .warning{font-weight:600;background-color:#fffccc}.files-list .simplified-path{color:#888}.files-list .octicon{top:16px}.files-list .octicon-file-directory{color:#80a6cd}.user-list .follow-list-info{font-size:12px;color:#666}.bubble.auth-form-container{margin-top:30px;margin-bottom:30px}.bubble.auth-form-container label{display:block;margin:0 0 5px}.bubble.auth-form-container .bubble-title{color:#fff;background-color:#586873}.bubble.auth-form-container p{margin:0}.bubble.auth-form-container .form-control{display:block;width:100%;margin:0 0 15px}.auth-form-message{padding:10px}.login-heading{margin-bottom:5px;font-size:13px}.login-heading+p{margin-top:0}.login-note{position:relative;padding:0 15px;font-size:13px}.login-note p{padding-left:22.5px;color:#586069}.login-note.no-icon p{padding-left:0}.login-note .octicon{position:absolute;top:0;left:15px;color:#586069}.login-note .btn{margin-bottom:15px}.u2f-auth-form-body{display:block;padding:10px 20px 20px}.u2f-auth-form-body.unavailable{display:none}section.blog{padding:0 15px}section.blog .pagination{margin-top:20px}section.blog .pagination .next_page{float:right}.post-title{padding:15px 15px 0;margin:0 -15px 5px;margin-bottom:20px;font-size:24px;font-style:normal;font-weight:normal;color:#495961;background-color:rgba(0,0,0,0.01)}.byline{margin-bottom:15px;font-size:13px;color:#586069}.byline span,.byline span img,.byline a{vertical-align:top;border-radius:3px}.byline a{color:#586069}.byline .author{margin-left:12px}.post-content h3{border-bottom:1px solid #eee}.post-content ol{list-style-type:decimal}.post-content ul{list-style-type:disc}.post-content img{width:100%;box-sizing:border-box;padding:3px;border:1px solid #d8d8d8}.post-content img.emoji{width:inherit;border:0}.post-content .anchor{display:none}.post-content .user-mention{color:#333}.post-content code{white-space:normal}.post-content iframe{max-width:100%;height:inherit}.posts h3,.recent-posts h3{padding:0;margin:15px 0 5px;font-size:14px;font-style:normal;font-weight:normal;color:#586069}.posts ul,.recent-posts ul{padding-left:0}.posts li,.recent-posts li{margin-bottom:10px;line-height:1.2;list-style-type:none}.posts li a,.recent-posts li a{font-size:20px;font-style:normal;font-weight:normal}.recent-posts{padding:15px;margin:15px 0 0;background-color:#fff;border-top:1px solid #eee}.recent-posts h3{margin-top:0}.recent-posts p{margin-bottom:0}.recent-posts li a{font-size:16px}.btn{display:inline-block;padding:9px 15px;margin:0;font-size:13px;font-weight:600;line-height:1.5;color:#333;text-align:center;text-shadow:0 1px 0 rgba(255,255,255,0.9);white-space:nowrap;vertical-align:middle;background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);border:1px solid #ddd;border-bottom-color:#cecece;border-radius:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:active{background-color:#6a737d;background-image:none;border-color:#444;box-shadow:0 1px 3px rgba(0,0,0,0.075),inset 0 0 5px rgba(0,0,0,0.2)}.btn:disabled,.btn.disabled{pointer-events:none;opacity:0.3}.btn .count{position:relative;margin:0 0 0 3px;font-size:11px;font-weight:100;color:rgba(0,0,0,0.4);text-shadow:none;border-radius:10px}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);border-color:#5ca941}.btn-danger{color:#900}.btn-block{display:block;width:100%;text-align:center}.btn-block+.btn-block{margin-top:10px}.section-title button{float:right;padding:0;margin:0;font-size:12px;color:#586069;background:transparent;border:0;box-shadow:none}.section-title button .octicon{color:#586069}.btn-link{display:inline;padding:0;font-size:inherit;color:#0366d6;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mobile.commit{display:block;float:none;width:100%;padding:15px;color:#213f4d;background-color:#e6f1f6;border-bottom:1px solid #d1e2eb}.mobile.commit .commit-desc pre{padding:0;margin:0;font-size:12px}.commit-title{margin:0 0 5px;font-size:13px;font-weight:600}.commit-list .message{color:#333}.commit-authorship{padding:7.5px 0;font-size:12px;line-height:24px;color:#586069;background-color:#fff}.commit-authorship .avatar{float:left;margin-right:8px;margin-left:15px;border-radius:3px}.commit-authorship a{font-weight:600}.diff-view .file{position:relative;margin-bottom:15px;border-top:1px solid #d1d5da;border-bottom:1px solid #d1d5da}.diff-view .file:last-child:not(:only-child){border-bottom:0}.diff-view .file .meta{padding:5px 10px 3px;font-size:12px;color:#555;text-align:left;text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(#fff, #f5f5f5);background-image:linear-gradient(#fff, #f5f5f5);border-bottom:1px solid #d8d8d8}.diff-view .file .meta .info{position:relative;padding:6px 0;padding-left:30px;font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;line-height:1.2}.diff-view .file .meta .file-label{padding-left:0;margin-left:0;word-break:break-all;border-left:0 none;box-shadow:inset 0 0 0 transparent}.diff-view .file .meta span.icon{display:inline-block;padding:3px;margin:5px 5px 0 0;line-height:0;background:#f7f7f7;border:1px solid #ccc;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-radius:3px}.diff-view .file .meta .octicon-file-text{color:#aaa}.diff-view .file .file-label a{color:inherit}.diff-view .file .highlight{overflow:auto;overflow-x:auto;overflow-y:hidden}.diff-view .file .empty{padding:5px 10px;font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;line-height:24px;color:#555}.diff-view .file .file-code{border-spacing:0;border-collapse:separate;background-color:#fff}.diff-view .file .file-diff-line{position:relative;cursor:pointer}.diff-view .file .blob-num{padding:0 3px;font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;line-height:18px;color:rgba(0,0,0,0.3);text-align:right;vertical-align:top}.diff-view .file .blob-num::before{content:attr(data-line-number)}.diff-view .file .blob-code{padding-right:10px;padding-left:10px}.diff-view .file .blob-code-inner{font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;color:#333;white-space:pre}.diff-view .file .blob-code-inner .x-first{border-top-left-radius:0.2em;border-bottom-left-radius:0.2em}.diff-view .file .blob-code-inner .x-last{border-top-right-radius:0.2em;border-bottom-right-radius:0.2em}.diff-view .file.soft-wrap .blob-code-inner{word-wrap:break-word;white-space:pre-wrap}.diff-view .file .prose .blob-code-inner{white-space:pre-wrap}.diff-view .file .blob-code-hunk{color:#586069;background-color:#f8f8ff}.diff-view .file .blob-num-hunk{background-color:#f3f3ff;border-color:#e4e4ff}.diff-view .file .blob-code-addition{background-color:#eaffea}.diff-view .file .blob-code-addition .x{background-color:#a6f3a6}.diff-view .file .blob-num-addition{background-color:#dbffdb;border-color:#c1e9c1}.diff-view .file .blob-code-deletion{background-color:#ffecec}.diff-view .file .blob-code-deletion .x{background-color:#f8cbcb}.diff-view .file .blob-num-deletion{background-color:#ffdddd;border-color:#f1c0c0}.diff-view .file span.no-nl-marker{position:relative;top:1px;margin-left:4px;color:#cb2431;vertical-align:middle}.diff-view .inline-comments{background-color:#fafbfc}.diff-view table .discussion-block{border-right:1px solid #ddd}.diff-view .inline-comment-form-container{width:100vw;border-right:1px solid #ddd}.add-inline-comment{cursor:pointer}.inline-comment-form{background-color:#fafbfc}.inline-comment-form .inline-note-reply{background-color:transparent;border-top:0}.inline-comment-form-container{padding:15px}.inline-comment-form-container .discussion-reply{padding:0}.comment-holder+.inline-comment-form-container{padding-top:0}.inline-comment-form-container .inline-comment-form,.inline-comment-form-container.open .inline-comment-form-actions{display:none}.inline-comment-form-container .inline-comment-form-actions,.inline-comment-form-container.open .inline-comment-form{display:block}.line-comments{padding:0;border:solid #ddd;border-width:1px 0}.inline-comments .discussion-block{max-width:100vw}.inline-comments .bubble-content{padding-top:10px;padding-bottom:10px}.inline-comments .markdown-body{font-size:85%}.inline-comments:last-child .line-comments{border-bottom:0}.timeline-inline-comments{width:100%;overflow:hidden}.timeline-inline-comments .inline-comment-form-container:last-child{border-bottom:1px solid #ddd}.timeline-review-comment-thread .diff-view .file{margin-bottom:0}.timeline-review-comment-thread .file-code{width:100%}.inline-note-sign-in-container{padding:15px;font-size:85%;text-align:center}.inline-note-sign-in-container .btn{margin-bottom:15px}.inline-comment-form-template-container{display:none}.diffstat{position:absolute;top:4px;left:0}.highlighted-blob{white-space:pre-wrap}.mobile-toc{background-color:#fff}.mobile-toc.open .switcher-options{display:block}.mobile-toc .diffstat{position:static}.mobile-toc .switcher-option{font-size:85%;font-weight:normal}.mobile-toc .switcher-option .octicon{float:left;margin-left:-20px;color:#ccc}.mobile-toc .switcher-option .octicon-diff-removed{color:#cb2431}.mobile-toc .switcher-option .octicon-diff-renamed{color:#677a85}.mobile-toc .switcher-option .octicon-diff-modified{color:#d0b44c}.mobile-toc .switcher-option .octicon-diff-added{color:#28a745}.add-comment-label,.review-cancel-button,.is-review-pending .start-review-label{display:none}.start-review-label,.is-review-pending .review-cancel-button,.is-review-pending .submit-review-button,.is-review-pending .add-comment-label{display:inline-block}.is-review-pending .submit-review-button{width:auto}.discussion-header{padding:15px 15px 0;background:#fff}.discussion-header .state{font-size:12px;line-height:16px;border-radius:2px}.discussion-header .discussion-block-title{padding:10px 0 15px}.discussion-header .pull-request-description-toggle .pull-request-description{display:block}.discussion-header .pull-request-description-toggle .pull-request-description-full{display:none}.discussion-header .pull-request-description-toggle.open .pull-request-description{display:none}.discussion-header .pull-request-description-toggle.open .pull-request-description-full{display:block}.discussion-header .branches{padding:7.5px 0;margin:0;font-size:12px;color:#aaa;cursor:pointer}.discussion-header .branches .branch-name{position:relative;display:inline-block;padding-left:20px;font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;color:#586069}.discussion-header .branches .branch-name .octicon{position:absolute;top:0;left:0}.discussion-header .branches .octicon-git-branch{width:16px;text-align:left}.discussion-header .branches .octicon-arrow-up{display:block;width:100%;margin-left:20px}.discussion-header .branches .css-truncate-target{max-width:90%}.discussion-title{margin-bottom:0;font-size:16px;word-wrap:break-word}.discussion-labels{padding:15px 15px 0;background-color:#fff}.discussion-labels .octicon{position:relative;top:2px;margin-right:2px;color:#586069}.discussion-starting-comment{position:relative}.discussion-starting-comment+.discussion-reply-container{margin-top:-1px}.discussion-starting-comment .avatar{position:absolute;left:15px;margin-right:10px;border-radius:2px}.discussion-starting-comment time{margin:0 15px;color:#586069}.discussion-starting-comment .username,.discussion-starting-comment .num{color:#666}.discussion-starting-comment .discussion-title .num{font-weight:100;color:#aaa}.discussion-starting-comment .discussion-block-title{padding-left:60px}.discussion-comment{padding:15px;background:#fff;border-bottom:1px solid #ddd}.commit-comments-header{padding:0 15px;font-size:14px}.commit-comments-header-sha{font-weight:normal}.discussion-block-title{position:relative;padding:10px 15px;font-size:12px;line-height:16px;color:#586069;background-color:#fff;border-bottom:1px solid #eee}.discussion-block-title::before{display:table;content:""}.discussion-block-title::after{display:table;clear:both;content:""}.discussion-block-title .avatar{float:left;margin-right:10px;border-radius:3px}.discussion-block-title .timestamp{color:#586069}.discussion-block-title .username{font-weight:600;color:#444}.discussion-block-meta{margin-left:42px}.discussion-block-meta .editor{color:#444}.commit{float:left;margin:0 10px 0 0}.bubble.is-pending{border-color:#d9d0a5}.bubble.is-pending .discussion-block-title{background-color:#fffbdd;border-color:#d9d0a5}.bubble .commit-message{padding:0;margin:0;color:#444;white-space:pre-wrap}.discussion-block{padding:15px}.discussion-block>.bubble{margin:0}.discussion-block-header{padding:25px 15px 7.5px;font-size:12px;font-weight:600;color:#586069;background-color:#f5f5f5;border-top:1px solid #ddd}.discussion-event{position:relative;padding:15px}.discussion-event .branch{font-weight:600;color:#444;white-space:nowrap;vertical-align:middle}.discussion-event .branch.css-truncate-target{max-width:165px}.discussion-event .timestamp{color:inherit}.timeline-truncation-container{padding-right:0;padding-left:0}.timeline-truncation-container+.discussion-block{padding-top:15px;border-top:1px solid #eee}.timeline-truncation-container .switch-to-desktop{color:#0366d6}.timeline-truncation-title{margin-top:0;margin-bottom:5px;font-weight:600;color:#586069}.issue-event{position:relative;padding-left:40px;font-size:13px;color:#586069}.issue-event:last-of-type{border-bottom:0}.issue-event .avatar{position:absolute;top:0;left:15px}.issue-event strong{color:#444}.issue-event .meta{margin:0.5em 0 0;font-size:12px;color:#586069}.issue-event .label{font-size:90%}.issue-event-icon{position:absolute;top:16px;left:15px;width:16px;color:#999;text-align:center}.issue-event-icon-open{color:#28a745}.issue-event-icon-closed{color:#cb2431}.issue-event-icon-merged{color:#6f42c1}.issue-event-icon-locked{color:#333}.issue-event-icon-unlocked{color:#28a745}.closed-event{padding-bottom:15px;border-bottom:5px solid #ddd}.dead-pull-request-review-comment{position:relative;display:block;padding-left:20px;margin:0 15px 15px;font-size:12px;color:#586069}.dead-pull-request-review-comment .octicon{position:absolute;top:0;left:0}.dead-pull-request-review-comment .username{font-weight:600;color:#586069}.timeline-review-comment-thread-container.dead .octicon{color:#aaa}.timeline-review-comment-thread-container.dead.open .octicon-unfold,.timeline-review-comment-thread-container.dead.open .show-diff{display:none}.timeline-review-comment-thread-container.dead:not(.open) .octicon-fold,.timeline-review-comment-thread-container.dead:not(.open) .hide-diff,.timeline-review-comment-thread-container.dead:not(.open) .timeline-review-comment-thread{display:none}.cross-reference .bubble-title{font-size:12px;color:#737b7c;background-image:-webkit-linear-gradient(#f8fbfc, #eef1f4);background-image:linear-gradient(#f8fbfc, #eef1f4);border-bottom:1px solid #e0e2e5}.cross-reference .bubble-title a{color:#737b7c}.cross-reference .bubble-title.private{padding-left:30px;background-color:#fffdef;background-image:none}.cross-reference .bubble-title .octicon-lock{float:left;margin-left:-20px;color:rgba(27,31,35,0.7)}.cross-reference .bubble-content a{color:#444}.timeline-commits-container{padding:15px;font-size:12px;line-height:16px;color:#666}.timeline-commits-container .octicon-repo-push{position:absolute;top:1px;left:1px;margin-right:10px;color:#aaa}.timeline-commits-container .author{font-weight:600;color:#666}.timeline-commits-container .timestamp{color:#666}.timeline-commits-container .timeline-commits{width:100%;margin-top:7.5px}.timeline-commits-container .timeline-commits td{padding:4px 0}.timeline-commits-container .commit-message a{color:#666;word-break:break-word}.commit-meta{width:36px;text-align:right}.commit-meta a{color:#aaa}.commit-meta .octicon{position:inline-block}.commit-meta .octicon-x{color:#cb2431}.commit-meta .octicon-check{margin-left:3px;color:#28a745}.commits-header{position:relative;padding-left:25px}.commit-avatar-container{width:25px}.commit-avatar-container .avatar{border-radius:2px}.timeline-review-container .file-header{padding:3px 10px 5px;background-color:#f7f7f7;border-top:1px solid #d1d5da;border-radius:0}.timeline-review-container .file-header:first-child{border-top:0;border-radius:3px 3px 0 0}.timeline-review-container .file-info{font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px}.timeline-review-container .bubble{margin-top:15px}.timeline-review-container .inline-comment-form{background-color:#fff}.timeline-review-container .inline-comment-form-container{padding:10px 15px}.timeline-review-container.is-pending{border-color:#d9d0a5}.timeline-review-container.is-pending .label,.timeline-review-container.is-pending .file-header{color:#735c0f;background-color:#fffbdd}.timeline-review-container.is-pending .bubble{border-color:#d9d0a5}.timeline-review-container .file-code{width:auto;min-width:100%;white-space:nowrap;table-layout:fixed}.timeline-review-header{display:table;font-size:12px;color:#666}.timeline-review-icon{display:table-cell;width:24px;vertical-align:top}.timeline-review-icon .octicon{margin-top:-1px;color:#6a737d}.timeline-review-icon .octicon-eye{margin-top:0}.timeline-review-icon .octicon-x{margin-top:0;margin-left:2px}.timeline-review-icon .octicon-check{margin-left:2px}.timeline-review-avatar{display:table-cell;padding-right:5px}.timeline-review-meta{display:table-cell;vertical-align:top}.timeline-review-meta .author{color:#666}.discussion-item-review-comment{border-bottom:1px solid #eaecef}.discussion-item-review-comment:last-child{border-bottom:0}.outdated-comment .timeline-review-comment-thread,.outdated-comment .hide-outdated-button{display:none}.outdated-comment .file-header{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.outdated-comment.open .timeline-review-comment-thread,.outdated-comment.open .hide-outdated-button{display:block}.outdated-comment.open .show-outdated-button{display:none}.outdated-comment.open .file-header{border-bottom-right-radius:0;border-bottom-left-radius:0}.outdated-comment-label{line-height:22px}.user-mention,.team-mention{font-weight:600;color:#24292e}.discussion-create{margin:15px 15px 0}.discussion-create .form-control{margin-bottom:8px}.discussion-create .btn{margin-top:7.5px;margin-bottom:15px}.discussion-block+.discussion-block,.discussion-block+.discussion-event,.discussion-block+.timeline-commits-container,.discussion-event+.discussion-event,.discussion-event+.discussion-block,.discussion-event+.timeline-commits-container,.timeline-commits-container+.discussion-event,.timeline-commits-container+.discussion-block,.timeline-commits-container+.timeline-commits-container{border-top:1px solid #eee}.discussion-reply{padding:15px;text-align:right;background-color:#fff;border-top:1px solid #ddd}.discussion-reply .btn{margin-top:8px}.discussion-reply .btn+.btn{margin-left:8px}.comment-sign-in-container{padding:15px;font-size:13px;text-align:center}.comment-sign-in-container .btn{margin:0 0 15px}.thread-subscription-status{padding:15px;background-color:#fff;border-top:1px solid #ddd}.thread-subscription-status .octicon-radio-tower{float:left;color:#ccc}.thread-subscription-description{position:relative;min-height:30px;padding-left:42px;margin-top:0;font-size:13px;color:#586069}.thread-subscription-description .octicon{position:absolute;left:0}.line-comment-info{position:relative;padding:7.5px 15px;font-size:12px;color:#586069;border-bottom:1px solid #ddd}.line-comment-info::before,.line-comment-info::after{position:absolute;width:0;height:0;content:""}.line-comment-info::before{bottom:-8px;left:15px;z-index:10;border-top:8px solid #ddd;border-right:8px solid transparent;border-left:8px solid transparent}.line-comment-info::after{bottom:-7px;left:16px;z-index:20;border-top:7px solid #fff;border-right:7px solid transparent;border-left:7px solid transparent}.mobile-featured-carousel{margin:10px 0;overflow:auto;-webkit-overflow-scrolling:touch}.mobile-featured-carousel .mobile-featured-collections{padding:0;margin:0 15px;white-space:nowrap;list-style-type:none}.mobile-featured-carousel .mobile-featured-collection{display:inline-block;width:100%;padding:0;margin:0 5px 0 0}.mobile-featured-carousel .mobile-featured-collection:last-child{margin-right:15px}.mobile-featured-carousel .mobile-featured-collection-head{display:table;width:100%;height:150px;border-radius:3px}.mobile-featured-carousel .mobile-featured-collection-title{display:table-cell;padding:10px;font-size:18px;font-weight:500;color:#fff;text-align:center;white-space:pre-line;vertical-align:middle}.showcase-collection .header{padding:20px 15px;background:#555 url("/images/modules/home/octicons-bg.png") center repeat}.showcase-collection .header .avatar{width:20px;height:20px;vertical-align:middle;border-radius:2px}.showcase-collection .title{margin:0;font-size:18px;font-weight:500;color:#fff}.showcase-collection .description{margin:15px;font-size:15px}.showcase-collection .showcase-items .title-meta-info{margin-left:5px;font-size:12px;font-weight:normal;color:#586069}.showcase-collection .showcase-items .bubble-title{font-weight:600;line-height:30px;color:#4183c4}.showcase-collection .showcase-items .avatar{width:30px;height:30px;margin-right:5px;vertical-align:middle;border-radius:2px}.flash{position:relative;padding:15px;font-size:14px;font-weight:600;color:#264c72;background-color:#dbeaf9;border-bottom:solid 1px #bac6d3}.flash+.flash{margin-top:5px}.flash .container{margin-right:0;margin-left:0}.flash .octicon-x{display:none}.flash .flash-action{float:right;margin-top:-5px}.flash.flash-warn{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}.flash.flash-error{color:#911;background-color:#fcdede;border-color:#d2b2b2}.flash-messages.container{margin:0 0 15px}.touchable{-webkit-tap-highlight-color:transparent}.nav-bar{position:relative;overflow:visible;color:rgba(255,255,255,0.75);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#1e2327}.nav-bar-inner{height:50px;margin:0 2px;line-height:50px;text-align:center}.nav-bar-inner .header-button{position:absolute;padding:5px 8px;line-height:1;color:inherit;background:transparent;border:0;border-radius:5px}.nav-bar-inner .header-button:active,.nav-bar-inner .header-button:focus{outline:0;box-shadow:none}.nav-bar-inner .header-context-button{top:8px;right:8px}.nav-bar-inner .header-nav-button{top:8px;left:8px}.nav-bar-inner .octicon-lock{top:-1px;margin-right:5px}.nav-bar-inner .brand-logo-invertocat .octicon,.nav-bar-inner .brand-logo-wordmark .octicon{margin-top:-8px;color:#fff;vertical-align:text-top}.nav-bar-inner.has-notifications{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.nav-bar-inner.has-notifications .header-button{position:static;max-width:44px;padding:0 12px}.nav-bar-inner.has-notifications .header-context-button{padding-top:14px}.nav-bar-inner.has-notifications .header-notification-button{position:relative;padding-top:14px}.unread-notifications-indicator{position:absolute;top:7px;right:5px;display:block;width:14px;height:14px;background-color:#2188ff;border:2px solid #1e2327;border-radius:50%}.nav-bar-title-text{position:relative;max-width:75%;padding:0 5px;margin:0 auto;overflow:hidden;font-size:14px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.has-notifications .nav-bar-title-text{position:static;max-width:none;margin:0;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.nav-bar-meta{padding:7.5px 15px;font-size:75%;text-align:center;border-top:1px solid #ddd}.nav-bar-tabs{position:absolute;z-index:9000;display:none;width:100%;height:0;padding:7.5px 0;overflow:hidden;font-size:16px;background-color:#1e2327;background-clip:padding-box}.nav-bar-tabs ul{padding:0;margin:0;list-style:none}.nav-bar-tabs a{position:relative;display:block;padding:8px 15px 8px 45px;color:rgba(255,255,255,0.75)}.nav-bar-tabs a .avatar,.nav-bar-tabs a .octicon{float:left;margin-top:3px;margin-left:-30px}.nav-bar-tabs a .octicon{width:20px;text-align:center}.nav-bar-tabs .section-title{padding:15px 0 0 15px;margin-top:7.5px;margin-bottom:0;font-size:12px;text-transform:uppercase}.nav-bar-tabs .unread-notifications-indicator{position:static;display:inline-block;vertical-align:-2px}.nav-is-open .nav-bar-tabs{display:block;height:auto}.markdown-body{font-size:15px}.markdown-body blockquote{margin-right:0;margin-left:0}.markdown-body code{white-space:normal}.markdown-body.email-format{line-height:1.5em !important}.markdown-body.email-format div{white-space:pre-wrap}.markdown-body .email-hidden-reply{display:none;white-space:pre-wrap}.markdown-body .email-hidden-reply.expanded{display:block}.markdown-body .email-quoted-reply,.markdown-body .email-signature-reply{padding:0 15px;margin-bottom:15px;color:#586069;border-left:4px solid #ddd}.breadcrumb{padding:15px;font-size:12px;color:#586069;border-bottom:1px solid #ddd}.breadcrumb .separator{margin:0 0.25em}.breadcrumb .octicon{margin-top:-1px;margin-right:5px}.breadcrumb a{font-weight:600}.breadcrumb strong{color:#444}.tabs{display:table;width:100%;table-layout:fixed}.tabs>a{display:table-cell;padding:10px 0;font-size:14px;font-weight:600;text-align:center;border-bottom:1px solid #ddd}.tabs>a.selected{color:#444;background-color:#fff;border-right:1px solid #ddd;border-bottom-color:#fff;border-left:1px solid #ddd}.tabs>a:first-child{border-left:0}.tabs>a:last-child{border-right:0}.pagination{position:relative;z-index:2;display:table;padding:0;margin-top:0;margin-bottom:-1px;background-color:#fafbfc}.pagination a,.pagination span,.pagination em{display:table-cell;width:1%;padding:10px 15px;color:#555;text-align:center;border:1px solid #ddd;border-left-color:#fff}.pagination a:first-child,.pagination span:first-child,.pagination em:first-child{border-left:0}.pagination a:last-child,.pagination span:last-child,.pagination em:last-child{border-right:0}.pagination span>a{padding:0}.pagination .current{font-style:normal;font-weight:600;color:#fff;background-color:#6a737d;background-image:-webkit-linear-gradient(#6a737d, #999);background-image:linear-gradient(#6a737d, #999);border-color:#6a737d}.pagination .gap,.pagination .disabled{color:#ccc}.oauth-header{padding:15px 15px 0;margin:0 0 15px;background:#fff;border-bottom:1px solid #ddd}.oauth-header::before{display:table;content:""}.oauth-header::after{display:table;clear:both;content:""}.oauth-header h1{margin-bottom:0;font-size:18px}.oauth-header .lead{margin-top:0;font-size:14px;color:#586069}.oauth-connection-illustration{position:relative;float:right;width:auto;margin-top:12px;margin-left:10px}.oauth-connection-illustration .oauth-image{float:left;padding:2px;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);border-radius:3px}.oauth-connection-illustration .oauth-image img{display:block;width:48px;height:48px;border-radius:3px}.oauth-connection-illustration .oauth-image.oauth-image-user{margin-top:20px;margin-left:-20px}.oauth-main .oauth-permissions-icon{float:left;margin-top:4px;margin-left:0;color:#586069;text-align:center}.oauth-main .permission-title{display:block;margin-bottom:2px;color:#000}.oauth-main .permission-summary,.oauth-main .permission-note{margin-left:34px}.oauth-main .permission-summary{line-height:1}.oauth-main .permission-summary .access-details{position:relative;color:#586069}.oauth-main .permission-note{margin-bottom:0;font-size:12px;color:#586069}.oauth-main .permission-note ul{padding-left:18px;margin:1em 0;list-style-type:disc}.oauth-main em.highlight{position:relative;padding:2px 3px;margin-right:-2px;margin-left:-3px;font-style:normal;color:#4c4a42;background:#fff9ea;border-radius:3px}.oauth-requests-summary{display:table;width:100%;table-layout:fixed}.oauth-requests-summary .octicon,.oauth-requests-summary .access-details{margin:0}.oauth-requests-summary .access-details{padding:0 10px 0 40px}.oauth-requests-summary .access-details p:first-child{margin-top:0}.oauth-requests-summary .access-details p:last-child{margin-bottom:0}.oauth-requests-summary .access-details .secondary-details{font-size:12px;color:#586069}.oauth-requests-summary .octicon-organization.approved{color:#28a745}.added-permission{color:#28a745}.oauth-permission-title{margin:15px 15px 5px}.oauth-secondary{font-size:12px}.oauth-secondary .no-description{margin-top:0;color:#586069}.oauth-secondary .learn-more,.oauth-secondary .existing-access{padding-top:15px;margin-bottom:5px;border-top:1px solid #eee}.oauth-secondary .features-list{padding:0;margin:0;list-style:none}.oauth-secondary .features-list li{margin-top:10px}.oauth-secondary .features-list li:first-child{margin-top:0}.oauth-secondary .features-list .list-divider{margin:15px -15px;border-top:1px solid #eee}.oauth-secondary .features-list .octicon{margin-right:5px;color:#60b044}.oauth-permissions-details .content{display:none}.oauth-permissions-details.open .content{display:block}.oauth-permissions-details.default .default-access{display:inline}.oauth-permissions-details.full .full-access{display:inline}.oauth-user-permissions .full-access,.oauth-user-permissions .limited-access,.oauth-user-permissions .limited-access-emails-followers,.oauth-user-permissions .limited-access-emails-profile,.oauth-user-permissions .limited-access-followers-profile,.oauth-user-permissions .limited-access-profile,.oauth-user-permissions .limited-access-followers,.oauth-user-permissions .limited-access-emails,.oauth-user-permissions .no-access{display:none}.oauth-user-permissions.limited.limited-email .limited-access-emails{display:inline}.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-emails,.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-profile{display:none}.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-emails-profile{display:inline}.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-profile,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-followers,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails-profile,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails-followers,.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-followers-profile{display:none}.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access{display:inline}.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-emails,.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-followers{display:none}.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-emails-followers{display:inline}.oauth-user-permissions.limited.limited-follow .limited-access-followers{display:inline}.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-followers,.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-profile{display:none}.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-followers-profile{display:inline}.oauth-user-permissions.limited.limited-profile .limited-access-profile{display:inline}.oauth-repo-permissions .default-access,.oauth-repo-permissions .public-access,.oauth-repo-permissions .full-access{display:none}.oauth-repo-permissions.public .public-access{display:inline}.oauth-delete-repo-permissions .octicon-alert{color:#cb2431}.oauth-repo-status-permissions .no-access,.oauth-repo-status-permissions .full-access{display:none}.oauth-notifications-permissions .no-access,.oauth-notifications-permissions .read-access,.oauth-notifications-permissions .via-public-access,.oauth-notifications-permissions .via-full-access{display:none}.oauth-notifications-permissions.read .read-access{display:inline}.oauth-notifications-permissions.via-public .via-public-access{display:inline}.oauth-notifications-permissions.via-public .octicon{display:none}.oauth-notifications-permissions.via-full .via-full-access{display:inline}.oauth-gist-permissions .no-access,.oauth-gist-permissions .full-access{display:none}.oauth-granular-permissions .no-access,.oauth-granular-permissions .read-access,.oauth-granular-permissions .write-access,.oauth-granular-permissions .full-access{display:none}.oauth-granular-permissions.none .no-access{display:inline}.oauth-granular-permissions.read .read-access{display:inline}.oauth-granular-permissions.write .write-access{display:inline}.oauth-granular-permissions.full .full-access{display:inline}.oauth-connect{padding-bottom:15px;margin:0 15px}.issues-reset-query-wrapper{padding:15px;background-color:#fff;border-bottom:solid 1px #eee}.subset-files-tab{background-color:#e6f1f6}.branch-action{padding:15px;font-size:12px;color:#586069;background-color:#fff;border-top:1px solid #eee}.discussion-block-header+.branch-action{border-top-color:#ddd}.branch-action-with-icon{padding-left:35px}.branch-action-heading{margin-top:0;margin-bottom:0;font-size:14px;color:#24292e}.branch-action-icon{float:left;width:16px;margin-left:-23px;text-align:center}.branch-action-expandable{border-top:1px solid #eee}.discussion-block-header+.branch-action-expandable{border-top-color:#ddd}.branch-action-expandable .list-item{padding-right:40px}.branch-action-expandable .list-items-overflow{max-height:170px;-webkit-overflow-scrolling:touch;overflow-y:auto;font-size:13px;background-color:#f5f5f5;border-top:1px solid #eee}.branch-action-expandable .list-items-overflow .list-item{padding-top:7px;padding-bottom:7px}.branch-action-expandable .list-items-overflow .list-item-state-icon{top:8px}.branch-action-expandable .octicon-fold,.branch-action-expandable .list-items-overflow{display:none}.branch-action-expandable.open .octicon-fold,.branch-action-expandable.open .list-items-overflow{display:block}.branch-action-expandable.open .octicon-unfold{display:none}.branch-action-expandable .list-item:first-child .list-item-chevron{top:14px;margin-top:2px;font-size:18px}.branch-actions-details{margin-right:-25px}.merge-branch{position:relative}.merge-branch .is-loading .octicon{display:none}.merge-branch .is-loading .mergeable-state-loading{display:inline-block;width:16px;height:16px;background-image:url("/images/spinners/octocat-spinner-16px.gif")}.merge-branch .mergeable-state-message{margin-top:0;margin-bottom:0;font-size:12px;color:#586069}.merge-branch .mergeable-state-message.required{display:block;color:#586069}.merge-branch .merge-branch-form,.merge-branch .mergeable-state-message{display:none}.merge-branch.open{border-top:3px solid #ddd}.merge-branch.open .octicon-git-pull-request,.merge-branch.open .merge-message{display:none}.merge-branch.open.mergeable-state-clean .merge-branch-form{display:block}.merge-branch.open.mergeable-state-unstable .mergeable-state-message.unstable{display:block}.merge-branch.open.mergeable-state-dirty .mergeable-state-message.dirty{display:block}.merge-branch.open.mergeable-state-blocked .mergeable-state-message.blocked{display:block}.merge-branch.mergeable-state-error .mergeable-state-message.error{display:block}.merge-commit-message{margin:7.5px 0}.merge-commit-title{font-weight:600}.merge-form-author{margin-bottom:15px;font-size:12px;line-height:20px;color:#586069}.merge-form-author .avatar{margin-right:5px}.merge-options{margin-right:0;margin-left:0;color:#24292e}.merge-options .list-item{padding-top:10px;padding-bottom:10px}.merge-options .byline{font-weight:normal}.merge-option-radio{position:absolute;top:12px;left:12px;margin-right:3px}.merge-branch-form .btn-merge{display:block}.merge-branch-form .btn-squash,.merge-branch-form .btn-rebase{display:none}.merge-branch-form.is-squashing .btn-merge,.merge-branch-form.is-squashing .btn-rebase{display:none}.merge-branch-form.is-squashing .btn-squash{display:block}.merge-branch-form.is-rebasing .merge-commit-title,.merge-branch-form.is-rebasing .merge-commit-message{display:none}.merge-branch-form.is-rebasing .btn-merge,.merge-branch-form.is-rebasing .btn-squash{display:none}.merge-branch-form.is-rebasing .btn-rebase{display:block}.repository-meta{margin:15px;font-size:13px;color:#666}.repository-meta-url{word-wrap:break-word}.branch-selector{position:relative;padding-left:19px;font-weight:600}.branch-selector .octicon.octicon-git-branch{position:absolute;top:1px;left:0}.branch-selector .octicon.octicon-chevron-up,.branch-selector .octicon.octicon-chevron-down{position:relative;top:1px;float:right;width:auto;margin-right:0;margin-left:0}.branch-selector .octicon.octicon-chevron-up{display:none}.branch-selector label{display:block;font-size:inherit}.branch-selector-toggle{display:none}.branch-selector-toggle:checked ~ label .octicon-chevron-up{display:block}.branch-selector-toggle:checked ~ label .octicon-chevron-down{display:none}.branch-selector-toggle:checked ~ .branch-selector-options{display:block}.branch-selector-options{position:relative;display:none;padding-top:6px;font-size:13px;font-weight:normal}.branch-selector-option{display:block;padding:6px 0;font-size:14px;font-weight:600}.branch-selector-option .octicon-check{position:absolute;left:-19px}.branch-selector-all-branches{display:block;padding:6px 0}.latest-commit .commit-author{position:relative;padding-top:8px;padding-bottom:8px;font-size:12px;line-height:20px;color:#586069;background:#fff}.latest-commit .bubble-content strong{color:#555}.pulse-control{padding:15px;font-size:11px;text-align:right}.trending-text-for{padding-right:5px}.trending-text-in{padding-right:5px;padding-left:5px}.pulse-summary{margin:0 0 30px}.pulse-summary:last-of-type{margin-bottom:0}.pulse-summary .summary-title{padding:0;margin:0 0 5px;font-size:14px}.pulse-summary .bar-graph{display:table;width:100%;margin:0;border-radius:3px}.pulse-summary .bar{display:table-cell;height:15px;background-color:#6a737d}.pulse-summary .bar.closed{background-color:#cb2431}.pulse-summary .bar.open{background-color:#28a745}.pulse-summary .bar.merged{background-color:#6f42c1}.pulse-summary .bar.proposed{background-color:#28a745}.pulse-summary .summary-box{display:table;width:100%;padding:0;margin:0;color:#586069;border:1px solid #f2f2f4}.pulse-summary .summary-box li{display:table-cell;width:50%;padding:15px 0;text-align:center}.pulse-summary .summary-box li:first-child{border-right:1px solid #f2f2f4}.pulse-summary .summary-box .count{display:block;font-size:16px;color:#444}.pulse-summary .summary-box .count .octicon{margin-top:2px}.user-bar-graph{position:relative;height:103px;background:#fff}.max-commits{position:absolute;top:3px;right:15px;font-size:10px;color:#586069}.user-bar-item{position:relative;float:left;width:20px;height:75px;margin:0 5px 5px 0}.user-bar-item img{position:absolute;bottom:-28px;margin-right:5px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.user-bar{position:absolute;bottom:0;width:20px;max-height:75px;padding:0 0 3px;margin:0;font-size:12px;color:#586069;background-color:#fc9a28;border-top-left-radius:3px;border-top-right-radius:3px;opacity:0.8}.y-axis-bar{position:absolute;left:0;width:100%;height:1px;background:#eaeaea}.y-axis-bar.top{top:0}.y-axis-bar.middle{top:36px}.y-axis-bar.bottom{bottom:27px;border-color:#ccc}.bar-graph{height:30px;padding:0;margin:15px 0}.bar-graph a{position:relative;display:block;float:left;height:10px;padding:0;margin:0}.bar-graph a .label{position:absolute;bottom:-23px;font-size:13px;color:#586069}.bar-graph a:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.bar-graph a:first-child .label{left:0}.bar-graph a:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.bar-graph a:last-child .label{right:0}.file-browser-header{max-width:100%;border-bottom:1px solid #ddd}.file-browser-header>.TableObject-item{padding:15px}.file-browser-header>.TableObject-item:first-child{white-space:normal;border-right:solid 1px #ddd}.file-browser-header .octicon{color:#586069}.history-link{margin-top:4px;font-size:12px;font-weight:600;color:#586069;vertical-align:top}p.history-link{padding:15px;margin:0;font-size:13px;border-bottom:1px solid #ddd}p.history-link a{color:#586069}.blob-breadcrumb{position:relative;padding-left:40px}.blob-breadcrumb .filetype-icon{position:absolute;top:15px;left:15px}.blob-history{position:relative;display:none;color:#7b878c;background:#f5f9fc;border-bottom:1px solid #d2d9dd}.blob-history a{display:block;padding:15px 15px 15px 41px;font-size:13px;color:#0366d6}.blob-history .octicon{color:#7b878c}.blob-history .octicon-history{position:absolute;top:16px;left:15px}.blob-history .commit-ref{float:right;margin:2px 0 0 10px;font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;font-weight:600;color:#7b787c}.blob-history-label{float:right;color:#0366d6}.blob-history-checkbox{position:absolute;top:0;left:0;opacity:0}.blob-history-checkbox:checked ~ .blob-history{display:block}.blob-file-content{background-color:#fff}.blob-file-content pre{margin:0;overflow:scroll;word-wrap:normal;white-space:pre}.blob-file-content .code-body pre{padding:15px 0}.blob-file-content .code-body pre .line{padding:0 15px}.blob-file-content-blankslate{padding:15px;margin-top:0;margin-bottom:0}.markdown-body{padding:15px}.subscription-settings-bubble .bubble-content{padding:0 15px}.reponav-wrapper{position:relative;z-index:2;height:36px;margin-top:-1px;overflow-y:hidden;background-color:#1e2327}.reponav{padding-right:7px;padding-bottom:20px;padding-left:7px;margin-top:-6px;-webkit-overflow-scrolling:touch;overflow-x:auto;color:rgba(255,255,255,0.75);text-align:center;white-space:nowrap}.reponav-item{display:inline-block;padding:10px 8px;color:rgba(255,255,255,0.75)}.reponav-item .Counter{color:inherit;background-color:rgba(255,255,255,0.15)}.reponav-item.selected{font-weight:600;color:#fff}.server-stats{color:#586069;background:#333}.server-stats .stats{padding-left:0;margin:0}.server-stats .stats li{padding:15px;list-style:none;border-bottom:1px solid rgba(0,0,0,0.7);box-shadow:0 1px 0 rgba(255,255,255,0.1)}.server-stats a,.server-stats strong{font-weight:600;color:#fff}.server-stats .serverstats-branch{padding:15px;margin:0;font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace}.server-stats .serverstats-branch .current-branch{max-width:90%}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.profile-header{position:relative;min-height:140px;padding:15px 15px 10px 140px;overflow:visible;line-height:1.5}.profile-header .avatar{position:absolute;top:15px;left:15px;margin-right:15px;border-radius:3px}.profile-header h1{margin:0;font-size:16px;color:#333}.profile-header h3{margin:0;font-size:12px;font-weight:normal;color:#586069}.user-profile-bio{padding:0 15px 15px;white-space:pre-wrap}.user-profile-company>div{display:inline-block}.details{padding:0;margin:7.5px 0 0}.details li{margin-bottom:0;font-size:12px;line-height:1.8}.details-item{font-size:13px;line-height:24px;list-style:none}.details-item .css-truncate-target{max-width:88%}.details-item .octicon{width:16px;color:#586069;text-align:center}.user-following-container{display:block;padding:0 15px 15px}.user-following-container.loading{opacity:0.5}.user-following-container .follow,.user-following-container.on .unfollow{display:block}.user-following-container.on .follow,.user-following-container .unfollow{display:none}.language-color{position:relative;top:1px;display:inline-block;width:12px;height:12px;border-radius:50%}.profile-timeline-wrapper{position:relative;z-index:0;overflow:hidden;word-break:break-word;word-wrap:break-word;white-space:normal;background-color:#fff}.profile-timeline-wrapper .form-select{width:116px}.profile-timeline .timeline-item-icon{float:left;width:32px;height:32px;margin-top:-7px;margin-left:-40px;line-height:29px;color:#586069;text-align:center;background-color:#f6f8fa;border:2px solid #fff;border-radius:50%}.profile-timeline .profile-timeline-month-line{background-color:#fff}.profile-timeline .profile-timeline-month-line .profile-timeline-month-heading{top:-10px}.profile-timeline .profile-timeline-month-line::after{display:block;width:100%;height:1px;margin-top:-4px;content:"";background-color:#f6f8fa}.profile-timeline .profile-timeline-line::before{position:absolute;top:0;bottom:0;left:15px;z-index:-1;display:block;width:2px;content:"";background-color:#f6f8fa}.profile-timeline .profile-timeline-card-wrapper{border-top:solid 2px #fff;border-bottom:solid 2px #fff}.profile-timeline .profile-timeline-card-wrapper h4{margin:0}.profile-timeline .profile-timeline-card-footer{height:45px;line-height:45px}.profile-timeline .profile-timeline-card-footer .diffstat{position:inherit !important;top:0}.profile-timeline .progress-bar{height:10px;border-radius:2px}.profile-timeline .col-5{width:30%}.profile-rollup-wrapper .css-truncate-target{max-width:72%}.profile-rollup-icon .octicon{vertical-align:middle}.profile-rollup-event-title.css-truncate-target{max-width:100%}.profile-rollup-wrapper+.profile-rollup-wrapper{border-top:1px solid #f6f8fa}.profile-timeline-card-wrapper+.profile-timeline-card-wrapper{margin-top:8px}.profile-rollup-wrapper+.profile-timeline-card-wrapper{margin-top:0}.profile-timeline-month-line+.profile-timeline-card-wrapper{margin-top:8px}.profile-rollup-content{display:none}.profile-rollup-toggle .css-truncate-target{max-width:90%}.profile-rollup-toggle-closed{display:none}.profile-rollup-toggle-open{display:inline-block}.open .profile-rollup-content,.open .profile-rollup-toggle-closed{display:block}.open .btn-link .profile-rollup-toggle-closed{display:inline-block}.open .profile-rollup-toggle-open{display:none}.inbox-zero{padding:30px 15px;color:#586069;text-align:center;background-color:#fff;border-top:1px solid #eee}.inbox-unavailable{padding:30px 15px;color:#586069;text-align:center;background-color:#fff;border-top:1px solid #eee}.subscription-settings-bubble .form-checkbox{padding:0 15px 0 40px}.subscription-settings-bubble .form-checkbox input[type="radio"]{position:relative;top:2px}.subscription-settings-bubble .form-checkbox .note{padding-left:0}.mobile-search .list-item em,.mobile-search .list-item-title em,.mobile-search .list-item .byline em{padding:1px;padding-top:1px;font-style:normal;font-weight:600;text-shadow:none;background-color:rgba(255,255,140,0.5);border-radius:3px}.mobile-search .description{display:block;padding-bottom:5px;margin:0;font-size:12px;color:#000}.mobile-search .description strong{font-weight:normal;color:#444}.mobile-search .issue-list-item .octicon-comment-discussion{margin-left:5px;color:#586069}.mobile-search .user-list-item{min-height:73px}.mobile-search .user-list-item .user-list-info,.mobile-search .user-list-item .byline{padding-left:45px}.dashboard-search{display:block;margin:15px}.dashboard-search .dashboard-search-input{width:100%;margin:0}.topic-tag{display:inline-block;padding:0.3em 0.9em;margin:0.25em 0.5em 0.25em 0;background-color:#e7f3ff;border-radius:3px}.branch-groups{padding-top:15px;background:#fff}.branch-groups .bubble-title{background-color:#f5f5f5}.branches-list{border-bottom:1px solid #ddd}.branches-list:last-child{border-bottom:0}.branches-list .branch-name{display:inline-block;padding:2px 6px;margin-left:15px;font:12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;color:rgba(0,0,0,0.5);background-color:rgba(209,227,237,0.5);border-radius:3px}.branches-list .branch-name .octicon{margin:1px -2px 0 0;color:#b0c4ce}.branches-list a.branch-name{color:#0366d6}.branch-list-item .branch-name{max-width:80%;margin-right:10px}.branch-list-item .meta{margin-top:3px}.branch-list-item .branch-meta{display:block;margin-top:3px;margin-left:0;font-size:12px;color:#586069}.gist-mobile-blob{border-top:1px solid #ddd}.gist-meta{margin-top:15px}.render-container{padding:30px;line-height:0;text-align:center;background:#dfe2e5}.render-container .render-viewer{display:none;width:100%;height:100%;border:0}.render-container .octospinner{display:none}.render-container .render-viewer-error,.render-container .render-viewer-fatal,.render-container .render-viewer-invalid{display:none}.render-container.is-render-automatic .octospinner{display:inline-block}.render-container.is-render-requested .octospinner{display:inline-block}.render-container.is-render-requested.is-render-failed .render-viewer-error{display:inline-block}.render-container.is-render-requested.is-render-failed .render-viewer,.render-container.is-render-requested.is-render-failed .render-viewer-fatal,.render-container.is-render-requested.is-render-failed .render-viewer-invalid,.render-container.is-render-requested.is-render-failed .octospinner{display:none}.render-container.is-render-requested.is-render-failed-fatal .render-viewer-fatal{display:inline-block}.render-container.is-render-requested.is-render-failed-fatal .render-viewer,.render-container.is-render-requested.is-render-failed-fatal .render-viewer-error,.render-container.is-render-requested.is-render-failed-fatal .render-viewer-invalid,.render-container.is-render-requested.is-render-failed-fatal .octospinner{display:none}.render-container.is-render-requested.is-render-failed-invalid .render-viewer-invalid{display:inline-block}.render-container.is-render-requested.is-render-failed-invalid .render-viewer,.render-container.is-render-requested.is-render-failed-invalid .render-viewer-error,.render-container.is-render-requested.is-render-failed-invalid .render-viewer-fatal,.render-container.is-render-requested.is-render-failed-invalid .octospinner{display:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed){height:500px;padding:0;background:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer{display:block}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-error,.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-fatal,.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .octospinner{display:none}.render-notice{padding:20px 15px;font-size:14px;color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}
- @media (min-width: 992px) {
- .container{
- width: 980px;
- margin-right: auto;
- margin-left: auto;
- position: relative;
- margin-top: 16px;
- margin-bottom: 16px;
- border: 1px solid #ddd;
- border-radius: 3px;
- }
- }
- </style>
- </head>
- <body><div id="readme" class="container"><article class="markdown-body entry-content"><p># Installation d'un serveur Debian/Stretch sécurisé</p>
- <h2 id="sch-ma-de-notre-installation-at-home">Schéma de notre installation "at home"</h2>
- <p>Notre installation se compose donc d'une <strong>box</strong>, Freebox dans mon cas qui sera notre passerelle vers Internet. Free permet d'avoir une adresse IPV6 dans l'abonnement de base. IL suffit de l'activer dans la configuration de votre box.</p>
- <p>A compléter pour d'autres FAIs et boxes.</p>
- <p>J'ai la chance de bénéficier d'une connexion <strong>fibre</strong>, adaptée à l'installation d'un serveur à la maison. (Débit d'upload suffisant).</p>
- <p>Notre serveur sera connecté à la box (au routeur) dans la zone <strong>DMZ</strong>. C'est une zone qui sera accessible de l'extérieur, de tout l'internet donc. C'est pourquoi nous aurons à prendre des mesures de sécurité adéquates.</p>
- <p>Notre réseau local sera également connecté à la box, soit par câble (filaire) soit par wifi.</p>
- <p><img src="Images/reseau.png" alt="Shéma de mon réseau"></p>
- <h2 id="pr-requis">Prérequis</h2>
- <ol>
- <li><p>Un serveur</p>
- <p>Il vous faut un serveur, accessible chez vous (je décris ici l'installation d'un "home" serveur, même si la plupart des explications seront également valables pour un serveur hébergé ou dédié.</p>
- <p><img src="Images/mon-serveur.jpg" alt="Mon petit Serveur"></p>
- <p>Mon serveur est motorisé par un vieux microprocesseur Atom à 1,6Ghz, appuyé par 2 Go de RAM et un disque SSD de 240 Go. Il sera relié à un clavier et un écran pendant la phase d'installation.</p>
- <p>Ce serveur est assez ancien (2007) et l'amorçage n'est pas basé sur UEFI, mais un bios standard. Je rajouterai une partie dédiée à l'amorçage UEFI dès que j'aurai un serveur/machine de bureau supportant ce mécanisme. (oui, mon matériel est ancien ....)</p>
- </li>
- <li><p>Un nom de domaine</p>
- <p>Un nom de domaine est indispensable si vous voulez que votre serveur soit accessible de l'extérieur. Il vous faudra choisir un nom, enregistré chez un “registrar” comme OVH, Gandi ou autre.
- Mon domaine réservé est <strong>yojik.net</strong>.</p>
- <blockquote>
- <p><strong>example.com</strong> est un nom de domaine couramment utilisé dans les tutoriels.</p>
- </blockquote>
- </li>
- <li><p>Un nom de machine</p>
- <p>Déterminez le nom de votre machine: le mien sera <strong>atom</strong>.</p>
- <blockquote>
- <p> Le nom complet de ma machine serait donc: <strong>atom.yojik.net</strong></p>
- </blockquote>
- </li>
- <li><p>Une adresse IP fixe</p>
- <p>Une adresse IP fixe est nécessaire même s'il est possible de travailler avec des adresses dynamiques. Des FAIs comme Free, OVH proposent des IPs fixes (IPV4) et un pool d'adresses IPV6. D'autres fournisseurs d'accès proposent ces adresses fixes / IPV6 avec un supplément d'abonnement.</p>
- </li>
- <li><p>Un compte utilisateur</p>
- <p>L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisteur): notez le bien. Nous le changerons ensuite, après l'installation de base. Nous utiliserons un générateur de mots de passe; il y en a pléthore.</p>
- <p>Ensuite, il vous demandera de définir un compte utilisateur, ici, un compte d'administration. Nous ne nous connecterons qu'avec ce compte (SSH) et interdirons l'accès au compte super-utilisateur (root) par SSH.</p>
- <p>Définissez votre nom d'administrateur ainsi que son mot de passe. Il ne sera utile que dans les premières étapes. Nous sécuriserons l'accès SSH en n'utilisant que des connexions par clef, et uniquement pour le compte administrateur. L'accès SSH pour le compte super-utilisateur sera bloqué.</p>
- <p>Nous modifierons également les mots de passe administrateur et super-utilisateur par la suite.</p>
- </li>
- </ol>
- <h2 id="r-capitulatif">Récapitulatif</h2>
- <table>
- <thead>
- <tr>
- <th>Nom de la machine</th>
- <th>Domaine</th>
- <th>Adresse IPV4</th>
- <th>Comptes</th>
- <th>Mot de passe</th>
- </tr>
- </thead>
- <tbody><tr>
- <td>atom</td>
- <td>yojik.net</td>
- <td>192.168.111.160</td>
- <td>ericadmin</td>
- <td>***</td>
- </tr>
- <tr>
- <td>|</td>
- <td>| root</td>
- <td>***</td>
- <td></td>
- <td></td>
- </tr>
- </tbody></table>
- <h2 id="pr-paration-de-l-installation">Préparation de l'installation</h2>
- <h3 id="t-l-chargement-de-l-image-iso-netinstall">Téléchargement de l'image ISO netinstall</h3>
- <p>(ISO de taille minimale, récupération des éléments suivants sur Debian.org par le réseau)</p>
- <p>Rendez-vous à l'adresse suivante <a href="https://www.debian.org/CD/netinst/">Debian.org</a> et choisissez l'image amd64 ou I386 ou autre suivant l'architecture de votre serveur. Mon serveur utilisera l'image i386.
- Il existe des images “non-officielles” comprenant les firmwares de périphériques. (partie software des périphériques).
- L'adresse est la suivante: <a href="https://cdimage.debian.org/cdimage/unofficial/non-free/firmware/">Debian.org + firmwares</a></p>
- <h3 id="copie-de-l-image-sur-une-clef-usb">Copie de l'image sur une clef USB</h3>
- <p>Il vous faut déterminer le périphérique utilisé par votre clef. Insérez la dans votre ordinateur Linux et dans un terminal root, lancez la commande : <strong>dmesg</strong>. Cherchez les lignes qui correspondent à votre clef USB.
- Voici un extrait sur ma machine:</p>
- <pre><code class="language-shell">usb 4-7: new high-speed USB device number 2 using ehci-pci
- [ 9381.149286] usb 4-7: New USB device found, idVendor=1b1c, idProduct=1ab1
- [ 9381.149291] usb 4-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3
- [ 9381.149293] usb 4-7: Product: Voyager
- [ 9381.149295] usb 4-7: Manufacturer: Corsair
- [ 9381.149298] usb 4-7: SerialNumber: AA00000000000108
- [ 9381.198595] usb-storage 4-7:1.0: USB Mass Storage device detected
- [ 9381.198931] scsi host8: usb-storage 4-7:1.0
- [ 9381.199458] usbcore: registered new interface driver usb-storage
- [ 9381.200839] usbcore: registered new interface driver uas
- [ 9382.519813] scsi 8:0:0:0: Direct-Access Corsair Voyager 1100 PQ: 0 ANSI: 0 CCS
- [ 9382.520679] sd 8:0:0:0: Attached scsi generic sg4 type 0
- [ 9383.462615] sd 8:0:0:0: [sdd] 31326208 512-byte logical blocks: (16.0 GB/14.9 GiB)
- [ 9383.463760] sd 8:0:0:0: [sdd] Write Protect is off
- [ 9383.463762] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00
- [ 9383.464786] sd 8:0:0:0: [sdd] No Caching mode page found
- [ 9383.464792] sd 8:0:0:0: [sdd] Assuming drive cache: write through
- [ 9383.470824] sdd: sdd1 sdd2
- [ 9383.474661] sd 8:0:0:0: [sdd] Attached SCSI removable disk
- [ 9384.564005] ISO 9660 Extensions: Microsoft Joliet Level 3
- [ 9384.566879] ISO 9660 Extensions: Microsoft Joliet Level 3
- [ 9384.571964] ISO 9660 Extensions: RRIP_1991A</code></pre>
- <p>Le périphérique utilisé sera donc (dans mon cas): <strong>/dev/sdd</strong>.
- Procédons maintenant à la copie de notre fichier ISO sur la clef. Il y a plusieurs possibilités, suivant votre OS (Linux, Mac, Windows) ou votre distribution (Fedora, Debian, etc.)</p>
- <ul>
- <li>Copie avec un logiciel “spécialisé” comme unetbootin</li>
- <li>Copie avec la commande <strong>dd</strong></li>
- </ul>
- <p>C'est la dernière solution que j'utiliserai.
- L'image ISO est dans mon répertoire <strong>Téléchargements</strong>.</p>
- <blockquote>
- <p><strong>dd if=./Téléchargements/debian-9.2.1-i386-netinst.iso of=/dev/sdd bs=4096</strong></p>
- </blockquote>
- <p>Le paramètre “bs=4096” est nécessaire pour certaines clef USB.</p>
- <h3 id="modification-du-bios">Modification du BIOS</h3>
- <p>Il vous faudra certainement aller dans le BIOS de votre serveur, touche DEL, F12, ESC, F10 ou autre (voyez l'écran d'accueil au démarrage qui indique habituellement la touche à utiliser) pour entrer dans le paramétrage du BIOS et indiquer sur quel périphérique le serveur va démarrer.</p>
- <p>Insérez votre clef et modifiez l'ordre de Boot (quel périphérique sera utilisé pour amorcer la machine). L'opération inverse sera souvent nécessaire pour rétablir l'ordre initial de démarrage. (démarrage sur le disque dur)</p>
- <h3 id="lancement-de-l-installation">Lancement de l'installation</h3>
- <p>Éteignez votre serveur, insérez la clef USB si elle n'y est pas déjà et rallumez votre serveur. Il faudra taper sur une touche "DEL" ou "F12" ou autre pour accéder au menu de démarrage de votre serveur et choisir de démarrer (amorçage, booter) sur votre clef.</p>
- <h2 id="installation-du-serveur-sans-chiffrage-des-partitions">Installation du serveur sans chiffrage des partitions</h2>
- <p>Nous utiliserons le mode texte, mais vous pouvez utiliser le mode graphique si vous voulez. Les écrans sont identiques.</p>
- <ol>
- <li><p>Démarrage</p>
- <p> <img src="Images/Debian-Stretch-01.png" alt="Démarrage"></p>
- </li>
- <li><p>Choix du mode d'installation</p>
- <p> <strong>Texte</strong> pour moi.</p>
- </li>
- <li><p>Choix de la langue (clavier, interface)</p>
- <p> Langue d'installation: <strong>Français</strong></p>
- <p> <img src="Images/Debian-Stretch-02.png" alt="Démarrage"></p>
- <p> Situation géographique: <strong>France</strong></p>
- <p> <img src="Images/Debian-Stretch-03.png" alt="Démarrage"></p>
- <p> Configuration du clavier: <strong>français</strong></p>
- <p> <img src="Images/Debian-Stretch-04.png" alt="Démarrage"></p>
- </li>
- <li><p>Choix du nom de la machine</p>
- <p> Sans le nom de domaine: ici, <strong>atom</strong></p>
- <p> Le nom complet de la machine Debian est défini dans 2 fichiers:</p>
- <ul>
- <li>/etc/hostname: ce fichier contient le nom du serveur, <strong>SANS</strong> le nom de domaine. Ce fichier ne contient qu'une seule ligne (un mot): le nom de votre machine.</li>
- <li>/etc/hosts: ce fichier contient le nom complet de la machine. Il se présente ainsi:</li>
- </ul>
- </li>
- </ol>
- <pre><code class="language-shell">127.0.0.1 localhost
- # serveurs
- 192.168.111.160 atom.yojik.net atom
- # The following lines are desirable for IPv6 capable hosts
- ::1 localhost ip6-localhost ip6-loopback
- ff02::1 ip6-allnodes
- ff02::2 ip6-allrouters</code></pre>
- <p> Vous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est écrit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons l'adresse IPV6 ensuite, après l'installation.</p>
- <p> <img src="Images/Debian-Stretch-06.png" alt="Démarrage"></p>
- <ol start="5">
- <li><p>Choix du nom de domaine</p>
- <p><strong>yojik.net</strong> (mettez le votre!)</p>
- <p><img src="Images/Debian-Stretch-08.png" alt="Démarrage"></p>
- </li>
- <li><p>Saisie du mot de passe root (super-utilisateur)</p>
- <p><img src="Images/Debian-Stretch-09.png" alt="Démarrage"></p>
- <p>Confirmation du mot de passe super-utilisateur.</p>
- <p><img src="Images/Debian-Stretch-10.png" alt="Démarrage"></p>
- </li>
- <li><p>Saisie du compte utilisateur</p>
- <p>Ici, notre compte d'administrateur (admin ou celui de votre choix); en effet, nous ne nous connecterons jamais avec le compte <strong>root</strong>, uniquement avec le compte d'administration. L'accès <strong>root</strong> sera bloqué dans le fichier de configuration de <strong>ssh</strong>.</p>
- <p><img src="Images/Debian-Stretch-12.png" alt="Démarrage"></p>
- </li>
- <li><p>Saisie du mot de passe utilisateur.</p>
- <ol>
- <li><p>Mot de passe</p>
- <p> <img src="Images/Debian-Stretch-13.png" alt="Démarrage"></p>
- </li>
- <li><p>Confirmation de ce mot de passe.</p>
- <p> <img src="Images/Debian-Stretch-14.png" alt="Démarrage"></p>
- </li>
- </ol>
- </li>
- <li><p>Partitionnement du disque</p>
- <p>Ici, nous avons 2 solutions principalement:</p>
- <ul>
- <li>1 partitionnement avec chiffrage du disque (manuel ou automatique)</li>
- <li>2 partitionnement sans chiffrage</li>
- </ul>
- <p>Nous verrons ici un partitionnement sans chiffrage. Le chiffrage sera vu dans une partie séparée car elle pose le problème de la saisie de la phrase de passe pour un serveur “distant”.</p>
- <p>Ici, nous utiliserons un disque entier, avec tout dans une seule partition. Il est parfaitement possible de choisir un autre schéma de partitionnement, avec /home, /var, /tmp dans des partitions séparées.</p>
- <p><img src="Images/Debian-Stretch-15.png" alt="Démarrage"></p>
- <p>Choix d'une installation simplifiée:</p>
- <p><img src="Images/Debian-Stretch-16.png" alt="Démarrage"></p>
- <p>Choix du disque à partitionner:</p>
- <p><img src="Images/Debian-Stretch-17.png" alt="Démarrage"></p>
- <p>Schéma de partitionnement: (simplifié également ...)</p>
- <p> <img src="Images/Debian-Stretch-18.png" alt="Démarrage"></p>
- <p> Confirmation du partitionnement choisi:</p>
- <p> <img src="Images/Debian-Stretch-19.png" alt="Démarrage"></p>
- <p> <img src="Images/Debian-Stretch-20.png" alt="Démarrage"></p>
- </li>
- <li><p>Progression de l'installation</p>
- <p><img src="Images/Debian-Stretch-21.png" alt="Démarrage"></p>
- </li>
- <li><p>Configuration de l'outil de gestion des paquets</p>
- <p>Nous n'avons pas d'autres sources de paquets pour l'instant:</p>
- <p><img src="Images/Debian-Stretch-22.png" alt="Démarrage"></p>
- </li>
- <li><p>Choix du miroir</p>
- <p><strong>France</strong> mais choisissez celui qui est le plus proche de votre localisation géographique.</p>
- <p><img src="Images/Debian-Stretch-23.png" alt="Démarrage"></p>
- <p>Choix du miroir de l'archive Debian: j'ai choisi <strong>deb.debian.org</strong>. Ce miroir renvoie vers le miroir le plus approprié et le plus rapide.</p>
- <p><img src="Images/Debian-Stretch-24.png" alt="Démarrage"></p>
- </li>
- <li><p>Choix du proxy</p>
- <p>Choix du proxy: pas de proxy pour moi. Le proxy permet de passer par un serveur intermédiaire, par exemple, situé dans un autre pays.</p>
- <p><img src="Images/Debian-Stretch-25.png" alt="Démarrage"></p>
- <p>Progression de l'installation ...</p>
- <p><img src="Images/Debian-Stretch-26.png" alt="Démarrage"></p>
- </li>
- <li><p>Configuration de “popularity contest”</p>
- <p> J'ai répondu: <strong>oui</strong>. Choisissez si vous voulez participer aux statistiques des paquets les plus employés.</p>
- <p> <img src="Images/Debian-Stretch-28.png" alt="Démarrage"></p>
- </li>
- <li><p>Sélection des logiciels</p>
- <p>Désélectionnez “environnement de bureau” et sélectionnez: <strong>“serveur ssh”</strong> et <strong>“utilitaires usuels du système”</strong>. Validez.</p>
- <p><img src="Images/Debian-Stretch-30.png" alt="Démarrage"></p>
- </li>
- <li><p>Installation de <strong>grub</strong> (gestionnaire d'amorçage) sur le disque.</p>
- <p><img src="Images/Debian-Stretch-31.png" alt="Démarrage"></p>
- </li>
- <li><p>Sélection du disque sur lequel installer le programme de démarrage <strong>grub</strong>.</p>
- <p>J'ai choisi le disque installé dans mon serveur. On aurait aussi pu choisir un média amovible comme une clef USB.</p>
- <p><img src="Images/Debian-Stretch_08_21.png" alt="Démarrage"></p>
- </li>
- <li><p>Redémarrage</p>
- <p>Enlevez la clef USB qui a permis de lancer l'installation et tapez <strong>ENTER</strong>.</p>
- <p><img src="Images/Debian-Stretch_08_56.png" alt="Démarrage"></p>
- </li>
- <li><p>S'identifier (se loguer).</p>
- <p><img src="Images/Debian-Stretch-32.png" alt="Démarrage"></p>
- <p>Ici, utilisateur <strong>root</strong>, puis saisie du mot de passe super-utilisateur.</p>
- <p>Nous ferons notre première configuration à partir du clavier et de l'écran connectés à notre serveur. Cela n'est valable évidemment que si nous avons un accès physique à notre machine.</p>
- <p>Pour une machine distante, la procédure est différente et nous nous connecterons avec <strong>ssh</strong>.</p>
- <p><img src="Images/Debian-Stretch_08_21.png" alt="Démarrage"></p>
- </li>
- </ol>
- <p>Et voilà, l'installation première est terminée.</p>
- <p>Il reste “quelques” étapes comme la configuration du réseau (nous avons utilisé la configuration automatique pendant l'installation), la sécurisation du serveur <strong>ssh</strong>, ainsi que l'installation de programmes de surveillance (monitoring), le pare-feu.</p>
- <h2 id="installation-de-serveur-avec-chiffrage-des-partitions-m-thode-manuelle-">Installation de serveur avec chiffrage des partitions (méthode manuelle)</h2>
- <p>Pour cela, il faut que le serveur soit accessible ... au démarrage, il vous sera demandé la clef de chiffrage. Nous verrons ensuite une méthode avec clef de chiffrage installée sur une clef USB ou carte mémoire, ce qui permettra un redémarrage automatique du serveur sans avoir à saisir la clef. (mais même avec ce système, il faut un accès physique au serveur.)</p>
- <p>Les première étapes sont identiques à la version non-chiffrée. Le chiffrement sera configuré lors du partitionnement du disque.</p>
- <ol>
- <li><p>Choix du mode d'Installation</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_28_37.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Choix de la Langue</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_28_55.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Choix de la situation géographique</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_29_00.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration du clavier</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_29_06.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Installation: début</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_29_12.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Installation: Suite</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_29_33.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration du réseau: nom de machine</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_29_44.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration du réseau: nom de Domaine</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_29_57.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration du réseau: nom de Domaine (suite)</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_30_06.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration du mot de passe super-utilisateur</p>
- <p><img src="Images/Debian-Stretch-crypted-12_30_13.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Confirmation du mot de passe</p>
- <p><img src="Images/Debian-Stretch-crypted-12_30_21.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration d'un premier utilisateur (Nom/prénom)</p>
- <p><img src="Images/Debian-Stretch-crypted-12_30_29.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration d'un premier utilisateur (suite)</p>
- <p><img src="Images/Debian-Stretch-crypted-12_30_36.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Identifiant (login) de cet utilisateur</p>
- <p><img src="Images/Debian-Stretch-crypted-12_30_40.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Mot de passe de cet utilisateur</p>
- <p><img src="Images/Debian-Stretch-crypted-12_30_45.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Confirmation</p>
- <p><img src="Images/Debian-Stretch-crypted-12_30_55.png" alt="Démarrage-chiffré"></p>
- </li>
- </ol>
- <ol start="17">
- <li><p>C'est ici que commencent les changements de configuration. Nous allons partitionner la disque en 3:</p>
- <ul>
- <li>la première partition est la partition /boot, non chiffrée</li>
- <li>la partition suivante est la partition swap, chiffrée</li>
- <li>la dernière est la partition root "/" chiffrée.</li>
- </ul>
- <p><img src="Images/Debian-Stretch-crypted-12_31_10.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Nous allons utiliser la méthode manuelle pour pouvoir fixer nous-mêmes la taille de nos partitions:</p>
- <p><img src="Images/Debian-Stretch-crypted-12_31_14.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Choix du disque à partitionner</p>
- <p><img src="Images/Debian-Stretch-crypted-12_31_41.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Création de la table de partition</p>
- <p><img src="Images/Debian-Stretch-crypted-12_31_54.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_31_59.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_32_02.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_32_06.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_32_19.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_33_20.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_33_35.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_33_41.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Choix du système de fichiers et du point de montage de la première partition (/boot).</p>
- <p><img src="Images/Debian-Stretch-crypted-12_33_47.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_33_53.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_34_00.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Création des partitions suivantes (swap et "/")</p>
- <p><img src="Images/Debian-Stretch-crypted-12_34_20.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Partition swap</p>
- <p><img src="Images/Debian-Stretch-crypted-12_34_28.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_34_33.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_34_47.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_34_54.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Création de la partition root "/"</p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_06.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_13.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_21.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_29.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_44.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Configuration des volumes chiffrés</p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_49.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_53.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-12_35_58.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Choix des partitions à chiffrer (swap et root)</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_36_06.png" alt="Démarrage-chiffré"></p>
- <p> <img src="Images/Debian-Stretch-crypted-12_36_10.png" alt="Démarrage-chiffré"></p>
- <p> <img src="Images/Debian-Stretch-crypted-12_36_18.png" alt="Démarrage-chiffré"></p>
- <p> <img src="Images/Debian-Stretch-crypted-12_36_31.png" alt="Démarrage-chiffré"></p>
- <p> <img src="Images/Debian-Stretch-crypted-12_36_36.png" alt="Démarrage-chiffré"></p>
- <p> <img src="Images/Debian-Stretch-crypted-12_37_56.png" alt="Démarrage-chiffré"></p>
- <p> Vous noterez que j'ai choisi de ne PAS effacer les données du disque. En production, il faudra choisir OUI. Cette procédure permet de remplir les partitions avec des données aléatoires et donne une meilleure sécurité. Cette procédure est longue ...</p>
- <p> <img src="Images/Debian-Stretch-crypted-12_42_37.png" alt="Démarrage-chiffré"></p>
- <p> <img src="Images/Debian-Stretch-crypted-12_42_43.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Choix de la clef de chiffrage</p>
- <p><img src="Images/Debian-Stretch-crypted-13_09_02.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_09_11.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_09_22.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_09_51.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Fin du partitionnement</p>
- <p><img src="Images/Debian-Stretch-crypted-13_10_17.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Oups! oubli ... il nous faut configurer le point de montage "/"</p>
- <p><img src="Images/Debian-Stretch-crypted-13_10_23.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_10_40.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_12_48.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_13_10.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_13_29.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_13_33.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_13_39.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Affichage de notre table de partitions</p>
- <p><img src="Images/Debian-Stretch-crypted-13_13_48.png" alt="Démarrage-chiffré"></p>
- </li>
- <li><p>Fin du partitionnement</p>
- <p><img src="Images/Debian-Stretch-crypted-13_13_56.png" alt="Démarrage-chiffré"></p>
- <p><img src="Images/Debian-Stretch-crypted-13_13_59.png" alt="Démarrage-chiffré"></p>
- <p>La fin de l'installation est identique à la version non-chiffrée.</p>
- </li>
- </ol>
- <h2 id="installation-de-serveur-avec-chiffrage-des-partitions-mode-assist-lvm-">Installation de serveur avec chiffrage des partitions (mode assisté LVM)</h2>
- <p> Le début de l'installation est identique. Nous allons passer directement à la partie partitionnement. (section 12)</p>
- <ol>
- <li><p>Étape 1</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_12_04.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 2</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_12_28.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 3</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_12_36.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 4</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_12_44.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 5</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_13_39.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 6</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_13_48.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 7</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_14_10.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 8</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_14_20.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 9</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_14_43.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 10</p>
- <p><img src="Images/Debian-chiffrée_14_07_2018_09_14_48.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 11</p>
- <p><img src="Images/Debian-chiffrée_14_07_2018_09_15_05.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Partitionnement en mode lvm chiffré</p>
- <p> On suit ce qui est indiqué sur les captures d'écran.</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_15_37.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Choix du disque à partitionner</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_15_43.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Choisissez le mode que vous voulez: tout dans une partition ou des partitions séparées.</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_15_49.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>On modifie les partitions</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_15_56.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Partitionnement en cours</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_16_08.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Effacement des données (écriture de données aléatoires sur le disque)</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_17_26.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Saisie de la phrase de passe</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_30_48.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Suite</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_31_19.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Affichage de vos choix</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_31_43.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Confirmation de vos choix</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_32_07.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Installation du système (comme précédemment)</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_32_36.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 23</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_45_36.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 24</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_45_51.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 25</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_45_59.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 26</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_46_07.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 27</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_46_13.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 28</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_46_48.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 29</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_49_04.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 30</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_09_49_25.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 31</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_10_04_01.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 32</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_10_04_11.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Étape 33</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_10_15_52.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Re-démarrage</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_10_16_06.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Saisie de la phrase de passe pour débloquer l'accès au disque</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_10_16_15.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- <li><p>Et voilà :)</p>
- <p> <img src="Images/Debian-chiffrée_14_07_2018_10_16_31.png" alt="Debian-chiffrée-lvm"></p>
- </li>
- </ol>
- <h2 id="installation-de-serveur-avec-chiffrage-des-partitions-et-clef-de-chiffrage-sur-support-amovible">Installation de serveur avec chiffrage des partitions et clef de chiffrage sur support amovible</h2>
- <p> <strong>WORK IN PROGRESS !!!</strong></p>
- <p> Nous allons voir ici une méthode pour éviter d'avoir à saisir la phrase de passe à chaque redémarrage. Nous allons ajouter une clef (en plus de celle que vous avez déjà). Cette clef sera composée par des données aléatoires d'un support amovible (clef usb, carte sdx, etc ... )</p>
- <p> Nous allons remplir le contenu de ce support avec des données aléatoires, et définir une portion de celle-ci comme clef. Il reste évident qu'il faut avoir un accès physique àa la machine ...</p>
- <h3 id="-criture-de-donn-es-al-atoires-sur-le-support-amovible-">Écriture de données aléatoires sur le support amovible.</h3>
- <p>Vérifiez avec la commande <strong>dmesg</strong> quel est le périphérique amovible utilisé. Pour moi, c'est <strong>sdb</strong>.</p>
- <blockquote>
- <p>dd if=/dev/urandom of=/dev/sdb bs=4096</p>
- </blockquote>
- <p>Nous avons utilisé la totalité de la clef. Il est possible aussi de formater la clef d'une façon habituelle en réservant un espace <strong>non-formaté</strong> et <strong>non alloué</strong> pour installer notre clef secrète. Pour cela, vous pouvez utiliser <strong>gparted</strong> par exemple.</p>
- <h3 id="extraction-de-la-clef-partir-d-un-secteur-donn-de-la-clef">Extraction de la clef à partir d'un secteur donné de la clef</h3>
- <blockquote>
- <p>dd if=/dev/sdb of=/root/secret.key bs=512 skip=8 count=16</p>
- </blockquote>
- <h3 id="ajout-de-cette-clef-cryptsetup">Ajout de cette clef à cryptsetup</h3>
- <p>On liste les partitions:</p>
- <blockquote>
- <p>blkid</p>
- </blockquote>
- <p>On ajoute la clef dans le slot 1 (le slot 0 contient la phrase de passe entrée lors de l'installation.)</p>
- <blockquote>
- <p>cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1</p>
- </blockquote>
- <h3 id="ajout-d-une-r-gle-udev">Ajout d'une règle udev</h3>
- <p>On crée le fichier: /etc/udev/rules.d/99-custom-usb.rules avec le contenu suivant:</p>
- <blockquote>
- <p>SUBSYSTEMS=="usb", DRIVERS=="usb",SYMLINK+="usbdevice%n"</p>
- </blockquote>
- <p>Onb relance le serveur et on vérifie que la règle a bien été prise en compte:</p>
- <blockquote>
- <p>ls -l /dev/usbdevices</p>
- </blockquote>
- <p>C'est bon.</p>
- <h3 id="test">Test</h3>
- <p>pas fini :( ou mieux, "work in progress" !</p>
- </article></div><div style="background-color: #b4b2b2;width: 50px;height:50px;line-height: 50px;text-align: center;position: fixed;bottom: 10px;right: 10px;padding-top:5px;" onclick="document.documentElement.scrollTop = document.body.scrollTop =0;">
- <svg t="1533629773982" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1035" xlink="http://www.w3.org/1999/xlink" width="40" height="40"><defs><style type="text/css">@font-face { font-family: uc-nexus-iconfont; src: url("chrome-extension://pogijhnlcfmcppgimcaccdkmbedjkmhi/res/font_9qmmi8b8jsxxbt9.woff") format("woff"), url("chrome-extension://pogijhnlcfmcppgimcaccdkmbedjkmhi/res/font_9qmmi8b8jsxxbt9.ttf") format("truetype"); }
- </style></defs><path d="M536.255427 195.182354c-7.804756-7.804756-17.966187-11.615549-28.311813-11.615549-9.43693 0-18.874883 3.449565-26.496467 10.163477-2.360767 1.452071-4.356214 3.267417-6.352685 5.262864L218.47792 455.611735c-15.607466 15.60542-15.607466 40.834011 0 56.43943 15.607466 15.607466 41.558511 15.607466 57.167001 0l193.46013-192.733583 0 600.526219c0 22.1423 17.787108 39.927361 39.927361 39.927361 22.140253 0 39.927361-17.785062 39.927361-39.927361L548.959773 319.317583 737.15704 508.422522c15.607466 15.607466 40.469714 15.607466 56.078203 0 15.607466-15.607466 15.425318-40.834011-0.182149-56.441477L536.255427 195.182354 536.255427 195.182354z" p-id="1036" fill="#333"/><path d="M101.784174 143.097092l816.674071 0c22.140253 0 39.925315-17.785062 39.925315-39.927361 0-22.140253-17.784038-39.925315-39.925315-39.925315L101.784174 63.244416c-22.140253 0-39.927361 17.785062-39.927361 39.925315C61.856813 125.31203 79.643921 143.097092 101.784174 143.097092L101.784174 143.097092z" p-id="1037" fill="#333"/></svg>
- </div>
- </body></html>
|