:root{--line-height:1.3rem;--grid-height:0.65rem;--bg-color:#282a36;--text-color:#f8f8f2;--border:#6272a4;--link-color:#8be9fd;--hover:#ff79c6;--visited:#8be9fd;--white:#f2f2f2;--white-light:#f2f2f2;--white-dark:#e8e8e8;--grey:#414558;--grey-light:#6a708e;--code:#414558;--pre:#252525;--blockquote:#bd93f9;--blockquote-bg:#353548;--text-red:#ff5555;--text-green:#50fa7b}*,::before,::after{box-sizing:border-box}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}html{background-color:var(--bg-color);color:var(--text-color);font-size:16px;line-height:var(--line-height);font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,fira sans,droid sans,helvetica neue,Arial,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4}body{margin:0 auto;max-width:900px}img{max-width:100%;height:auto}b,strong{font-weight:700}code,kbd,samp,pre{font-family:monospace}code,kbd,samp{border:2px solid var(--code)}pre>code{background-color:inherit;padding:0;border:none;border-radius:0}code{font-size:90%;border-radius:.3rem;padding:.025rem .3rem}pre{font-size:.8rem;border-radius:1px;padding:var(--line-height);overflow-x:auto;background-color:var(--pre);border:1px solid var(--border)}small{font-size:.8rem}h1,h2,h3,h4{margin:0;padding:0;border:0;font-style:normal;font-weight:inherit;font-size:inherit;font-family:monospace}path{fill:var(--text-color);stroke:var(--text-color)}hr{color:inherit;border:0;height:2px;background:var(--grey);margin:calc(var(--grid-height) - 2px)auto;margin-top:calc(var(--line-height) * 2)}a{text-decoration:none;color:var(--link-color)}a:hover,a:visited:hover{text-decoration:underline}a:visited{color:var(--visited)}section{margin-bottom:1.4rem}section:last-child{margin-bottom:0}header{margin:1rem auto}p{margin-top:var(--line-height);margin-bottom:var(--line-height)}article{overflow-wrap:break-word}blockquote{border-left:5px solid var(--blockquote);background-color:var(--blockquote-bg);padding:var(--grid-height);margin:var(--line-height)0}blockquote>p{margin:0}blockquote code{border:1px solid var(--blockquote)}ul,ol{padding:0 15px;list-style-position:inside;list-style-type:square;margin:var(--grid-height)0}ol ul,ol ol,ul ol,ul ul{padding:0 0 0 var(--line-height);margin:0}li{margin:var(--grid-height)0;padding:0}li::marker{line-height:0;color:var(--grey-light)}table{border-collapse:collapse;margin:var(--line-height)0}th,td{border:1px solid var(--white);padding:var(--grid-height)}footer{text-align:center;margin-bottom:calc(var(--line-height) * 3)}dt{font-weight:700}dd{margin-left:0}dd:not(:last-child){margin-bottom:.5rem}figure{margin:0}sup{line-height:0}.stack{display:flex;flex-direction:column;gap:var(--grid-height)}.stack--lg{gap:var(--line-height)}.cluster{display:flex;align-items:center;gap:var(--grid-height)}.cluster--xs{gap:.25rem}.split{display:flex;justify-content:space-between;align-items:center}.split--start{align-items:flex-start}@view-transition{navigation: auto;
}::view-transition-old(root){animation:fade-out 150ms ease-out forwards}::view-transition-new(root){animation:fade-in 150ms ease-in forwards}@keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-in{from{opacity:0}to{opacity:1}}.htmx-swapping{opacity:1}.htmx-settling{animation:htmx-fade-in 100ms ease-in}@keyframes htmx-fade-in{from{opacity:.8}to{opacity:1}}.site-header{display:flex;flex-direction:column}.site-header__title{font-size:1rem;font-weight:700;line-height:var(--line-height);text-transform:uppercase;display:flex;gap:var(--grid-height);padding:0;margin:0}.site-header__desc{font-style:italic;color:var(--grey-light);margin-top:var(--grid-height)}.site-header__desc>p{padding:0;margin:0}.nav-menu{display:flex;align-items:center;gap:1.5rem;margin:1rem 0;border-bottom:1px solid var(--border);padding-bottom:.5rem;flex-wrap:wrap}.nav-menu a,.nav-menu span.active{color:var(--grey-light);font-weight:600;text-transform:uppercase;font-size:.9rem;text-decoration:none;padding-bottom:.4rem;border-bottom:2px solid transparent;transition:all .2s ease}.nav-menu a:hover,.nav-menu span.active{color:var(--text-color);border-bottom:2px solid var(--link-color)}.nav-menu span.font-bold{color:var(--text-color);font-weight:600;text-transform:uppercase;font-size:.9rem;padding-bottom:.4rem;border-bottom:2px solid transparent}.nav-menu__ref-selector{margin-left:auto;position:relative}.nav-menu__ref-selector summary{color:var(--grey-light);font-weight:600;text-transform:uppercase;font-size:.9rem;padding-bottom:.4rem;border-bottom:2px solid transparent;cursor:pointer;list-style:none;display:flex;align-items:center;gap:.25rem}.nav-menu__ref-selector summary:hover{color:var(--text-color)}.nav-menu__ref-selector summary::-webkit-details-marker{display:none}.nav-menu__ref-selector summary::after{content:"▼";font-size:.7rem}.nav-menu__ref-selector[open] summary::after{content:"▲"}.ref-selector__dropdown{position:absolute;top:100%;right:0;min-width:150px;background-color:var(--bg-color);border:1px solid var(--border);border-radius:4px;padding:.5rem 0;margin-top:.25rem;z-index:100;max-height:300px;overflow-y:auto}.ref-selector__dropdown a{display:block;padding:.25rem 1rem;color:var(--text-color);font-weight:600;text-transform:uppercase;font-size:.9rem;text-decoration:none;border-bottom:none;padding-bottom:.25rem}.ref-selector__dropdown a:hover{background-color:var(--pre);color:var(--link-color);text-decoration:none}.last-commit-bar{display:flex;justify-content:space-between;align-items:center;margin-top:var(--grid-height);margin-bottom:var(--grid-height);font-size:.8rem;color:var(--grey-light)}.last-commit-bar__info{display:flex;align-items:center;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.last-commit-bar__info svg{color:var(--white)}.last-commit-bar__info a{color:var(--white)}.last-commit-bar__info a:hover{color:var(--hover)}.last-commit-bar__time{font-family:monospace}.commit-list{display:flex;flex-direction:column}.commit-list__count{margin-bottom:var(--grid-height)}.commit-item{transition:background-color .2s ease;padding:0 .5rem;margin:0 -.5rem}.commit-item:hover{background:var(--pre)}.commit-item__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--grid-height)}.commit-item__content{flex:1;margin-right:1rem}.commit-item__message{margin:0;display:inline-block;white-space:break-spaces;font-weight:700;font-size:1rem;line-height:var(--line-height);transform:translateX(-1.25rem)}.commit-item__message a{color:var(--text-color)}.commit-item__message>svg{width:1rem;margin-right:.25rem;transform:translateY(25%)}.commit-item__meta{display:flex;align-items:center;gap:.25rem;font-size:.8rem;color:var(--grey-light)}.commit-item__actions{display:flex;flex-direction:column;align-items:flex-end}.commit-item__hash{font-family:monospace;font-size:.8rem;font-weight:700}.commit-item__hash a{color:var(--text-color);text-decoration:none}.commit-item__hash a:hover{text-decoration:underline}.commit-item__refs{display:flex;flex-wrap:wrap;justify-content:flex-end}.commit-item__ref{font-family:monospace;font-size:.8rem}.page-title{font-size:1rem;font-weight:700;line-height:var(--line-height);margin-top:calc(var(--line-height) * 2);margin-bottom:var(--line-height);text-transform:uppercase;color:var(--white-dark)}.file-list__row{display:flex;justify-content:space-between;align-items:center;gap:var(--line-height);padding:0 var(--grid-height)}.file-list__row:last-child{border-bottom:none}.file-list__path{flex:1;display:flex;align-items:center;gap:var(--grid-height);text-wrap:wrap}.file-list__meta{display:flex;align-items:center;gap:var(--grid-height)}.file-list__commit{flex:1}.file-list__size{width:60px;text-align:right}.metadata{display:grid;grid-template-columns:max-content 1fr;gap:.5rem 1.5rem;align-items:center;background-color:var(--pre);padding:1rem;border-radius:4px;border:1px solid var(--grey);font-size:.8rem;margin-bottom:calc(var(--line-height) * 2)}.metadata__label{color:var(--grey-light);text-align:right;font-weight:600;text-transform:uppercase;font-size:.8rem}.metadata__value{color:var(--text-color)}.metadata__value--code{font-family:monospace}.diff-file__header{display:flex;justify-content:space-between;align-items:center;font-family:monospace;padding:var(--grid-height)0;position:sticky;top:0;left:0;background-color:var(--bg-color);border-bottom:2px solid var(--grey);border-top:1px solid var(--grey);padding:0 1rem;margin:2rem 0 0;z-index:10;font-weight:700;height:48px}.diff-stat--add{color:#50fa7b;font-weight:700}.diff-stat--del{color:#f55;font-weight:700}.file-header{margin:1rem 0}.file-header .commit-item__header{margin-bottom:0}.box{margin:1rem 0;padding:var(--grid-height);border:1px solid var(--border);border-radius:4px}.box__title{font-size:1rem;font-weight:700;line-height:var(--line-height);margin-bottom:var(--grid-height);text-transform:uppercase}.box__stats{margin-top:var(--grid-height)}.clone-url{text-align:left;margin-bottom:calc(var(--line-height) * 1.5)}.clone-url__label{color:var(--grey-light);font-size:.8rem;font-weight:600;text-transform:uppercase}.clone-url__command{color:var(--text-color);font-size:.9rem;font-family:monospace}.breadcrumb{font-size:1rem;font-weight:700;line-height:var(--line-height);margin-bottom:var(--grid-height);text-transform:none}.breadcrumb__current{font-weight:700}.content-heading{font-size:1rem;font-weight:700;line-height:var(--line-height);margin-top:var(--line-height);margin-bottom:var(--line-height);text-transform:none;color:var(--white-dark)}.markdown{overflow-wrap:break-word}.markdown h1,.markdown h2,.markdown h3,.markdown h4{margin:0;padding:0;font-family:monospace;font-weight:700;line-height:var(--line-height);text-transform:uppercase}.markdown h1{font-size:var(--line-height);margin-top:var(--line-height);margin-bottom:var(--grid-height)}.markdown h2,.markdown h3,.markdown h4{font-size:1rem;margin-top:var(--line-height);margin-bottom:var(--line-height);color:var(--white-dark)}.markdown h1 a,.markdown h2 a,.markdown h3 a,.markdown h4 a{color:var(--grey-light);text-decoration:none}.markdown h1 a:hover,.markdown h2 a:hover,.markdown h3 a:hover,.markdown h4 a:hover{text-decoration:underline}.markdown code{font-family:monospace;font-size:90%;border:2px solid var(--code);border-radius:.3rem;padding:.025rem .3rem;background-color:initial;text-transform:none}.markdown pre{font-family:monospace;font-size:.8rem;border-radius:1px;padding:var(--line-height);overflow-x:auto;background-color:var(--pre);border:1px solid var(--border)}.markdown pre>code{background-color:inherit;padding:0;border:none;border-radius:0}.markdown p{margin-top:var(--line-height);margin-bottom:var(--line-height)}.markdown ul,.markdown ol{padding:0 15px;list-style-position:inside;list-style-type:square;margin:var(--grid-height)0}.markdown li{margin:var(--grid-height)0;padding:0}.markdown li::marker{line-height:0;color:var(--grey-light)}.markdown ol ul,.markdown ol ol,.markdown ul ol,.markdown ul ul{padding:0 0 0 var(--line-height);margin:0}.markdown blockquote{border-left:5px solid var(--blockquote);background-color:var(--blockquote-bg);padding:var(--grid-height);margin:var(--line-height)0}.markdown blockquote>p{margin:0}.markdown blockquote code{border:1px solid var(--blockquote)}.markdown table{border-collapse:collapse;margin:var(--line-height)0}.markdown th,.markdown td{border:1px solid var(--white);padding:var(--grid-height)}.markdown hr{color:inherit;border:0;height:2px;background:var(--grey);margin:calc(var(--grid-height) - 2px)auto}.markdown img{max-width:100%;height:auto}.markdown strong{font-weight:700}.markdown em{font-style:italic}.markdown a{color:var(--link-color);text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown a:visited{color:var(--visited)}@media only screen and (max-width:40em){body{padding:0 var(--grid-height)}header{margin:0}.nav-menu{flex-wrap:wrap;gap:.75rem}.nav-menu__ref-selector{display:none}.commit-item__header{flex-direction:column;gap:var(--grid-height)}.commit-item__content{margin-right:0;width:100%}.commit-item__actions{align-items:flex-start;width:100%}.file-list__row{flex-direction:column;align-items:flex-start;gap:var(--grid-height)}.file-list__path{width:100%}.file-list__meta{width:100%;justify-content:space-between}.file-list__commit{display:none}.metadata{grid-template-columns:1fr;gap:.25rem}.metadata__label{text-align:left;margin-top:.5rem}.metadata__label:first-child{margin-top:0}.diff-file__header{flex-direction:column;align-items:flex-start;height:auto;padding:var(--grid-height);gap:var(--grid-height)}.last-commit-bar{flex-direction:column;align-items:flex-start;gap:0}.last-commit-bar__info,.last-commit-bar__time{line-height:var(--line-height);margin:0;padding:0}.last-commit-bar__info{white-space:normal}.issue-detail__title-row{flex-direction:column}.issue-detail__status{align-self:flex-start}}@media only screen and (max-width:900px){.file-list_row{padding:0 var(--grid-height);padding-top:var(--grid-height)}.file-list__commit{display:none}.file-list__size{display:none}}.commit-message{margin:0;margin-bottom:calc(var(--line-height) * 2);white-space:break-spaces;font-size:1rem;line-height:var(--line-height);text-transform:none}.commit-message__summary{font-weight:700;margin-bottom:var(--line-height)}.commit-message__body{font-weight:400}.file-list-summary{margin-top:var(--grid-height)}.file-list-summary__item{margin:var(--grid-height)0}.issues-page{margin-top:var(--line-height)}.issues-header{border-bottom:1px solid var(--border);margin-bottom:.5rem}.issues-header h1{font-size:1rem;font-weight:700;text-transform:uppercase;margin-bottom:var(--grid-height)}.issues-nav{display:flex;align-items:center;gap:1.5rem;margin:1rem 0;flex-wrap:wrap}.issues-nav a,.issues-nav span.active{color:var(--grey-light);font-weight:600;text-transform:uppercase;font-size:.9rem;text-decoration:none;padding-bottom:.4rem;border-bottom:2px solid transparent;transition:all .2s ease}.issues-nav a:hover,.issues-nav span.active{color:var(--text-color);border-bottom:2px solid var(--link-color)}.issues-nav__label-selector{margin-left:auto;position:relative}.issues-nav__label-selector summary{color:var(--grey-light);font-weight:600;text-transform:uppercase;font-size:.9rem;padding-bottom:.4rem;border-bottom:2px solid transparent;cursor:pointer;list-style:none;display:flex;align-items:center;gap:.25rem}.issues-nav__label-selector summary:hover{color:var(--text-color)}.issues-nav__label-selector summary::-webkit-details-marker{display:none}.issues-nav__label-selector summary::after{content:"▼";font-size:.7rem}.issues-nav__label-selector[open] summary::after{content:"▲"}.label-selector__dropdown{position:absolute;top:100%;right:0;min-width:150px;background-color:var(--bg-color);border:1px solid var(--border);border-radius:4px;padding:.5rem 0;margin-top:.25rem;z-index:100;max-height:300px;overflow-y:auto}.label-selector__dropdown a{display:block;padding:.25rem 1rem;color:var(--text-color);font-weight:600;text-transform:uppercase;font-size:.9rem;text-decoration:none;border-bottom:none;padding-bottom:.25rem}.label-selector__dropdown a:hover{background-color:var(--pre);color:var(--link-color);text-decoration:none}.issues-list{display:flex;flex-direction:column}.issue-item{display:flex;justify-content:space-between;align-items:flex-start;padding:.25rem .5rem;transition:background-color .2s ease;margin:0 -.5rem}.issue-item:hover{background-color:var(--pre)}.issue-item__main{flex:1;margin-right:1rem;display:flex;flex-direction:column;gap:.1rem}.issue-item__title{color:var(--text-color)!important;font-size:1rem;font-weight:700;text-decoration:none;display:block;line-height:var(--line-height)}.issue-item__title:hover{text-decoration:underline}.issue-meta{color:var(--grey-light);font-family:monospace;font-size:.8rem;line-height:var(--line-height)}.issue-item__stats{display:flex;flex-direction:column;align-items:flex-end;text-align:right;font-size:.8rem;color:var(--grey-light);line-height:var(--line-height)}.issue-date{white-space:nowrap}.issue-labels-text{color:var(--grey-light)}.no-issues{color:var(--grey-light);font-style:italic;padding:var(--line-height)0}.issue-detail__header{margin-bottom:var(--line-height);padding-bottom:var(--grid-height);border-bottom:1px solid var(--border)}.issue-detail__title-row{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--grid-height)}.issue-detail__title{font-size:1rem;font-weight:700;line-height:var(--line-height);margin:0 1rem 0 0;flex:1;word-wrap:break-word;overflow-wrap:break-word}.issue-detail__status{font-size:.9rem;font-weight:600;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.issue-detail__status--open{color:var(--text-red)}.issue-detail__status--closed{color:var(--text-green)}.issue-detail__meta{display:flex;gap:.5rem;align-items:center;font-size:.8rem;color:var(--grey-light);flex-wrap:wrap}.issue-detail__labels{font-size:.9rem}.issue-detail__labels>span:first-child{color:var(--grey-light);margin-right:.5rem}.issue-label:not(:last-child)::after{content:"•";margin:0 .4rem;color:var(--grey-light)}.issue-description{margin-bottom:var(--line-height)}.issue-comment{padding:var(--grid-height);border:1px solid var(--border);border-radius:4px;margin-bottom:var(--grid-height);background:var(--background)}.issue-comment__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--grid-height);padding-bottom:var(--grid-height);border-bottom:1px solid var(--grey);font-size:.9rem}.issue-comment__author{font-weight:700;color:var(--text-color)}.issue-comment__date{color:var(--grey-light);font-size:.8rem}.issue-comment__meta{display:flex;align-items:center;gap:.5rem}.issue-comment__id{color:var(--grey-light);font-size:.8rem;font-family:monospace}.issue-comment__id::after{content:" · ";margin-left:.25rem}.issue-comment__body{line-height:var(--line-height)}.issue-comments h3{font-size:1rem;font-weight:700;text-transform:uppercase;margin:var(--line-height)0 var(--grid-height);color:var(--white-dark)}:root{--bg-color:#0d1117;--text-color:#e6edf3;--border:#8b949e;--link-color:#79c0ff;--hover:#ff7b72;--visited:#79c0ff}.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117}.chroma .ln:target{color:#e6edf3;background-color:#6e7681}.chroma .lnt:target{color:#e6edf3;background-color:#6e7681}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}