@import 'https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=JetBrains+Mono:wght@400;600&display=swap';:root{--max-width:1200px;--font-sans:'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-mono:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--border:1px solid var(--color-gray-5);--border-radius:0.5rem;--color-black:#0a0a0a;--color-gray-1:#1a1a1a;--color-gray-2:#1f1f1f;--color-gray-3:#292929;--color-gray-4:#2e2e2e;--color-gray-5:#454545;--color-gray-6:#878787;--color-gray-7:#8f8f8f;--color-gray-8:#7d7d7d;--color-gray-9:#a0a0a0;--color-gray-10:#ededed;--color-blue-1:#0f1b2d;--color-blue-2:#10243e;--color-blue-3:#0f3058;--color-blue-4:#0d3768;--color-blue-5:#0a4481;--color-blue-6:#0091ff;--color-blue-7:#0071f3;--color-blue-8:#0062d1;--color-blue-9:#52a9ff;--color-blue-10:#eaf6ff;--color-red-1:#2a1314;--color-red-2:#3d1719;--color-red-3:#551a1e;--color-red-4:#671e22;--color-red-5:#822025;--color-red-6:#e5484d;--color-red-7:#e5484d;--color-red-8:#da3036;--color-red-9:#ff6368;--color-red-10:#feecee;--color-amber-1:#271700;--color-amber-2:#341c00;--color-amber-3:#4a2900;--color-amber-4:#573300;--color-amber-5:#693f05;--color-amber-6:#e79d13;--color-amber-7:#ffb224;--color-amber-8:#ffa90a;--color-amber-9:#f1a10d;--color-amber-10:#fef3dd;--color-green-1:#0b2211;--color-green-2:#0f2c17;--color-green-3:#11351b;--color-green-4:#0c461c;--color-green-5:#126426;--color-green-6:#1a9338;--color-green-7:#46a758;--color-green-8:#388e4b;--color-green-9:#63c174;--color-green-10:#e5fbeb;--color-teal-1:#04201b;--color-teal-2:#062923;--color-teal-3:#083a33;--color-teal-4:#053c34;--color-teal-5:#085e53;--color-teal-6:#0c9785;--color-teal-7:#12a594;--color-teal-8:#0f8a7c;--color-teal-9:#0ac5b2;--color-teal-10:#e1faf4;--color-purple-1:#221527;--color-purple-2:#301a3a;--color-purple-3:#432155;--color-purple-4:#4e2667;--color-purple-5:#5e2d84;--color-purple-6:#8e4ec6;--color-purple-7:#8e4ec6;--color-purple-8:#773da9;--color-purple-9:#bf7af0;--color-purple-10:#f7ecfc;--color-pink-1:#27141c;--color-pink-2:#3c1827;--color-pink-3:#4f1c31;--color-pink-4:#541b33;--color-pink-5:#6c1e3f;--color-pink-6:#b21a57;--color-pink-7:#e93d82;--color-pink-8:#de2670;--color-pink-9:#f76191;--color-pink-10:#feecf4;--color-primary:var(--color-teal-9)}::selection{background:var(--color-teal-3)}*{color-scheme:dark;box-sizing:border-box}*[data-hide]{display:none}html{text-size-adjust:none;-webkit-text-size-adjust:none;font-size:14px}body{font-family:var(--font-sans);background-color:var(--color-black);color:var(--color-gray-10);margin:0}code{font-family:var(--font-mono)}span[role=img]{font-family:serif}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:.25rem}.container{max-width:var(--max-width);margin:0 auto;padding:0 2rem}.title{font-family:var(--font-mono);font-size:3rem;margin-bottom:1.5rem}.title .sh{font-size:1.5rem}.title a{color:var(--color-gray-10)}.stripes{display:block;width:100%;height:1rem;background-image:repeating-linear-gradient( -45deg,var(--color-primary) 0 2px,transparent 2px 8px )}.file-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);border:var(--border);border-radius:var(--border-radius);margin-bottom:1.5rem;z-index:999;background-color:var(--color-black)}.file-header .file-details{padding:1rem;color:var(--color-gray-9);flex:1}.file-header .file-header-link{padding:.5rem 1rem;border-left:var(--border)}.file-content{overflow-x:auto;background-color:var(--color-gray-1);border-radius:var(--border-radius)}.file-content *{scroll-margin-top:3.5rem;// offset header}.file-footer{margin:2rem;text-align:center;font-family:var(--font-mono)}.danger{color:var(--color-red-9)}.muted{color:var(--color-gray-6)}@media(max-width:768px){.container{padding:0 .5rem}}.code{margin:1.5rem 1rem}.code .chroma .line{display:flex;line-height:1.5rem}.code .chroma .hl .cl{position:relative;flex:1}.code .chroma .ln{margin-right:.4rem;padding:0 .4rem 0 .8rem}.code .chroma .ln+.cl{padding-left:.75rem}.code .chroma .hl .cl:before{content:"";display:block;position:absolute;top:0;left:0;width:2px;height:100%;background-color:var(--color-primary)}.code .chroma .hl .cl:after{content:"";display:block;position:absolute;top:0;right:0;width:100%;height:100%;background-color:var(--color-primary);opacity:.05}.code .chroma .hl .lnlinks{color:var(--color-primary)}.chroma .x{}.chroma .err{color:var(--color-pink-9)}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:var(--color-gray-9)}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;color:var(--color-gray-9)}.chroma .line{}.chroma .k{color:var(--color-purple-9)}.chroma .kc{color:var(--color-purple-9)}.chroma .kd{color:var(--color-pink-9)}.chroma .kn{color:var(--color-purple-9)}.chroma .kp{color:var(--color-purple-9)}.chroma .kr{color:var(--color-purple-9)}.chroma .kt{color:var(--color-blue-9)}.chroma .n{}.chroma .na{color:var(--color-blue-9)}.chroma .nb{color:var(--color-pink-9)}.chroma .bp{}.chroma .nc{color:var(--color-purple-9)}.chroma .no{color:var(--color-amber-9)}.chroma .nd{color:var(--color-amber-9)}.chroma .ni{}.chroma .ne{}.chroma .nf{color:var(--color-blue-9)}.chroma .fm{}.chroma .nl{color:var(--color-pink-9)}.chroma .nn{}.chroma .nx{}.chroma .py{}.chroma .nt{color:var(--color-purple-9)}.chroma .nv{color:var(--color-pink-9)}.chroma .vc{color:var(--color-pink-9)}.chroma .vg{color:var(--color-pink-9)}.chroma .vi{color:var(--color-pink-9)}.chroma .vm{}.chroma .l{}.chroma .ld{}.chroma .s{color:var(--color-teal-9)}.chroma .sa{color:var(--color-teal-9)}.chroma .sb{color:var(--color-teal-9)}.chroma .sc{color:var(--color-teal-9)}.chroma .dl{color:var(--color-teal-9)}.chroma .sd{color:var(--color-teal-9)}.chroma .s2{color:var(--color-teal-9)}.chroma .se{color:var(--color-teal-9)}.chroma .sh{color:var(--color-teal-9)}.chroma .si{color:var(--color-teal-9)}.chroma .sx{color:var(--color-teal-9)}.chroma .sr{color:var(--color-teal-9)}.chroma .s1{color:var(--color-teal-9)}.chroma .ss{color:var(--color-teal-9)}.chroma .m{color:var(--color-amber-9)}.chroma .mb{color:var(--color-amber-9)}.chroma .mf{color:var(--color-amber-9)}.chroma .mh{color:var(--color-amber-9)}.chroma .mi{color:var(--color-amber-9)}.chroma .il{color:var(--color-amber-9)}.chroma .mo{color:var(--color-amber-9)}.chroma .o{color:var(--color-purple-9)}.chroma .ow{color:var(--color-purple-9)}.chroma .p{color:var(--color-amber-9)}.chroma .c{color:var(--color-gray-9)}.chroma .ch{color:var(--color-gray-9)}.chroma .cm{color:var(--color-gray-9)}.chroma .c1{color:var(--color-gray-9)}.chroma .cs{color:var(--color-gray-9)}.chroma .cp{color:var(--color-gray-9)}.chroma .cpf{color:var(--color-gray-9)}.chroma .g{}.chroma .gd{color:var(--color-red-9)}.chroma .ge{text-decoration:underline}.chroma .gr{color:var(--color-red-9)}.chroma .gh{font-weight:700}.chroma .gi{font-weight:700;color:var(--color-green-9)}.chroma .go{color:var(--color-gray-9)}.chroma .gp{}.chroma .gs{font-style:italic}.chroma .gu{font-weight:700}.chroma .gt{}.chroma .gl{text-decoration:underline}.chroma .w{}.markdown{font-family:var(--font-sans);box-sizing:border-box;padding:2rem;font-size:16px;line-height:1.6}.markdown>:first-child{margin-top:unset!important}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:600;padding-bottom:.3rem;margin-top:1.5rem;margin-bottom:.75rem}.markdown h1,.markdown h2{border-bottom:var(--border)}.markdown table{display:block;overflow:auto;width:max-content;max-width:100%;border-spacing:0;border-collapse:collapse}.markdown table th{background:var(--color-gray-3);font-weight:600}.markdown tr:nth-child(2n){background:var(--color-gray-3)}.markdown table th,.markdown table td{padding:.5rem 1rem;border:var(--border)}.markdown blockquote{margin:unset!important;padding:0 1rem;border-left:.2rem solid var(--color-gray-7);color:var(--color-gray-7)}.markdown code,.markdown pre{background:var(--color-gray-3);border-radius:var(--border-radius)}.markdown pre{margin:.5rem 0;padding:1rem;overflow-x:auto}.markdown pre code{padding:unset}.markdown code{margin:unset!important;padding:.2em .4em;font-size:85%}