From 43d057fcdb92ae3fb0bcf53210abaf271c1b5845 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Thu, 21 Nov 2024 14:13:57 +0100 Subject: [PATCH 01/23] Simpler stack to fix #42 --- .github/workflows/deploy.yml | 8 +- .github/workflows/main.yaml | 2 +- bun.lockb | Bin 228037 -> 85194 bytes index.html | 200 ++++++++++++++++++++++- package.json | 49 ++---- postcss.config.js | 6 - src/QDL/firehose.js | 6 +- src/QDL/gpt.js | 5 +- src/QDL/qdl.js | 10 +- src/QDL/sahara.js | 6 +- src/QDL/saharaDefs.js | 2 +- src/QDL/sparse.js | 2 +- src/QDL/usblib.js | 2 +- src/app/App.test.jsx | 10 -- src/app/Flash.js | 281 ++++++++++++++++++++++++++++++++ src/app/Flash.jsx | 303 ----------------------------------- src/app/index.jsx | 160 ------------------ src/main.js | 9 ++ src/main.jsx | 14 -- src/utils/flash.js | 16 +- src/utils/image.js | 2 +- src/utils/manifest.test.js | 76 --------- tailwind.config.js | 23 --- vite.config.js | 18 --- 24 files changed, 529 insertions(+), 681 deletions(-) delete mode 100644 postcss.config.js delete mode 100644 src/app/App.test.jsx create mode 100644 src/app/Flash.js delete mode 100644 src/app/Flash.jsx delete mode 100644 src/app/index.jsx create mode 100644 src/main.js delete mode 100644 src/main.jsx delete mode 100644 src/utils/manifest.test.js delete mode 100644 tailwind.config.js delete mode 100644 vite.config.js diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 583c972..ba38a72 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,21 +19,15 @@ jobs: steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - - - run: bun install - - run: bun run build - - uses: actions/upload-pages-artifact@v3 with: - path: ./dist + path: ./ deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest - if: github.ref == 'refs/heads/master' - needs: build steps: - name: Deploy to GitHub Pages id: deployment diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 251305d..752b483 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -20,4 +20,4 @@ jobs: - run: bun install - run: bun lint - - run: bun vitest + - run: bun test diff --git a/bun.lockb b/bun.lockb index d81811e493112846c551e535e2099881facd6c2b..b0d325d66e8f9782af69cd9f6fd06aef50904b67 100755 GIT binary patch delta 18116 zcmeI4d3Y36_V=r+(~u?vA`%ip2NJ>(gainX4g{L82$3CG5|FJ4fdsRWgiX{$aADty zcrk)3BH#i#<6v;d1w~v2Miht}xPj}aKOG$rd_SiaKn8q%f4uMW{xhZDK6SqL+;h)8 zcd6>4EBk*6KX{L4b@Daq%D&k;DfCF~TjzTo;~-&S1(NN zF~p_G@po-acJqp>-!v8bqk*PX_Tao3GPkTCzo=Z(%5+U@jXnn19O<{EQ{D!5_28R_ zXxi0CpRNClE_@?f-|o@02=s#7IYrXk2K0K@Ld=&Fwd>FD3@zh5ih7|cSG8{RX zLUErzqo}wvSJPbBU4<@Af(2z-HpWt(Zu^;@UoBk9O3n_ZqyT)AblX6Kg9*Ww#lZga~@N^^;SKXx(>_rgou!JOjKBK(bn zmwvxUq43Ah8zZL`=aiS`7ggj=%bhxV28M-Y(!8d1!axF;o0p%Hhn`=SI}iU_yGSdL z-;k2Pl3;mW5>e;m1q*JZd|wl5Ao7A`Nd!M*54!kS9A()bMM@rmGtGW#vrF@nW|mcG zTFLC9`8mbYa;HaIkqtq{VE6!mNCKw^%gSfbKxyvmvi#}uwZqI7>FHLCq-WnEB|~eG zV((+7%1nNn4<9lVKhkiO?axiQOt`PnqiFxU!M|ukQWTFA0|w4)=(ZLZqPLB+dX$=A zO_jAsX?PbEq^C2AOQumpn~W|QA```P83WbI(zn5j|Aw}lUR;_~ksHj(J7PO{iU!0W z(8g+bIXuazJPXgTR&IiqvD=1Db}P@cwKCP#4&=o|O=EN_N42y3T-DN&{m>;dDM*>) z?d%sv^!Su5-$6?G(?}VbXabX-Hz5#lm;o;txF0D2uS7~9 z6-cpTahB%J$emY&F829l!P3&;d@Z{r`Inw7>1Y*vij*D>#!yn2f|P&~kurv7XjtsO zLQ0Q5LdqQ2ZwIs&DfNm|EPf%n)GI(ry-cKZtUFQyJ5|xeYM?EI^zbx2lE~k-^2zb84et&3c~glI>dOwz8hK>s#2;QeX-x4YM$El^ z`sc~RXLqZ&@nr4obwBB1EcRuF-goEI{dS&hu-!Q1I~02S=T+05+WhJF#^%_#h?R@9 zt|wy-zOwCaFTbTdazl7<}@n>V)f;yt})3_Mm$D(OH$MPfGjKJC`lWs?>}v?fl+Cv|(s&<7Bd5e>%h%AM73Ku`E2|Qt#z4#?K0PpMcE7P&b0({oZqE zolGaeWWP7Lj^mPcyfbZ$h+6se?RAXm(t!6n$W*JM8Cc+)QBk$ct3^|e<4PETfaBjt7*(?f|H0xc#Ycf zfagxg{zhzvbnijVY~v2(h{-4k(51`X0cZg<(lN#Fy&WwB&20oT{GJa)GdA{1_r|i< z^o6&woQGxyP2*e9x>DvbPPX!U-bEW^OkCX4Ro{r28_-VLlcX{L^GvMMbU zMdBgB{YVCjFJQJZP0masc<)v;>6B^ZtwobMB#Jhhu>h^8MH`1EV^hbR0}rD~|J>#P zpF)%9(8yl1hDPoDfOk4OkyJ3d`pV@(@jCU^{I(j)v3^@_$uOy_|2dB_fs1k|2@(4=E^&G4>gUrI5{$e#E13mW6| z1lj-~(8LRql@{JYllfd%#z$`yWmNYIcn7huNwX}~48OMu zO{SYQpHE^kC7`qQ)K&yMH${^fV`6f;cQDcizbf}|KL6ouP z$FwqPZ|@xn*VT*?d(SbnzD8{ObZ<;+YdW~hK^=WwlU%PvlPqe+N#@ooXjU61XZk%M zZ6xfCBho!1IU8n7Y?JPNoU`onF@AnM#8c1&O*D; zqoZioJH9*<+L=kpO84Ato=LlhILkC6h`vTP7JB2E${ESTZUbil5zS68Nqpgg#u|-c;@jaJx9Cfl5~)$Bl%9m1S2 z-cxAOJ9hdkzbA?1+1DJd1)Nz{lF6shEbsA;riGx4HYP6Z>FQ#{tYLO?Cub*!_4gB6 zf75+1J1vx1D0#J7z60%gt7S5I^t=|Fm=@B_9N$$vLphmb+Q{VoJDQzUCU@IZW4saY zt|DR7m1_tW*0)lPTFAbBO`Goc)_3}i>JcntV!H1-w&mCMH~pa@YpZWZ$7e zC%?BTH-p10jR`daO>%-|m0y22-57s&z*C=u4l$Qy5oe=KW6AXq;Y}^RBR3}81j^Xq z7Dun4$v9Z~^squLP0IS9Nm{J3*%xd2g8`#@eZc!0A^>$ze*!Emu7G@YR)v3mmRv{{4mn*cwrD>W6v;nLp^SD^*FsurV#Vt2u=5eu< z`gk`Fk#)cXOEsm`p9I8ivdv#4nMs!vh~X3<6{i9@E+@q<$1J@>8sV?X_fk!p2E+?9 z$~;6$tr?bjSt;dtcDYE=^MUxe5y&A@_ySuN+Oh~K2eQI6C`NIEQXmz|faGUBkVB;K zH;KY=v6KdHHd#xG-7U8MXHx8LrG4|bl}`!aHcK_77%a4PkmucJlr2Zwyhu46!-x3KLP`J?<2exr zlaTzcO|}cB+Wd4|mnWh8ug$deLR*&DvdorqkfGS!ij;;bk@bzy` z;a1xQhGn2#EQMNU^CHEOLP`hjwe|aKeXA|EBl%z3!G{dpE@T7b(@2l(1p7Ft3-Kya zB7GYv4v!+G2gi|eTuw?+EgvG^v*r7?`~WF);$x)v`y43&$RWBw=AUWQ2H76Saj}#D z{vTdn7==ftsH%W#un~PMTz$id?$%U~-mbC60f>#gAv~J;QiyrS!`09Xh`O4p&VWd) z4OeF&TwZm&tt-noR$E{7Omq#=!!$Lh4+e|h3s<}PP$OJZzY3A|ez=<07owr29_kBm z8X~+O#8sLa-w$H_2jS{jA+FX`z5WoHABL;K{t%IxdP<02Ad=cZL}{wgwGcZ$3RknQ zg=ng&7lp_^5w2PffM}+v(g6^mCvh4@ps~suO`vqlI2*hcKT|*!`lP@9GpC(^JA-a&Sp%9s0kgs77 z-N@H4*H}GOQ-2ldCtbra*!d;t8jeAC(j`RpSK%sl1Vp-~W{$wJCs`8NOH(l;kpYq< zvbUxVip(G<*CYFA>L#SCuW{R%EWICz5w^dkt{H{Amb{1@ps8AHMLe`7VW1Xvq`S#<22QGEOCri$9>egL3NHrOi)Wi zOjIXDOj6yOBPOdgBBrP>5PFcoprSriQ$L8zVJxzUt`r%!$Tyzf4^h$+XJ+JzU)~0fX5Lj~M&{ku(uvF5@%NHMVM}D_ngb#C(Qkl54EW zcEPNe1has_5hhfJ=`|VV7P37VX0I^c2vb2~r@-X7VKz>Ixs8+x6CDCGGzhbZ90g$x z2y<4LJIK;hn0X$UT~lH1B2B_1)`6Lr1G9uY<-i;hCVU#qG7>cnW^rAZXN6forgCA@ zLSYJXVOEhUVNMGZI~`^Xxtb2M-V5`lFb2t*0h3t|=9U>SRb)q)UxZ1@gHfa>4`yc= z%m>2ULw@pMvg^aF$cMR?{0I{o4%2HU%trDv6K1b4-w3mb{M-nW*8pbYjWAotk1){< zVTKmK+)sWAU=9d#R+tCKPa({_2$)@kFgwVPFo{>eOe}(Vko*+E91|wI80KN}Qw+1X z5zMo~>>@uUFlkrA6qdj|N`7E!PG9Ycbg9@`uE8oZlET@Xx%Q}Ff-6h?0%5#!Y_O}w zh(DgCb~d5>P0IBrNn9!JvZG*bDTR5O#0e7`4U<#`^DK!ggV`(02f{p0;>uz2n!>Co zhk1d-2@@Ry(`z=&OC)YK%mHD(5oSM$n*%ei8O+8xFt3t0VG?~XL+8T0M&jne924fO zFt3xic`%D(VRp@fd6UEmlhzz&;(S*>V^pg|V>M6UPCV`k_56*iShxy4=<0WoUi1BC zR=8<2VGl+}_{!Np$Rn;A{>!n7R&S$d08b{oilS9w9-bCy{R?$pWJFD$=UqR$YQEd$ z8m&8@TU~Kh?YQS%p-mR1TK`}!Ux%E3g?}kkeY@FptGM%+|G-|eWuvQ^UNhu1*O!+# zyV&vnopbfwR@b#**>4gLMZ?wdK0#}#Y9S|HChR)Ce@POt1-^U*|vhCf!Dzs;4oM~xjdIS0^R}dy7=A9F38Zsd~obN zX3c5Iiuvq9W{k`nj7?o8NH`b{27=xo0rUbrK_X}kd>|SO0C|Aj!<>0xNH3@ht^;j> zERcR63N!=hGAkQ#B7->|B!diaEszw+00)5wga9|l0Cj+HQZ99KfY^zR_>tfxaA{bA zm*B1i(s%}t&R89x|3qOnEIpDaTZ2|00ki-Twe(UVjsenJ2}H6ZJ&_(uC!8LKaxT5D z2O5H_Km=$2q)vSxyyy*SUw&dGKZlav`N*%B%)KNY83$T|Hb4Tn2DAh1K?jfoI)WY` z4RivXfghxTZa{+T0#ZO%`&?vq5C9c@`RD^OfSmUSQXr6V&IH525HJV~21CL1U<4Qm zMuE{lGC2-pgRvkB$S!pQm;k1LNnkRV3K*ISGeQ|J8K>Sr((j~RQY}4@lI>hPadL=!O@{1~+uOplU z?Ub+NT!u5vS|Dj;@FnR8wMw?cC1IFa#@b0=Eqwe+CM=EZ?HR=~;Ddd{U0$Enym z4GQN3CcdPu%#AHT%0!fWLtn;P?|i&bgI( zQ?EEbF3(}`43L$u_Y&i0(Vd<;J#Ye($#$`0>6t85ncWh&EYXXX=VtVMKvvpH8GkX7 zp1lC1SC=|-oV-YxtbIxQK_J8N8aM!C?#Ozs0+rw;PzYWHuYmpFWgx!ApZJjTqG5dW zv=ygk(gW%7#erO^i;ZMJ_|wPu;5bpwrJf(Fw^sLM=`r0Jz+6oycoq>p#`{)HDWwl9zC z^mD!CPpr~ilR77NP3|QBmZ9du8KgwI7dpWB&tKc1i9et@9yEgC}|}(S1!DQMB>b zrY#1)aCJgmN;)T-al3W3oVq^eXYaj+mCTR5=9Q@aUM^ zK6=FT(J8qzGgr4>_81$JdAP;*kCRcnn9jh59{8$=D}uOk zZ~bC!>9~_Ss7X}P_fVHwjYaB};!4x59FLWsA-X*#>hslll)7QD9{VR58c8JeiR9jU zT0J+^*zqHg_^k}lhuw?y>AEu-R@PITkybY^(PMO1h+4lyPthBNs5fLt2DsGcqUXC* z%u;=bUZ$(OrResc>-J=HhSqn5sYi0{si!v&QO%c;kSk9?=iM3SSJQN%n>7scJ?dNP zs+r657~dj~_1p8k8Jpf3tUdFSIa(=_^9>%gd6}N#b6&cc_vBB0Pmk*!wnrtE3$NwK zXTF9*w$koSS{MIPBS!qzPSz^3E%fbmRnO%l;%_2Zg`Eo_~Fg{&0jxAVHq3yso$ znmlCf>y&g#PT_xbmeKIgw}^06e+6+g3s-Gc=tF$Ydo~?+1onM?$JATQ8q8WQ5)IVK z6?&yUxS@(z$oQ(GvNt;#-`$eC$bMzbrD%22D!oyw4p&>RLpbl&1YeBbKX83h8IZ1+6ABI=TSd^e zR3ER>W1^imZJgh->#me!7PF=v$YO;; z*F;6HreBMr)RYCRMduBh!`TlVy6(qKpE0J4i|km;{2{Bca9*u(eh`mOS*-**Jz7<+ zCRc}>s!wOry7My4vT5u7@=Wb(A4!azlDm2pJNx8aSunIszWGUqgqJ6o77S{48G>iT!g+yW^m{iY zw)dq?*Ijj6SbLYflzpwxWgq`}=hPv$A8%1<`skdT#&?+(Dqzs({#eKiZy!}+Oc*u) zTRTGXH?oB)HS}xr8(OIQ3_VWIYoYd0L%*$ss)et&o|=i&Y!as$tfQ}O2o zSHokTfgfC`@irxqlpIR^+BNL;$UzrMPRFSa#n;(5l~Ijs7_YwDgp7_?9jfSQ+j#4> zkp>xef7xuosBCK5`+E0yHAO5kv5+g$q+usUeK9hzkLkN}GJDMAcolIkz6#>iZY=eM z_qHg%>~hGhklW%_oHV#AUUj;g$+0(HJ+c#hf4sW&ZrmTiy3(AvMp$->p!uYN_IA#pk@k^w2xm552PNu{-U!I(N|$TdHAV znS$Jg%xI|sn~{TCstxeI?3UImGYJ&~+WpVhagEKI-DE}=wN!_&NOj(4T5$jHLBZW` zJ73ybs^*MV>iKu4+MJ62aCLQpU6_;a25MOZp5wnDSp__KmJgVF%Yu@%TDyPA_?Ke!a`e3$V4N|mkGJ_)X|LaG4 zZE3t`Orq_J-PxHxs+D@~9&&08Z={D^)vDal!z!^$FF&}Qki8gAAOsq>Iv1+EApLk9S&Mb9wyPkUaUS{c;w(5jTVU}2@`xyY< zlrv|e*8RshTL&&%a3Q^RYEqqd?;=;ui$8b#%?~eFIB(m18QksZRlfZlyM&Na+Nqm2 z;N5vY&pl@D($DYq{mZss<7QGnCKk>ceVgy8m)hdV<^QxTNSM`rq=&h%HbI@kSa+ly zyrW;K69j^#%m8Om{>d705|f&seD}#XU)YQOmmdE2ZDA?0wKBCRfH5CKtR+Dra1reOz~Dq&=n7`?fJjFr7HPb7uIGj_SltiY_zxKkcZR zKR^@CZtH}?wbb!qw{m_LbfU6M|7;(1EQxpDt_$O%4&Kkrsq^M#c#~hof4BUE+?L5! z#ay->JA-n*yUuoOUmERnM0$wT>8X<$r)8@Tk+P+b_7M*ggx%xR%U(Cko1jyy7P-9p z2HZC1^fA4~g-I}~ohp!QISa>W4*jVIxWZVGUp$cdNA^YN(oX%6zg!jHtSesNopvr7 zC98W)Lb^yUGIkK86k4RY0T+323Y`d@aku8_`Bim(tyq3j>V-1BsjI0@MxhAD3FRerYGKRPONBt*1FmTYIRt9^y*syn38EZz4YDZDZ}wh?ma}{NxjRZL#Vv z+N3TWJZH!3{2%MwzGL*g$b+gz4Eurp&;PwomU5%JAaA(QQ3$fNW2^|^_wvcCGqfTMN^9deT6 z%mZgHa;BE8t8@IcS633F+3AXU<k(yn>ahd*Ky}r0 zcdV-J?!HR>^8o)6ez>K(d|+XIQGQ{tJSQ*1`dcI&XO2oja(eHE{P= zkIi@2tvS)o&Eu-)boYXqhV9*BbyYdk9iqn9aW_%-=J3F7@xX^^BT5$?kuJ zc&FwUbu|A&1yz`tFL#d!(H7`VbZ6hvhw)_ zxn=5fSNC=`{16XL4`1beQmyFbUZWN@b*HI)t=x4~t5o+6HKMLNOl_{?KK_R;mX!y~ z)%?2dGc^ZO-M@xb9d##GJ?Cz!qE740RKzfMsH*F7_o(@(w|nJPVG^MIiwfl$!$92l zyB?vcN4g_w?)Y8rPMjm%Et?h;7nkKGSDoDITK|6lZ?3+@ literal 228037 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 uwMNk_i6|cq8D20Af1!XrJ(5 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%0AKI8)T}dvG7Xm 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 flash.comma.ai + + + + -
- +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 872354ffff27f2961751d7404877092626b364bc Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Fri, 22 Nov 2024 19:06:25 +0100 Subject: [PATCH 06/23] cat tailwindcss into static css --- index.html | 19 +- src/index.css | 1149 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 1147 insertions(+), 21 deletions(-) diff --git a/index.html b/index.html index fa64da8..0357b58 100644 --- a/index.html +++ b/index.html @@ -11,24 +11,7 @@ flash.comma.ai - - +
diff --git a/src/index.css b/src/index.css index b5c61c9..59e8223 100644 --- a/src/index.css +++ b/src/index.css @@ -1,3 +1,1146 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +*, +::before, +::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: +} + +/* ! tailwindcss v3.4.15 | MIT License | https://tailwindcss.com */ +*, +::after, +::before { + box-sizing: border-box; + border-width: 0; + border-style: solid; + border-color: #e5e7eb +} + +::after, +::before { + --tw-content: '' +} + +:host, +html { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + -moz-tab-size: 4; + tab-size: 4; + font-family: Inter Variable, sans-serif; + font-feature-settings: normal; + font-variation-settings: normal; + -webkit-tap-highlight-color: transparent +} + +body { + margin: 0; + line-height: inherit +} + +hr { + height: 0; + color: inherit; + border-top-width: 1px +} + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit +} + +a { + color: inherit; + text-decoration: inherit +} + +b, +strong { + font-weight: bolder +} + +code, +kbd, +pre, +samp { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-feature-settings: normal; + font-variation-settings: normal; + font-size: 1em +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sub { + bottom: -.25em +} + +sup { + top: -.5em +} + +table { + text-indent: 0; + border-color: inherit; + border-collapse: collapse +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + font-size: 100%; + font-weight: inherit; + line-height: inherit; + letter-spacing: inherit; + color: inherit; + margin: 0; + padding: 0 +} + +button, +select { + text-transform: none +} + +button, +input:where([type=button]), +input:where([type=reset]), +input:where([type=submit]) { + -webkit-appearance: button; + background-color: transparent; + background-image: none +} + +:-moz-focusring { + outline: auto +} + +:-moz-ui-invalid { + box-shadow: none +} + +progress { + vertical-align: baseline +} + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px +} + +::-webkit-search-decoration { + -webkit-appearance: none +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit +} + +summary { + display: list-item +} + +blockquote, +dd, +dl, +figure, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +p, +pre { + margin: 0 +} + +fieldset { + margin: 0; + padding: 0 +} + +legend { + padding: 0 +} + +menu, +ol, +ul { + list-style: none; + margin: 0; + padding: 0 +} + +dialog { + padding: 0 +} + +textarea { + resize: vertical +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + color: #9ca3af +} + +[role=button], +button { + cursor: pointer +} + +:disabled { + cursor: default +} + +audio, +canvas, +embed, +iframe, +img, +object, +svg, +video { + display: block; + vertical-align: middle +} + +img, +video { + max-width: 100%; + height: auto +} + +[hidden]:where(:not([hidden=until-found])) { + display: none +} + +.prose { + color: var(--tw-prose-body); + max-width: 65ch; +} + +.prose :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em +} + +.prose :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-lead); + font-size: 1.25em; + line-height: 1.6; + margin-top: 1.2em; + margin-bottom: 1.2em +} + +.prose :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-links); + text-decoration: underline; + font-weight: 500 +} + +.prose :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-bold); + font-weight: 600 +} + +.prose :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: decimal; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em +} + +.prose :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-alpha +} + +.prose :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-alpha +} + +.prose :where(ol[type="A" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-alpha +} + +.prose :where(ol[type="a" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-alpha +} + +.prose :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-roman +} + +.prose :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-roman +} + +.prose :where(ol[type="I" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-roman +} + +.prose :where(ol[type="i" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-roman +} + +.prose :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: decimal +} + +.prose :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: disc; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em +} + +.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { + font-weight: 400; + color: var(--tw-prose-counters) +} + +.prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { + color: var(--tw-prose-bullets) +} + +.prose :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.25em +} + +.prose :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-color: var(--tw-prose-hr); + border-top-width: 1px; + margin-top: 3em; + margin-bottom: 3em +} + +.prose :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 500; + font-style: italic; + color: var(--tw-prose-quotes); + border-inline-start-width: 0.25rem; + border-inline-start-color: var(--tw-prose-quote-borders); + quotes: "\201C" "\201D" "\2018" "\2019"; + margin-top: 1.6em; + margin-bottom: 1.6em; + padding-inline-start: 1em +} + +.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: open-quote +} + +.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: close-quote +} + +.prose :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 800; + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111 +} + +.prose :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 900; + color: inherit +} + +.prose :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 700; + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333 +} + +.prose :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 800; + color: inherit +} + +.prose :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6 +} + +.prose :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 700; + color: inherit +} + +.prose :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5 +} + +.prose :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 700; + color: inherit +} + +.prose :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em +} + +.prose :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + display: block; + margin-top: 2em; + margin-bottom: 2em +} + +.prose :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em +} + +.prose :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 500; + font-family: inherit; + color: var(--tw-prose-kbd); + box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%); + font-size: 0.875em; + border-radius: 0.3125rem; + padding-top: 0.1875em; + padding-inline-end: 0.375em; + padding-bottom: 0.1875em; + padding-inline-start: 0.375em +} + +.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-code); + font-weight: 600; + font-size: 0.875em +} + +.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: "`" +} + +.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: "`" +} + +.prose :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + font-size: 0.875em +} + +.prose :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + font-size: 0.9em +} + +.prose :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit +} + +.prose :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-pre-code); + background-color: var(--tw-prose-pre-bg); + overflow-x: auto; + font-weight: 400; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding-top: 0.8571429em; + padding-inline-end: 1.1428571em; + padding-bottom: 0.8571429em; + padding-inline-start: 1.1428571em +} + +.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + background-color: transparent; + border-width: 0; + border-radius: 0; + padding: 0; + font-weight: inherit; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit +} + +.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: none +} + +.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: none +} + +.prose :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + width: 100%; + table-layout: auto; + margin-top: 2em; + margin-bottom: 2em; + font-size: 0.875em; + line-height: 1.7142857 +} + +.prose :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-th-borders) +} + +.prose :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + vertical-align: bottom; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em +} + +.prose :where(tbody tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-td-borders) +} + +.prose :where(tbody tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 0 +} + +.prose :where(tbody td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + vertical-align: baseline +} + +.prose :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-top-width: 1px; + border-top-color: var(--tw-prose-th-borders) +} + +.prose :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + vertical-align: top +} + +.prose :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + text-align: start +} + +.prose :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0 +} + +.prose :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-captions); + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em +} + +.prose { + --tw-prose-body: #374151; + --tw-prose-headings: #111827; + --tw-prose-lead: #4b5563; + --tw-prose-links: #111827; + --tw-prose-bold: #111827; + --tw-prose-counters: #6b7280; + --tw-prose-bullets: #d1d5db; + --tw-prose-hr: #e5e7eb; + --tw-prose-quotes: #111827; + --tw-prose-quote-borders: #e5e7eb; + --tw-prose-captions: #6b7280; + --tw-prose-kbd: #111827; + --tw-prose-kbd-shadows: 17 24 39; + --tw-prose-code: #111827; + --tw-prose-pre-code: #e5e7eb; + --tw-prose-pre-bg: #1f2937; + --tw-prose-th-borders: #d1d5db; + --tw-prose-td-borders: #e5e7eb; + --tw-prose-invert-body: #d1d5db; + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: #9ca3af; + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: #9ca3af; + --tw-prose-invert-bullets: #4b5563; + --tw-prose-invert-hr: #374151; + --tw-prose-invert-quotes: #f3f4f6; + --tw-prose-invert-quote-borders: #374151; + --tw-prose-invert-captions: #9ca3af; + --tw-prose-invert-kbd: #fff; + --tw-prose-invert-kbd-shadows: 255 255 255; + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: #d1d5db; + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: #4b5563; + --tw-prose-invert-td-borders: #374151; + font-size: 1rem; + line-height: 1.75 +} + +.prose :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0 +} + +.prose :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.5em; + margin-bottom: 0.5em +} + +.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0.375em +} + +.prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0.375em +} + +.prose :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em +} + +.prose :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em +} + +.prose :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 1.25em +} + +.prose :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em +} + +.prose :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 1.25em +} + +.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em +} + +.prose :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em +} + +.prose :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.5em; + padding-inline-start: 1.625em +} + +.prose :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0 +} + +.prose :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0 +} + +.prose :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0 +} + +.prose :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0 +} + +.prose :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0 +} + +.prose :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-end: 0 +} + +.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-top: 0.5714286em; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em +} + +.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0 +} + +.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-end: 0 +} + +.prose :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em +} + +.prose :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0 +} + +.prose :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 0 +} + +.prose-green { + --tw-prose-links: #16a34a; + --tw-prose-invert-links: #22c55e +} + +.absolute { + position: absolute +} + +.relative { + position: relative +} + +.bottom-0 { + bottom: 0px +} + +.left-0 { + left: 0px +} + +.top-0 { + top: 0px +} + +.flex { + display: flex +} + +.hidden { + display: none +} + +.h-\[700px\] { + height: 700px +} + +.h-auto { + height: auto +} + +.h-2 { + height: 0.5rem +} + +.h-full { + height: 100% +} + +.w-screen { + width: 100vw +} + +.w-full { + width: 100% +} + +.max-w-none { + max-width: none +} + +.max-w-3xl { + max-width: 48rem +} + +.max-w-xl { + max-width: 36rem +} + +@keyframes pulse { + 50% { + opacity: .5 + } +} + +.animate-pulse { + animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite +} + +.flex-col { + flex-direction: column +} + +.flex-wrap { + flex-wrap: wrap +} + +.items-center { + align-items: center +} + +.justify-center { + justify-content: center +} + +.gap-8 { + gap: 2rem +} + +.overflow-hidden { + overflow: hidden +} + +.rounded-full { + border-radius: 9999px +} + +.bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)) +} + +.bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)) +} + +.bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)) +} + +.bg-gray-400 { + --tw-bg-opacity: 1; + background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)) +} + +.bg-\[\#51ff00\] { + --tw-bg-opacity: 1; + background-color: rgb(81 255 0 / var(--tw-bg-opacity, 1)) +} + +.p-12 { + padding: 3rem +} + +.p-8 { + padding: 2rem +} + +.px-8 { + padding-left: 2rem; + padding-right: 2rem +} + +.font-mono { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem +} + +.font-light { + font-weight: 300 +} + +.text-black { + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity, 1)) +} + +.invert { + --tw-invert: invert(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) +} + +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms +} + +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms +} + +.duration-300 { + transition-duration: 300ms +} + +@media (prefers-color-scheme: dark) { + .dark\:prose-invert { + --tw-prose-body: var(--tw-prose-invert-body); + --tw-prose-headings: var(--tw-prose-invert-headings); + --tw-prose-lead: var(--tw-prose-invert-lead); + --tw-prose-links: var(--tw-prose-invert-links); + --tw-prose-bold: var(--tw-prose-invert-bold); + --tw-prose-counters: var(--tw-prose-invert-counters); + --tw-prose-bullets: var(--tw-prose-invert-bullets); + --tw-prose-hr: var(--tw-prose-invert-hr); + --tw-prose-quotes: var(--tw-prose-invert-quotes); + --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders); + --tw-prose-captions: var(--tw-prose-invert-captions); + --tw-prose-kbd: var(--tw-prose-invert-kbd); + --tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows); + --tw-prose-code: var(--tw-prose-invert-code); + --tw-prose-pre-code: var(--tw-prose-invert-pre-code); + --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg); + --tw-prose-th-borders: var(--tw-prose-invert-th-borders); + --tw-prose-td-borders: var(--tw-prose-invert-td-borders) + } +} + +@media (min-width: 768px) { + .md\:p-16 { + padding: 4rem + } +} + +@media (min-width: 1024px) { + .lg\:block { + display: block + } + + .lg\:hidden { + display: none + } + + .lg\:h-screen { + height: 100vh + } + + .lg\:w-auto { + width: auto + } + + .lg\:max-w-prose { + max-width: 65ch + } + + .lg\:flex-1 { + flex: 1 1 0% + } + + .lg\:flex-row { + flex-direction: row + } + + .lg\:overflow-y-auto { + overflow-y: auto + } + + .lg\:p-20 { + padding: 5rem + } +} + +@media (min-width: 1280px) { + .xl\:p-24 { + padding: 6rem + } +} + +@media (prefers-color-scheme: dark) { + .dark\:bg-gray-800 { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1)) + } + + .dark\:bg-gray-900 { + --tw-bg-opacity: 1; + background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1)) + } + + .dark\:bg-gray-700 { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)) + } + + .dark\:text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)) + } + + .dark\:invert { + --tw-invert: invert(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) + } +} From 98033a48e80f5b5a8312bf30f8e1ea33f73eb3c7 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Fri, 22 Nov 2024 19:09:53 +0100 Subject: [PATCH 07/23] Drop build step --- .github/workflows/deploy.yml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ba38a72..d055afb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,21 +14,16 @@ concurrency: cancel-in-progress: false jobs: - build: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest + timeout-minutes: 1 steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - uses: actions/upload-pages-artifact@v3 with: path: ./ - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 + - uses: actions/deploy-pages@v4 From e9887385336b25311f6cbc831a276ceb16802a86 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Fri, 22 Nov 2024 19:16:46 +0100 Subject: [PATCH 08/23] Restore build task --- .github/workflows/deploy.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d055afb..ba38a72 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,16 +14,21 @@ concurrency: cancel-in-progress: false jobs: - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} + build: runs-on: ubuntu-latest - timeout-minutes: 1 steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - uses: actions/upload-pages-artifact@v3 with: path: ./ - - uses: actions/deploy-pages@v4 + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From 91fe73a9ff6608fad46aff42a867328ddb65cab9 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Fri, 22 Nov 2024 19:19:22 +0100 Subject: [PATCH 09/23] Switch to actions/upload-pages-artifact@v4 --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ba38a72..e0978ee 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - - uses: actions/upload-pages-artifact@v3 + - uses: actions/upload-pages-artifact@v4 with: path: ./ From 0cd5d776f7783181c50858ddaf62968dd8156a38 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Fri, 22 Nov 2024 20:30:28 +0100 Subject: [PATCH 10/23] update deploy task --- .github/workflows/deploy.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e0978ee..7af76cf 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,21 +14,20 @@ concurrency: cancel-in-progress: false jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v1 - - uses: actions/upload-pages-artifact@v4 - with: - path: ./ - deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Configure Pages + uses: actions/configure-pages@v3 + - name: Upload Pages Artifact + uses: actions/upload-pages-artifact@v2 + with: + path: '.' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v2 From d43f51c4e62f8452c30f06de412067fa4fd2578b Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Fri, 22 Nov 2024 20:36:52 +0100 Subject: [PATCH 11/23] Fix missing tailwindcss styles --- index.html | 2 +- src/{index.css => tailwindcss.css} | 54 +++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) rename src/{index.css => tailwindcss.css} (95%) diff --git a/index.html b/index.html index 0357b58..32b1225 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ flash.comma.ai - +
diff --git a/src/index.css b/src/tailwindcss.css similarity index 95% rename from src/index.css rename to src/tailwindcss.css index 59e8223..ef8420e 100644 --- a/src/index.css +++ b/src/tailwindcss.css @@ -963,6 +963,10 @@ video { border-radius: 9999px } +.rounded-md { + border-radius: 0.375rem +} + .bg-gray-100 { --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)) @@ -988,6 +992,16 @@ video { background-color: rgb(81 255 0 / var(--tw-bg-opacity, 1)) } +.bg-yellow-500 { + --tw-bg-opacity: 1; + background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1)) +} + +.bg-red-500 { + --tw-bg-opacity: 1; + background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)) +} + .p-12 { padding: 3rem } @@ -1001,6 +1015,16 @@ video { padding-right: 2rem } +.px-4 { + padding-left: 1rem; + padding-right: 1rem +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem +} + .font-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace } @@ -1024,6 +1048,11 @@ video { color: rgb(0 0 0 / var(--tw-text-opacity, 1)) } +.text-gray-800 { + --tw-text-opacity: 1; + color: rgb(31 41 55 / var(--tw-text-opacity, 1)) +} + .invert { --tw-invert: invert(100%); filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) @@ -1041,6 +1070,14 @@ video { transition-duration: 150ms } +.transition-colors { + transition-property: color, background-color, border-color, fill, stroke, -webkit-text-decoration-color; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms +} + .duration-300 { transition-duration: 300ms } @@ -1068,6 +1105,11 @@ video { } } +.hover\:bg-gray-300:hover { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)) +} + @media (min-width: 768px) { .md\:p-16 { padding: 4rem @@ -1139,8 +1181,18 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity, 1)) } + .dark\:text-gray-200 { + --tw-text-opacity: 1; + color: rgb(229 231 235 / var(--tw-text-opacity, 1)) + } + .dark\:invert { --tw-invert: invert(100%); filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) } -} + + .dark\:hover\:bg-gray-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)) + } +} \ No newline at end of file From 7f37a54f9b017616f606ccab14e5c7b9464816cb Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sat, 23 Nov 2024 11:31:27 +0100 Subject: [PATCH 12/23] Restore eslint; biome is a separated topic --- .eslintrc.json | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 4396 -> 90679 bytes package.json | 25 ++++++++++++++----------- 3 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..dc9027b --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,48 @@ +{ + "root": true, + "env": { + "browser": true, + "es2020": true, + "node": true + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:react/jsx-runtime", + "plugin:react-hooks/recommended" + ], + "ignorePatterns": [ + "node_modules", + "dist", + ".eslintrc.cjs" + ], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "settings": { + "react": { + "version": "detect" + } + }, + "plugins": [ + "react-refresh" + ], + "rules": { + "no-constant-condition": [ + "error", + { + "checkLoops": false + } + ], + "no-inner-declarations": "off", + "react/jsx-no-target-blank": "off", + "react/prop-types": "off", + "react-refresh/only-export-components": [ + "warn", + { + "allowConstantExport": true + } + ] + } +} diff --git a/bun.lockb b/bun.lockb index 27470d751e08b2a7e483c2ff9f3203887676d21b..5a38d44bc84c94c38bf9272afe2021ba16e5a4c1 100755 GIT binary patch literal 90679 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

SUw!XPUmkY;G3ZQ?=*ih`?uadZuh$T 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 B{C)rc literal 4396 zcmY#Z)GsYA(of3F(@)JSQ%EY!;{sycoc!eMw9K4T-L(9o+{6;yG6OCq1_lO>XCk|p z4mq4yUpVFMteYaU+lAyfw+1RZ$-aE~tibj9;W+|8ML@s>p%^&O=msc138nzd=VM@K z0AdCZ&CbZcAPc150Qu5D`ZAD~1k$^Kv;>e|45fR3v^bDo2BgJ+bOMyNwA_7k+K=f| z7tP68QFvHwU1+~U(>kw5%DZNzO1MwSI=pv{hrLX=#r%tAo1ONb`xIxdyOJa8mfU;( z&(o*L+nryq=9ZZ0!Eb&SpZ+w?exl6G1auBX02FE5mi_B?a@`N(lsJ}seu>{+rZZe2m!DqWDq%3&NdBsNmq&vB?`#>S&|Ru>{svK2 z;#RBD*YPjjAEWW$RDJycrbMO{VD~a`fXoF(GaRrqcqIKZX>6Ul>@~;L=d}{2&(Ako zxW|TLxp9@~8=b!2%gs4FN?&+vo}HT~8*LOK$oNu-=flJk(-*KMX#a9vV(SMsmj&oz z)bfHQCm_c*>+C*vuQeBDRB+WD>us+*+-AeGH(I%f{l}?!<#U@YE20~3f1PZcaP9ub z%S=+KvYxA-CR9wk93qt{S5pi%w*hD_E8Mj}JGO;A)bpPfJ9ELICawcT>;hsThb5Q3 z-QwBgD}L+nCsWx=-^*p))=l3PAnD3f`X-D`+H`rf`-8OwUd!U1J~(eJ2Q?QI4s6Kg z)=Uz+{OHCm^W-2V&)w{6>>HI8BA%FGzrMD!OV=<|Apmexo`dClDa&`i7I=;!-sP;(oAX2NPJknt=Z z`wEOiJ#3fGdu3xL|7fXDo`L=M--5Y+uDf~9u*??l*{Ss*C;uXo;P3qtjy69&r_}q! z=2wx@C61n^_X$@W^maha1%(4FpMuSuD$u$AYtr4wf|=W^v|kBaSm7;mz-YsL)wqU^ zx8?2A#b)*STJ7GrFX&*9wXZMJxum40T{FXyXDM%1ckY~#&2tE7E;ay4%SoB}xv4-} z28e-nHUOz%1#ozMSov{ydS(T*t+xkCbJ-LZCF^D86_+ID3R8S@V4T={}2EQCs4k60hQt5hJ+lKO{uYw9Z(|+1Lj^{oriq0c>f}=vOB)tkQpPZAao0FMWTA^EEW`ZJGo|$KCgdv)eSOk>75QZ3$Sd@#^5KM8X zF_;o?x9H}U7U!Ti2+0nxBr)Dccn@q9SRXJnun8jqhcttM;f84}OptU#kwXURQe+|0 z4TQua*!xiPkVHr~4k;F}1SC9x5gUex^n~hJPymu_7(B_Mc$6%o;OP*>lPE?(a`E6J E0ng4!OaK4? diff --git a/package.json b/package.json index c23d1f4..16735ec 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,22 @@ { "name": "@commaai/flash", "version": "0.1.0", - "devDependencies": { - "@biomejs/biome": "^1.9.4" - }, - "engines": { - "node": ">=20.11.0" - }, "private": true, + "type": "module", "scripts": { - "dev": "python3 -m http.server 5173", - "build": "echo \"Error: no build specified\" && exit 0", + "dev": "vite", "start": "python3 -m http.server 5173", - "lint": "biome lint ./src", - "test": "echo \"Error: no test confugured\" && exit 0" + "lint": "eslint . --ext js,jsx --report-unused-disable-directives", + "test": "vitest" }, - "type": "module" + "engines": { + "node": ">=20.11.0" + }, + "dependencies": {}, + "devDependencies": { + "eslint": "^8.57.0", + "eslint-plugin-react": "^7.34.2", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7" + } } From b79cc68b22ee0f479bc45f67f0c36b233eb891d9 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sat, 23 Nov 2024 11:46:10 +0100 Subject: [PATCH 13/23] use actions/deploy-pages@v4 --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7af76cf..315cf46 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -30,4 +30,4 @@ jobs: path: '.' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 From fc2ed1477d96d2e38c964cbadb57fc3dd11c8ae9 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sat, 23 Nov 2024 11:49:09 +0100 Subject: [PATCH 14/23] use actions/deploy-pages@v2 --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 315cf46..7af76cf 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -30,4 +30,4 @@ jobs: path: '.' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v2 From 57df9f26d1753b9ccdacec832f1e8bf851fc8464 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sat, 23 Nov 2024 11:52:44 +0100 Subject: [PATCH 15/23] use actions/upload-artifact@v4 --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7af76cf..289daa3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,9 +25,9 @@ jobs: - name: Configure Pages uses: actions/configure-pages@v3 - name: Upload Pages Artifact - uses: actions/upload-pages-artifact@v2 + uses: actions/upload-artifact@v2 with: path: '.' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 From 7c805990cd427eeabf59cacc148228f3df453757 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sat, 23 Nov 2024 11:52:50 +0100 Subject: [PATCH 16/23] use actions/upload-artifact@v4 --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 289daa3..94b97cb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,7 +25,7 @@ jobs: - name: Configure Pages uses: actions/configure-pages@v3 - name: Upload Pages Artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: path: '.' - name: Deploy to GitHub Pages From 8d85a49f987d079d7320cae61626f8df9a3679b2 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sat, 23 Nov 2024 11:58:51 +0100 Subject: [PATCH 17/23] upload-pages-artifact@v3 --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 94b97cb..2787f82 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,7 +25,7 @@ jobs: - name: Configure Pages uses: actions/configure-pages@v3 - name: Upload Pages Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-pages-artifact@v3 with: path: '.' - name: Deploy to GitHub Pages From b681ce13cea1cdc456a14d6e5a0120929c656130 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Mon, 25 Nov 2024 14:48:16 +0100 Subject: [PATCH 18/23] Use smaller preact instead of react --- .eslintrc.json | 18 ++-------- .github/workflows/deploy.yml | 11 +++--- bun.lockb | Bin 90679 -> 45450 bytes index.html | 10 +++--- package.json | 11 +++--- src/app/Flash.js | 64 +++++++++++++++++------------------ src/main.js | 15 ++++---- src/utils/flash.js | 2 +- src/utils/image.js | 2 +- 9 files changed, 59 insertions(+), 74 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index dc9027b..8405abb 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,10 +6,7 @@ "node": true }, "extends": [ - "eslint:recommended", - "plugin:react/recommended", - "plugin:react/jsx-runtime", - "plugin:react-hooks/recommended" + "eslint:recommended" ], "ignorePatterns": [ "node_modules", @@ -25,9 +22,6 @@ "version": "detect" } }, - "plugins": [ - "react-refresh" - ], "rules": { "no-constant-condition": [ "error", @@ -35,14 +29,6 @@ "checkLoops": false } ], - "no-inner-declarations": "off", - "react/jsx-no-target-blank": "off", - "react/prop-types": "off", - "react-refresh/only-export-components": [ - "warn", - { - "allowConstantExport": true - } - ] + "no-inner-declarations": "off" } } diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2787f82..ccddba3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -20,12 +20,11 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Configure Pages - uses: actions/configure-pages@v3 - - name: Upload Pages Artifact - uses: actions/upload-pages-artifact@v3 + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v1 + - run: bun install + - uses: actions/configure-pages@v3 + - uses: actions/upload-pages-artifact@v3 with: path: '.' - name: Deploy to GitHub Pages diff --git a/bun.lockb b/bun.lockb index 5a38d44bc84c94c38bf9272afe2021ba16e5a4c1..7123a835ef90efb10a4b7a240b351a1fc8f20be6 100755 GIT binary patch delta 8382 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

SUw!XPUmkY;G3ZQ?=*ih`?uadZuh$T z_xQ5_|NnCT_zC#%`4jPvGMCY&kBK1f=6~ITY zUpw_5_p}i66aqb68{8t{K))8>i>#|)Fb`a#Q*vH{NJ2^Q@}SyT|Xp< zgFhhRzXkoYeEK63wp+@11Y0zSNc5#CPkA0*)6M-9t|8t^%I zJBGw>0QgA$A#bPoyZLW?WE_8r0rCGG@X`Ahq<*`64RG-vN9B*`Peg1x;->)c(ffyO z(*JS&Oanf8|F%>AN(cYB|9~+OZ!-WS{xrZx$G_9_HwgI1{DOUUv(f1ETcf0<(0bd#Tht~~^f2a2^TJX{yxqjfav(xx303R7YjCrU0+kg+( ze`MS{<$nWwMQr|||D9fcQeg82=MUm{r}v*wz=!!q{O)xB)e89N_;-5$Czkow{3CgU zx%fLn`dI-!a{a(MWE_9Tg>4AG0Px}c3n?Rc+%A6+@QqOU`x6goNBk*)#RJXXY5Zw` zkKTXol>Zj+tx@ssbo|nC|9b!2ssD?BZwdS(^Oh7z&>s-V-#XxfCHVLES1|US`ac8~ ze<1OX^N+aoa0>Dh25Vb?7yhZC&jB__J%Wh;GQf8R{O$VvcRr26zwRG)dj07GKD__I zc;LIc?Z$z`p9c7F{E!RRzMb-?0Utg;QUNZ!|L&B}t@y9^|DE!k03ZDKJO9WW0%82o zknuMtZpFV7E)+-jYk;qe^^erS_CFcY_ps8x-hXzw|A+;ARjhxQyPfje03XH=uN`>o zbp7Q3WMuyi`N+7y$G)ef;|2#GIN%-vyjJ>c5TP!3P4c@Rc-;SOe}_;HJQn}vfwkec{T;&o z;8y?J{u9D>@R;yh51gyt1`*bS?b~kz_rTu>wgbNnB5ViC>u(-dCVm@4SPyQSzwJLE zY**ZB{*CawfYbcjAi{Q#_TL5(<_GM7e%EXKuKoRQx_*~6v1N!*M+Y2`59aJ|LnEx$ z!`4HDx(48Y_23%+Z4hDk2o}NK<+nkE=Mv1N--brm|0uS8I|%(+VEdyH>Kwz?Lxj&- z4%jk8*zSleLxehDZT@W#VY|y#@joKW&k1Zh8ljFmwjLtXIR%cr;79`pWsg4ptYfY2a9f8qcM0ZIcT1E>ZN>S_UmJRN}0{tjUmU2K1S zfUsK-Bvyn zK`x*vf&-op6>va<2=k>13&0@4`JfICSg!#NXb@rff9oC0#@4zA^WpNl^q&#t8NJTI zuCNUA`@i)LX5(MiJ($n`t#@1Zu>Y-hTlbs)t#?~%+5fxVZBlN+3+De%1A4n~wsg_b z7`M=`#NrPeS-yqV48>Sp9JxByilO18_}0%oZpXNJSiZJ~XIv)!0*CaaB4(0VwkA}!v*{FXADe| z_b5)Wady>t-z_oHj3sx>Wsr3_+wIs_WPg@3=o>j9S-xDgj-S5Q!%LeFm*t!@UEbU~ z=A5^J(uMm8#4u#M3sZ3u#jX424`@4hf4LP_UvkO(BbP-^RT9O$Tx!}BD@QhQIyo-N zF8hZ|&EIdXNW{0Xk&kx@xeMFn56A|hbm5)`G0gh?mD&i*hr2Ng?4L$vhjqSFrDrtV zNC;{3q%gl?ee_QKoQy!$(vX|{3=fsi(8IC(JL`(nQE^o7UL4h}aiii#=^}d}sEx5c znx5a~(daaj?9Sk(I*9Au;bj*5^(qzK$;B6@f}dzu6X{wM7D;mr$JMh<#&pVN`bz>V zdFZ}3xGj(@_7sJpbm5*CF-(I7p8S1_0uv^ox^>mN=L;#{T#7k7Sweq|fq?(l+mAC& zsp_RRT93Ng+=xqqa*Ruio)x#ey%ag$ry(%Fw!eQ8r3?3+$fTuk3bwQht5Z+D2<#bfk0{QEq;PTD;opO9t#bRpOa zrHlTa5OeL!*VNXuGv_8m_A~8$6u9`r{zYWzSzzG@Lzb0!^;n3%KED)Odb0 zOmHRD3dA-O`Qiy`XK3T48-e3|0JpdCb20kWpHD zTv;heG0|qz2Z<4zgj|Bs4s})-oX)&H>854b;mb`~lSjY$eG*gb!pI%jALAWydqkx{ zFtY?7FPFhBZm1YusHEnv=vV&B3}KLg6nkb zDvMnAZN(W(#7X@rb&cx$YO?_WfA41JCfcV?$=774y@#x>idF==`dPkBr70{y=~5t~ z05PL6R}ANOi&;O28BxrxniEXQDb}A);r!@HtKvAL@#^NIwS8F=_Z8j3ajvrX)vzU% zr@L8Vm=$n&IXQ{Xo|RTW>B46T#4xW)9E$x+8>+=go_(vtoVF6b|EN4eS(R+6*>!Fs zbFsoFiO6*ql`Qo}SMR92fKkDhnEOtOx78E|jHY~SWeVUkE^?owLPP;#@ZU_ePlw(o zf63%=_B^M?F_m@Uai8-hAI5y%x7}ubv413O>=!Rz^@G5!K1^YtQF2px#-T!jbkc`& zd}U?=8|Zkc(Ynv3jZSjD7%Q~hU2PU?{@~`RwU{@ZSwfg)k1pbx85ymtwXekC_qeXqp_6s1zlO5WBqKl$=7=d74j5SD_-OA6uk-HBYiX_ zzNEOogLzoT9~+x5tUl{!EB#{T3^M~`SklC&Th7rVNw8G6g^!=gu4UO7xKQR&)=i)DARLf#H9I1-Q zLrJFLeN{&HzMd*ex3?^Qeg&n=fYv=>VA!56lN`HZNw}x|qFV!b!Zkt#$9Nsh%2WbJ z=Qg}K7GgTH5q78B0_8mt8y>fLMG3>xW$A;X#-G#*xj*=Y(q%;J#;<5kPjY+GdW?<- z{d5kbc|s(5QMZVMuh8oCcbSscn!~uB9WvLWpNx;oeO(PP`C1))ez?@dB+U4#g9biF zpD{|839Tzs;7~=Ej(@(PV~@-3uU_6IWNjwr(>^pf`YQFwj<`4JUKP%33sGbq?cW?c zt&~us8y7PZrcszVHE{P{&fPlnb-|3*)jN}u+xeLVPyKFMfVatjEXn8hSH$vy)=Qku z_TA;%^-|v3U@GfwMqE8x$l7$Tu|~ke@Nl87*HMpW`bT|B&%t*~$aTzu*1c`9zoE60 zxcl^V>fBjI%4Y7c5QgaIEr}AXcWVviHytvHvMS`?SLJX`>-ur2W7>#n?uwk*gJXIu z`mM|!2a7?JE-PBs%CEOk@ZH^VSGQ($)n7(oZ_P2U$PzyoG*UZzn5i;UhF0zxP!fLZ zv@WB?DmE_fFwD8qZ$_@xCPk(~Zn~lj-{m0jvY~ZP*Rawq)o6KZ++qthjJl_K^%*ar zP;H@Kr)BcU#*>1mPlAEW?R~12sv#{a_^d)W(M28?ezc|BuCBQ-i6;;X-^n1ld(gVL z`w4iu7`=LO@*fmN4~~B?(5Rh>9;WC>q_!r%)iHAVIH!vIGqow544bH5DG5}Jp{LlN z7wE2XKRKTJy6Wm$5K5OFty@5+al!92Rn`ho-zQ629n0ctbGgyP8U(LoRGIBpeERr$ zzZxfm8yN9N-1${|Cyn0>=W#^1V@gM8j%0aKN&GF8E(cn7qAD1FIUwiOE8Xmdqn8cj z`Zt{~=f@}Z)Zzr6X=T0bn|)LAmkJr3nyt^1aMza&H)-CFxQBVUW;-u?6mp+rhtFI{ z9yrmur$a8R#E7rRMaD2ZX75v8Jx+S*nliD$IN5ZYBmu!Bi>OS6j)0sT+e;1G;h$di z^52=<$hbJji*B2B9^54vHi6RRLhD|%WGxOpbVwlN%U-_#O$@(z{jZjSF+CD|$JWyD z^FQD0v5>3~Og3wkJ(fOVt!^vr(ntHF>L=x0Gi|4EO#-nQlrA?~*ZYoJbN|$(qa^ZQ zbgZeg4e$6lf4T0#nevE6&qLb5;eky3opsxVT`~t5@8`rk8xCK&8{$g1PlI~WTWPqf zlSwUx`&q8rj*-1!*|q3etFTluL*F!JgQ}LmVGJdLN30c&N)V2L4Wo3 zjAwMmd9xr-{SCatTcMp1U3zV2>Oyl)uYLZuyCizLig&cDjVI3lHxs417p-f|^+{_= zujckydfJNQY>n(0o|`mvD>V{t2R0dOhA0R=oTB}(h|BsdY$U&w?8tpRJ_*TU($i}+ zK?L<`K{(czQM&uky5)D=*V61xE91t>sMs($?W;ZXCf4yI|Iz9^Qg*V)k1qUo>V$52hg0p_!K7#C*x!Tift(APx`(J)U z6d*=6*zCxc`pmDxV}e~DC@2qd==6EAUyx$;u|Lq8A^dA1!I7Epr-#SPEJn&-(A>nm z?Q9(mFE_0#4joBwl$PZWRJ;OcT>+Oik$?@B4@V#VB7d{7s(;&2WCNF;ctz^$)9QjB zKORlo0Pxw7k@6N_n)e8-b}w|lOx4}YZ9c^=2t zoShJNfp2n|;4?*~kfs!?QLk{Zrwq3VMISif`D37@=edVBb-ghDHN-?4Q6xll}qorA1qFO}h+~w00Ht#KLQac!GOU=s} z`SepiwZsu#_MnX|i}-lBaNt~bW3B2mN*8`_jTi=V@1VYwv8C@~)+63Aff|Q$uJtnh zCn05w^z^CPN!0=U(Uo}L`M#Ia-A|psdm(QEkYt@v%s@r#@xCUtW^;&<IY`D955HUim}$Md}L+o3A`JH1F$&?w2D;mz*`Py@b+5zK8#q%gJW+~cvU=IPw*Y-w0&q> zZ9sm6)nYi-i_$yfz_6uNI_?#}>%DbiYmrlDdp^?VRlmho+#hf4m`+23(nWr60Oc`i z)VT63-xC(Uc;=AUwd1o1xX}*Io!<W58y?a@q?CrFn@dC$L*JB%T)#@VlkiuW*D_k3WVFlkRg-h&fims-+d z^`b3VWp)&c7@HuRQW(uYAjPjn%E&H-5UgFIN<+R z403;vLF;BRoNly9OdBI~j%lhkJ?R>16PGcNAkKZlbU5t+v(ej}JdUOP9WHxlv#7*R zuv2}{c^XEk6P;7+*d&_qmE|)#N*De<12N3A>L&IqWjlT2&o!7>mi#%Nu+RPrmLX-_ z0g@e)YWypzY;9)o{tEk8Kg@b6l|R3{>A=NCYQKs{`TeD|>S~P{N*Da5?jMF(xR>58 zw5oDEceTy1S9GuNFhjqA+PpaXG1Dr$A=zVA_K7A}_UyY7r}QFhHF5AOgJ9Wm<%?W_ zE}JsJ#J%ey1SnnPcO+08^C&UYP|oC=>*4;>`(qyH99~s?u!vV7@-E#{)g+McJ6WE$ zfZpy?IN{uRb(={SsgK1ps5w-9%h&(JZ>CnY@sJ*+i~J7dx9+D;U7vrE(Y|WH+pA2; z{A4JbiS|onF@E~X^egorbs9YB#M%U+D7p)UqJ%& z^RXfn#2RMTxwmip#2wC`3jKIwm-*h#RgUDCM{k^^6;#^{MH8vIt{w1_ACWILkLg#f z#=TkOR?Ne4FblJ>YdZHwR+9f+UsSwGh$ujeZ>=7Ug;K`!GhHvo_HyUgJM@%pEC+iJ zN9(cZ8}Mqf41c=9ebeuTmYjXi_q@WZWhh-`w5})1=+U!b zk26``1>)<;&C2mHVP=$554QCP^O>4zH71@hq17c1>1y@US?%KbSQ38u&8HS6Zj1H0 zV~WmItLrki11P9q;4SN{t_U z&!pi#`9$;nN=}+t_B-L~UwXOt-SA25dYNQUy2$sUP#g0>_QLylEo$A-h38R(3f3%*iJzy4gt;*vK3-`;cYgO$VNoD*rJ3?K31-t(MDcXdxNMCqy_ z!9ragR!3^qYga2ge>iu3WcguaooJ@j{r!U5G$S7A*N2gcCcpN@eblTY{d)7*{kJo> zgyw4Bhs$3Kb?_$Ca_QMCj$Vi0_qK>(1|N@4(mLO){#FomOE2^8@|g20)304U8SkBa zxf7bn8W-5KuSXJHAX1Btp^J7%n#XZEl5#e!|Lt;1Ywo9|^$VzY;rG9YVeUVjxqUvS zvuctrJy<_lHjCv!azQZlU@6APO<7+no8L#cBcvcPVBxXsaJhHIgJ@d;8$PPoN<12i zP_hltQ1pHs`92wHW1=eyOnSl;f*kgq9_3Jd)=$RPZ#!~zmrB9DJ%*_Rc7yz$BsICU z4HFxsx_HSis+w`?Z;G6{-zf5$jpMPBxIzyqUM(b8s5||2czq979Lf2qu_3OXSKr_f zE*WQ3ITBvKR@+iuq$y>Z-(HCOqNzlh;Y!gZai*jvB9l};)AL93Ge>5!id7R(y4q;n zrd*549@l4?=cu{VIn$TO)GrlU;q!CI)3P7iyZ_3iBHbok!!x%hCgimD;uGvipOKX~ z;^THncuG)R+=-y?jw(tQ{%#C0%-2P;;>ouRhmS6Qh_EP6dHbe}D}Ik^$1w9NBB>!= z*09JkR_r~QsdR>xUfQvzzxFpD;ofz%`gQk7!6iwR<28E@ zKf`@Ba${llgZ*x(JQyOP05SPR>J9G+l#M@c3bxoX_Gwo|hTA_0(W$FWdph{_ys$_n z+iHu&gZ!aa1#vu_y1P40UzAG{BOEs_)Qe|)a<8Har3-)mhZtrK^Lp88&xEHmUz)A@RQz_^9B`@H{?H`Uz68)EoG0d$3i464$Glmhp9#O`k1EsHTBGxOZ{t~}bk5>dMFg{J(rzER=EmsjLorVC1_cuml{M0=IV zF6Y&<>l-OKI@og*rdfy!-NYxt8!G#3t;BWGIyY**IN^YTThOB^F5Qyxj;q0~0mgm3 z6xwAM8J;Y4cA|7m(YlqsHBa(Q%ASQOd>dl;m93w5^qZH3rCBZE=-?Ge{DDGxSHl&& zrhBw3f_Ik-Xk0&yP-o&K-pLFscRtl*c>6v2{%eNTZOW1t3cTLNSN3#W^`dU?O#70~ z(OHi9jx&tk!iOKodorFmBz%%BdD!eR<;u0b6PFL?jBw9hn#H5d>KYpGypDc8K8n^= zk+zr2sb%JG#&7%)`8oKpF6RuTzz8qbl#*HxJNXZqpYmtjUzd6?y_6}Cpl0bVeAwSK(ugDT8-ybOMZC~e?y00l%YW?eH z{LJyP(*`GQVls6EsP+_-Fvl@UD$~i9Iv>f;tyD*UKV*T{B~N`ylW(SIeowF{*f#E7 zZdvGF%O*SfWv_Erwde*{tZB};T)l84t@h}~W2yIoM+K&0d5kAGeq5@wp-iJZ`T8I# z-eYLp)vy7-Cp14hRc42?AL zVu`)tFAaaZ_$li=`kCVv9{PQWC0h68M=SbD;)L-tN-DUW1ZSqMuY7L#R8kOT?IjSe z{YZB3aSV5lrpxSc?yF65uFcWUJiqI;*&8%9TbjNf?x#L+8x`+ywC>yq_n-dvvhRHu z#2pYk<9nmI)Lw$qFX?D);?f|F`+ohKDKl&WtB%LIhHr6c4fAT6U0gmaq|rd``lwPu z=(Q4hpK68HC62>L-8ozJj6~Sgu5_Q!%~to)`}kvR+Q}E^7za`ntxt|yy7EcoxEp>P zWgVi%6EQG)v0G4da+pJS!`!Yx1pZbLSud>7y1d!MV%a#1M+_941*|f<+*@@CNX0q~ zh=gDAik|&7luY_f(QA2eU^JzIf%4tA=%Jg>h%HGjCkC@UJu^ajJBc zb@gjH8$2Z6P`b8g-Cbs%N0b9X-^|P=cDsovUe*6jk z$y}02dgk&>mAZz4uhFU^tyN#EaGp^#O(E)9IeC)1+Z&m_AA*)a>tB*6QM&eM-L&t| z-69n1&1x)VlSr0dNeArV2%R}p>Qcnu(J40lGM%Y|l!vdyV&G0pE@P_1@N?~G{Ghg@ zg7mfiaoLv|k+0rBt`WFmD4`w2sG?gEIw#b)tmo(n&o9f)y0n5`l zCAkYnURg%a<+gvZ&^W!uMfg!1H}PNW#y?hL}fI4f-GU z%?9dTSR34I3%Azf)K%|WE;i6PZgMwoVR4B{CP}R7iPA(ZzvA+74L{sRb6wsjT_?0| z`kQl+=c`pRs1=!5y_Dnh@XoshnmiA%pfTC)luSmaDD0|zrPm<2ZH=vKCB9{#-la!E zCd;$;^uAAB&#CGI;cq~Z`Rk0%w%iPLX}F!_t^!*LRgqDc52v&;#=X6J5vq| ze#@~-w?zC@TGe?;z+B5l1OL2A|b!x1%aCsTRs*Tb`e&+|}F?Z=yMolv~{jW{2 z)_+M0ZD5u=dCbsj>gZSq8ldMtt`K_1PbKpSthRc6PJX$l|77=B zs!yqTX9S1*>#x6F6I&?v?36w%$>;IH)?X$hN84GhqpeU_lwo5Cr3-(*h!|$lnyxiH zY^wTnx~zrXo`RysIJA1HucCBBf7b7+of9&|dm3m*xGKq{L-<|j=aJ9XM~1(Co;Ivq zzvY^ibWQ9P`ul*Bh$ukJfyrd8@~i1L)_HGSQW1Ae(8A%3ioj>|7HU9q~mNJ~H1Rqi$Si;0%##TSmo;{LT`}W7IVbOvLIJo&jytP@G?bbxpgkx}hHfVHJDfUKE?4?7+>xtHtTD-D5VR@7H)(tY1 zuX&Zjl*zAHf>pnbb3Wavov4S8ON8eLkgH zQST1kydv7Kq4(V_IpW1tre9)K==+&BT9$m-vVeFtPW&--L1dBGt!O?`zaNTG(xwFl_#)`{h(2gtzuAD^g^#)| zDiR-mUfM%oGd_6xva(@X`!C|-`eiyOqgd1q*C z(rswJvj4Qvkr3IVq>S&{n6EJMO;s9Qeu?R=IKI36po}hm0FQ4gyYJ6TEpcP|#}PA! zCV$@Sb`nz}LC>=Qv~J+=kQi+m$F=se?Y`_*NmZe({5%>?vDd@Z&wzm}WfNhqov4|*@>X69mIJFlMS zpA}Ex`Y6fjMNZL$x2XIEqjhPXHeOM%5jysZDcc%z*Yf;#n!3QuoILB}XF^`TxRiH! zv`9Ujl(*LAquqq#h!NEd%OsDg00BL(bRB^+?#vgy4{OC8L!^*DX`G;C`@cd zT}Bd3@A!B9lL>xw(w@PG_EV{GQ0(vSM*yd}tAG+)nXBq%mgV$GsVDM)hb z=>4|rp;~V6!q)02_v_pOGE-E%VQAfaEAC5{CTYUaR_g*Gbe@=B?OOH$mBJ$CEk*Gv zK0Gz&%XU9*Da%-%JJ-6eQ6Q0Xot}rw+Lwph;_D`HUfZ-EN;e#>d*B)#;WGzWqmDr< zx`+OIn#uMztDE6pXNx|6Jt$Orl)g+vULc6a!LIEp;Werej2()gNPgAXRQlx~JuJ{fAsF(zL?wXt>5$=Mxu2mCpjxF{xG>< z{J4I9CdICoKISopskzITZTIV5+UKHQgIngM5XPyUFXlUtny_1Ggv=Cwaf7O!bs^hF zdm%Fl{d<@wv~D+z$v2Mk4Gt0<3>NeS23F4X0Y#w}ua~`|<=V&Z>9jo`^;!GOz7(22aS&@Unp^Q&DV@;OVf&>;*Cb@&U<%0jhL|+R-d#NeXi+|eOT;A6SY+H zHHwF373~2xNLEJdrl;Cor;k3v=X4{<*~~Y-&(Lt_oF?^Gw^p$))tV^XGiY7SykprH zh>i9dt*yD6)U4lk&&#-}^jSmg=8cqh#McdPQam>hcp0I{EzA^@u{Z8iWp13~=6jqY za>ZHR-kqj|>nPnAw64>p#z5Jrw~RfH?s+OWo9$P|eM(WVLA6&xoVP8v_F1Fto287a z>~fYu1gAu9oX!#@KBCt7>TH}-H<7W4kZ^7#O7|>UH>HqW_{wC#+m=?sA8l&Yk1ON{ zMyZm=uW(;I)73Y7g1ah#_(wm{JNCPlE6XXzme~&srk;#iQIFYOUiI!#9~1g_3bAP2 zUaI@}N9=Sq{7QxohlGTME>cjc2?}cCi^v!y4NrJoJ7_L*?gbU4jl_a{_l+cVxg*+` zW2V2ptdWGwr!I+T>7wF|L+dj7bxZ9fBBq%0ikNeGf1vCbzk2k<(#T~Y-g^96!TS%G zW8UqW+#hL@^^;jDVdVL4@&fLOK&2a<$MH%ub(HU*@00Op-9pUqcQiqp%?{=~smsK- zbdtqJDs{=F_wB)5KT@zux8q!%fgcTiejn?msE9TF!miq}-Y1vZlqVJ5{G64z+Yy0^ z_Z(XHQ>vc8JNk`{TK;*Zqz~^UoLQ@IMTq5}Gl+f8UNK-!@w!sWb8duDd9X2K!l-0A z`*LjMXn2&)r&3R0`x{xd@ZZQG&ld@3-ShPK_TR`a(=O@A+f(nzVn#cl*!h5X`I|vR zL?j;`ee{ok)H&-Lt&3%gQ{;^Mr!cuyWDg(CQ9Ow+w;`ubUqSz#AQ7!wwp)Z-+6}LL zWA}%1&I$5sUW_G8v#AsvT1#BH&Cg=p`0h~julHn`r0-wHY^;ji=;*jg;X`)N>3X0| zviqYR^nE7@t=sgCo1i!L;Nu6{5^klxbO#R|{G`T28B#wGWg&E5QNyfT+_0!G^NQuT z)|#B$>jh4ZSRMSQ%@zw}aq)|W2MW;d&yvx)fmNdGldhR@_o=*E?Bg0vQJ7hKCmqhd z?r5?gW?NAx`}M-3Tlxn{;)xH%vhPmuz8C8F*?juok@ z`FecY;PifK{xCjU>}yKyByBZHHx;d$W-7_a+Af|lm=Vq1$x=N$6(Y`sf1-uov+w)# z%vHJz0*w)e3{yySS)SO&`ulVJbP>(hWjBfmY`?gN-`~R#{hligts8lOna{`hiafI= zYr%BXlGQOQr7|ItyS*QuZ-&YkFm;Sgw=C!li-cxsQm-)-MeO-hv9DK7k^dL2OEBYY z%n4gmyy^m9GhRTvB9r#b%E70vq$lRWSAsA+4l}&v3ou)QICGr);!Mb!ki)h zSaung?eSieZWdZM!sYWs5Fdp`&BgA+aY@IG<*ZoRa}qXBtPo-v@7KzQ+70O%uQ`X> zO&Rs3cQDfKt+E~%w^R4%EDd!yadt=o{e8eCw5~^v<0aZMR*QHs{xHm95)lV#td;>||u3dZ-f zNk0i79sXK)m_R+zQ6+rLufldVieAH+V9_E%1Lstq<&Bt66t0UdD;JXKUX^dE%By~& zv^==%dcC-AoD`*-gVq&Z+B>$C*(u_xdSoH0@O$8U1*XQMb^hzmvL)mlA`UX<`x9Fn zpk8%^wVi&{R4AoRG%XUa`-0Wa z>YysCqFyfb3f(HcWp!0kCEJsiXcRAo<@P>s!8Po0Z|I9mwrl2G^I`AHi9x@Q%0=tO zf94LUp9}T))wV0~1!W9A`?2U><}>d`?TmCEd>|)D5Z-6=tz2j?a}E8?&n0x1E4$d< zqzsF(7=+nOuO0s2D36La53SornAh`VcF6NmDN{$!s{%Zi(}{&lQeQ$ePEg}atxkVr z({+<(%dIJXu`|g z?;L7q%s$!pv`&KpXTi92RqZ*>LcHd$QCSI(0-cGXNt1QO^}PvfjT|`n>1@MCBLz{q zSJAq~?e4YJ&Ya}(k9d+I&U&^StzL7CX$a09oa?F2Ga`8LXk!?ccq%6=ACu^Nd?5e$ z={qG|c1rR={r3#SVs7N1pXaZkbyJtEp2~H6%Q>R{2*K;zHa_3zfH8=^SHn&O~T?0uFaJt$sRLQy!mL|lqcNngMn?lPgUN} zSq(-tstn7}XPH0X=O1#SQ`218s5*CvC`2Rr)uWJwTjgJGNhpqUgGSQc<{^ZG)lJst@|y8S%(GZ+gup$;=m z4@hRUj_C|hdZzCea{lUBgFTMg?@UU^T7T}XEiXIQ?)A&>`E&AclrEAw{Dt-ezC8S9)DKe{JfKY)L*l($#~t=TVGHKKeaOAzJrY>#ieVXr#M%&Bgdf_hbDV_4_?$fvdd({Hoy4${qD@}cCfJu^PD7n+Jiu>S!&W4Nu z!&#|YH5v2N_d_U9c_>2b9vH`Hsice7X&(RdLQr(WBW+>yjnEj&d#PScl?iJDEj`cZ zhZcL5iLZT$eQ#SQl*KYpkj5=4BSZc%TZqeLVn0f^7_Cc@+UDMO$dcdfY3>c>sWIXX z#$&vv_cGPJI>FaN(#KIDGAU8|Z7gnGHBg>5n({;wkupd3CwZ3Xa(r35PtkVdDBTjY zZe3p8&nlb@b?NXu6#VjnPP=y9k)*e?vEYr0y{i?ouhcHTPpj8|W8(d*={x~Bht10$ z1*R8G>PeoCwT#*~cB6k!P>R-NZtrPT>M0kfFIaiuebDdW%ale*A_eL(h ztE7||;uhOOX6&f9X0_Xw(Q802QD^2yopn?^QDyFVJXE}8Xx&k6;+5OX1ywOCeYtMY z@r8rr1n=X$FGL$?1c|XM)Si|N)5fshj;|xUe|Tt!GVrpZ_HK0p1|nvjJeA{pDG$)^ zo7*Ja>(L1^s+nj@CWm7x(sdv{t56)%O|}zbifs<%|_)O}=t+<-gCw zNx#pL8_j3#`$N03-$6`*R{BxF8z-Y+1B`KjneW;Ke*IYV^Uxi%uGkeWmFr%t)iJ=6EK|8M6y4u(<5v?vjj{F^dru&m1ve&N-YI&YZ)U z&VY$C>wD_|S3R@ruZ-1;uCA^Q(TX~9H(CDbfEaYO=I`A+2<4FpON+V4#>Unw*2}2t%C!{rxe~N z;JZ!8_h93=B$whjs(twAQNC>J$G@CynE&%=-Tkuz+IIfYeL{Z2)H#uzy0+?7tU!Fk zg08oRA8%WCMYc1Ex}LLQW_sIYS6mhF-JXu`y5^T>#5Et?XU_ej8kf~&G;QjCTz9UU z{n4|rCC^`~*r`IR!Y#K%PJH*?;p@2~mzo|Px2Epw5w34Wy-&Vr-=guvxdOgBgnVEA zHGbaUu%xEhbuHshr%oN*cjW2Td&8IKdJvqb{!ikQ))hXV>Yngr!`0St7b?vRuhZgP zzj5ud+iP!r?@(c}$LED{0=_$ie08n|yX~&=xkuO{*VBz+d)_Lqx_kP0{9yO_J3ekZ zyZcV8`+jZ3ySawu`E+dOvCe0DY*?_cv*yiK?KIh3?PdR^cXA5&?h^8y={CV>e?WmM z$M3$Fq?-HAkQn?bHL<#(&G({l&5ha?_j^w5W(dkXzQk{jeyp#vOL^eC=cCm3u}bfw z^5^XWTF0#v@ZBxsn^0icp}D8VZI9g3?^uD<*jbT@6DySHyzb@BN8^5Z*P&94>t*(R z+n3_hZ@|7orFOS}f4ou0Rf{(Eo}K-Z;qp=YdoP6Zw>?6>kJsnk=RasowUuw;uP?i( zTfFATGmk-=hwb0{aJy@(w$pcby{~_^(2!z2SICYN`aNG&y=&r~mb!Rch4t*KeNn{qsd554(x7 z>9utmCl0D#Z%>OI6LPQqbYRiL&Cb`N^4*$MIJ!@%@{8KHvTylfsqp)YgF?Pze`u~HlX6YP36Z;@a@`q^MT3R?DjNy|Hp(V?c?8g*&TUjmquH&$f@7*Q}&%?Xw<@jx8 z57*+GUH&dB>$l}iw;vrpDm{mnXyQKIFY$-{>&RLS?ln*Z%2ImuJa*OTuh@aN6JDo` zeCl?vb8msXM}&NLeXO|6CFDzm5s#ZkH(Jo*zRRAJ6AM!(T~Dq$cT(BZ59_sC6ALy7 zywK$FB7Zlh);=w3#*BOv?R)0*wa|6ns<_Ng5b!-J*!o=@`Csm_~^eM_yr>*cbP0vpR$sNmZDjpviO-Xn+Ad7oHM z!1tJt?RmoJuPPl$}2^}DZcPnYil#y#r4dXJ}5m6Yzie|Yvew(qIJa4IH$pOY;b zH(Ttu&vl1)Rdt#Eu6@>xI((ul*Sy{!?z3-~fQGH6R0(`}MR;( zJ$?HPTK;Boho~(N4;M^byW?h|6{BLef4#Z#-rkgr#3<;A794oq7+c59g&pVstQIbvAh??tq;4*jpxejtZn-_!M?a_Y_`Rp*BKXv9P(Ir@>4~Z zR_zm86#e~q)Y-EFc~1%XcH6O{RF?xuqvQv@_V_3lHGi@EO`P9pw-RrZ*RRh^%~3Yz zhs%D==5)3z6qNAU_sruf2^|{uIQ?qpi*wGW9Z$@!E-`X8zxD?6djjK_aYDCd{g_x87ONiQlV zElhdcZQ{xOiQS)n80x-vY2M)>Wqx;({Vm)NI3whHzTK<-u8JYeLuFTr&%M!i$G%~? z^zRRq96xnp3)fs5k2>7gC10ezx8dvV6@^y%J(v<-^~ssDW7>7C)_h{80atGv7w*5E z74lu)q(R52rsDSV9LcSZ~ zi!_fenlM6BqL4?YRb9IcKX&iL>V1i&#!V^jf1=mt0PUUc<6rhYSoy-U{$Hv%_B>Oi z#+^Go9Ln|DJ*1;@#{GW6b*}S5zVltSGz|IC`}5$r&v)iNbVVOt_PTe?>ULFgG<+R5 z{l?>gZ<{;!pEdp92*-N|`+1em?$NH`A20fMcbe{*+HOe8nt6rit1k%ow!GARWUm}| zPt>mIT(fyTyL}zUH-6LIIHu#pUGbXFt-UAJ4~fsSv)Y}dF5N!ta<4xx+s>IEXFAt! zyZ`?Es++dx&I`XEx+vs(s<^ZNl@hl~U0e`%c&hG?>xSC#W&b)C>oBg*<6#|Vcd8Ws z)N{7ux`IQWXFEHwNA{>sd;9Khw()Fem#*UnT)tUq!VZCcFA4e1URLKyzqdZeC;z!| zM-7MUIsZ6UIx=o(wvJC`{WjuCzEuv#JG5xK=i&8j;bYEM_TJvTgI>I@FAMqVLu#C?RqTkP?AWKrlRbjRS9>1)y_4~74R^Z^&pRIqNPK!>Yvsj* z{;qkWGfOy1fr;^Z50+#yKX*Tm8Mn z-)D@fXD8X_vYMQ`7qp-L_Qd)w6H?+IZulG;ai)CmPJf@O$NqY{^!LCTT@tES^8GkO z!1t<BVKwA-ZJX4-K+TJ(_T*hBpcc7_PMWJ|Gc>N-i5Ibb9XEBeb55e)&hC23;9mI zHgDt3GV9~!&kXL}P^Flk=RuF}t=Gth#5!q8Z-_0Or>}jf2~XayIAOo$j}H^-*M9EV z?nA2!?OcjK=@GrZ{H(4*d$=LwyE7r=WTgAA3EqaguiuWi+Q7|jLE+$@s!8j1%s((H zdHCwb2a{5IOt5d- zwE6h^hx|$j^l(ea_m2g$X1y-eZ)2_DE)yNx+;;uie{Ar%5ciwcChAJOar8M<$MK}^ zgFN#`{<&er=^T+~FOKiFsLkEs!RPFzRSV8J@}2NI%iBV}YnBa3Er0t}e7o;?<|O6c zUT8qi38{As1)e1M_YI8SwK`~0WSO2@8?7k3ysrQH>UX0ij%qL~=I^|Qj`{uWO&*ha zNVq?LN65EG{w){JcUm~#)xLVyzLURya=Y^S$ckd;>#zIqxaRFyc}gfp?D1@K=}g?p zFY7*C)c?M* z(zq6vzHW>=te*a-{Ik!Nz@j;dZ1Ol){^PXW%P0Fk8?`jrVgAK2Biqk9;u1758GJMQ z&kh+?28~*4d}gcs>~8Fs|HisdJ3nY=On zp3DDYTt~88Xu|$pNQ}QmofXsAZq9#%{Rc}i|A=o^<}3|lX&_4jSsKXFK$ZrwG?1l% zEDdC7AWH*T8pzT>mIkskkfnhv4PU+XXwdsB)LMg4snIAjI{(3e zYK=o(~Pyl^fsRM)o=2vK=&f;2he>(bT`mpz!AVv0Npu5_qfoVD|9~!-DN`hpgTh7J`cKk zqbs00pa(z!s0HW%=m=;H*bdkMr~~i@&^=8a%WVMNKl2?xN`HV~`n!AdHzEE6JOR+(8F&Vuzq^nE zcmX&MxB#GU+K&K^0_gss1Av2oJ%GIcx(lr*Sa$|=0@MX~0BQr;1KI%s04l&5z*@j+ zzb902+fU$rsNUsM71grz#=)G(qpe%6lfCYd6 zKzTq#KwUt6;1>ZB0E+=j080T*z|mcmbnid|0NrES7|;T+0{E8rZ3UovALwrTLrA;9 z_oq8lN&J)QSH8#-4d?{`3)a7S;I}(~Y?10iHbl193eW=39MBBV6wm}f@{Kruj3KoLM;fCHcqARizvAUlA(h&_Ju0CEFz0dfLz04SZ_ z={G;1AfN!i5kUM(0!jc%0ZIeP0LlR>0LlX@0xAQl1F8W?R(htsL+J$6hsY+~0n`uO z0A!!u053otKwSW}cOwARuOXlTfZDw!;1>YNOgbXnkUq%fsqSRw)Gw*dZ2|27)XzHr zs84hQ5Dnpb0?-X*)Lz7kc#_Tu9|j8gMf8_QGiK+v4D{Pl4Cz$A7BDtFJKQ~DPT7s4zM1u1h5OR7O)er z9k30s6|e=61lR=F2-pBf1k3|W2Mh<801E+BW(@ypl0_(& z>Dg5NYUCxIP`gt5P&(D!n%+srR1Z@fOm#D*Q+ZS$%0th@i|mQggzu(jsz2fBo$@T@ zpJVV#I;Far@)CXrz|?*uH_2?mQ+|@4-c9Al;F;*iP7eS~<;38b>{0km_Corm_KX3L zo`}wrhiqHy`2>$!gI{5r?!!Cv1EQm6`W5D(y2k)W-z5Kj0QC*3C&_yTa2k*dAX&}> zeg~WbTmYE(nRIC4Eqtfv>wv2O>U-oTOmrmcHGrv}Li!k_lYI;Gk}eMeO#O*$mSm@P zAR92%;U=D`e-pnL0Hu@7P`xSvEP0X)!ZgcwDwpa(=?>5EAN;FHK??rmZP?eNPXF+_ z2=VKr#pCYjLj1HlefD&Z8MfJB?dROt2Gmt}c`Mx5NL&O$K1{88x2Cu5HZb0b+MWsz zHl~yUrl;|BbnhR{`+FpAvMcnL9dYx30J5T}29@(5_O@|L$J4nP#@$2VE|UXO6qtKXr5y7%Drg6c zo5H;wh?)VDADB|PdQ~n{Jz@^S5JJ`g7zbcfBcDg=dp}qMOl_{5{=nn~rg+ZY z_1)WbFFpE?4Zyf7ARYV`FeLT+Th7Int$Wmj(RdPOH_xr{0K5HH-sJv+r>TQ+2^f;# z)N{`b;Ys&i0)xhZcrs;31k>M#PIC%2z2nmim^un*$5ZAXtket!?);pLyGT@ z^#I1*O;H=dsSHEHRr+Yzwb~z^71&l?MHmHZ1(hM(sMZ){Q8n+E8GiV<78vj%*@~f@ zLXe=;skl6M$0sEMQ(NIq?Nb>TYHbhAws)t`2L}ODm(xL@S{on_50e#qqApl^M;8My zD224+2^!MQuM_sQSo^KuYGCSc<S{=e@SbduCG_?xl_Nx%LEd>~~ z4jMtGHpqiCIzL(DxWFfhPT^j_@U7qjnkp!#XX!Q9MI+U>o8!brqIDSU`PkW9JcHmIzt=JxS=GB#lVnVSB&sU(iinP z42+wi9%&~;ZB&!-OiH-cD@V`#hl^&bNw4^Klc(91JZe_+pbb?RH|lb*5LK95ZIIn` zK38R2o0m-)H>T@HyljUHK3&&(TLAT7NJdumlIK=;o_vneF-NK?`2)zNQAJSbC##*i zN{6=X`%dODDCZ++sO6&eeDKa$zb&;XwKn>KxNI5A8OfI;PV*!Or?=jRUgu1>_o_OR z+MRq=!<^jxIla1E>Cpde@&krp7UBa8X*7A-@PZ}mu148qLoz8xwm%n#$-DT$t#S5` zYBQtvUW1R(8HL^72#xY3;0A(!t^O}#h?Om}PD{4^tA@6yL)J9QQA zWFm_|Llz%Dr|I!4yM0SC8s?G2y^AF`hitCsPNl)+D1M2X@~G2^*72o2fSV_CJJw}m zecP(k3=?V~+l5Epe*Ef=>oeMb8~O6_Hp~MI^TJ2RAMDM|}N5xv71~;(=*ZkQ-(4KJQho$^8dgqc2TlUNA(b07%~z-{Uk(~|2{6>A7k$@XX#0N2pLW?s!rsY3 z!u4u7-FH;2K+MU0E|bYdX+#(I*WgyPFgG^djIH{;aoDB?e#`7w+v$EacyH)l$$<>;mnW z?);j5b4sBvD>hIh#J9Hii18WRpoW-E8!tw_x?YM#CbC3uQ|g1llzM~8uF&hNJ&)cy z2@F{xFvW^sV&Kl|MsSR}V6lYn88fT2G3B7enF`NmYC zv7Q_PwL%HDS`pLk&S>XG_Fvkva+vLiXcQ8N*T;%Ks14geZ#3OlX^uKqm1Jv3F&Qzz z2sP_NTJhEvAG5?GE|L16FIcgVdWfP?Q*k@68Y59i4sK#Gl6bsh%@Sb$HZ6g6#G{(~ zD2F^!xk?Y559g`02j$Rs3Yrui)8pm?7sm?ih600;kt7g_h@nyOXiz-nvl0<|bDmE; zvU?BN$SW6}a_eD_vnN*ZdV}?fN4MfJpOsk-jZE;$c5tE&DCdytqFW7ml=NY(;Gw8% zHCE>JCf>7X4*_n(%B;W<<)C}VY%Nux-H{^B_Ix?ewbl6?v-ldIp?PDYj$zT|#vg6S z+Q*$7_D76y)@O&}^DOcBTBJ9Mc^5V_ngiL&Lbk@SU6y|ts2L8~$S0zGtVB=b-=J%e z=m|8YI|0{y9;*2;z1=`?BO2J7cwEJ%5zs?muW7GK_wLvdG&F95n@;ObL4fR3Qu77z zQOdl)Af4=5tqsIZUa+y)D%Ybg9$vV@FibYJHdv)s8x4gQrj#i8$CV(vY$%-l6X}i6 zPF*N~Vv3wk=ho52Z_3YeLpd#gA*(uZCS}LSf$fKwG2*gC>Xl(((O7RyxcPgv;Sv9_ z%Z4J@KXJ^l#MmPSI_i z3S5-dphBAgLudK4V;C0Ih>sW|_Qw2mhIue~e@HFv{l)#YxK|cwQ%E2lQ;5e0#VT^1 z{D@zP?_a ziq>NoZeHTd(Hz|H{>dMqU%D|27u94O8_9g3ozkEw0&c~6o_pl#e0%^;1B}(#2kYC2 z)^(AXJ-2BxCC?MmvL2HItlBgFwJ;&$MJ95nuXTI<(- z+|3FxyadpJFEEb4Y>V4sS77GvGQJ#OLiloAN`%es*DadHdeRQ0js%9rVELvo1)Lfj ztw0zr1*UZ9jod9})!kQ}FY_!MYeJ)WE~Y!rinaZ-XMtIjAAzP0yck+;I&xrmj9Gr< zVRY5Y(@kqA?(VWRz)&l^98zlUn$tZ4m;@}g%oy1nMBeJi+psd*ON(i9yixIv`i{LA z4fCTNfFb`j<$~Q1z5r7Um_@`CYu!l&(P%45(=P6Iv~m?Dr#4&6$z(Yy*LYD ze#Z$kq|uV&Pc1m;yN-Gm$%dMG14B9}dSz;hgR9TH;xUk*DKO*@)?f8qe{xC^&EBcy z+-u7^0z<8Ev&4LbV@%*Gnu2n=b|x#+>gORishY2t?6 zX<$fib=nVgQ7n0*0ET9+7=%XxLsC1BYE|Ri%ZjvuK`X(KdJZs!fr*m4yck}y^fR6t zBv=Iu>3Z0TPCm*_XM-7r)pR>B)PL5#jhg7Yz-br5u=T2BV8}wknhsAqJgPxKo(BHy z0Wb*rVoFwh>U3}BLT5APKfqAWx||Yu<5B5On|TZ*C{T^F_@d3cnui}ff1AgkXVwkL`d+ZuN}-Z{eU4I_-^R; z)=ATqi|o)oUO(k`0(E-1N{J<_O3%knIe1|n%Aw_W=vusI?dE0c=3nrdOTqw7qpUvS z{l{vrXTDe5BOQR#CJR}#;B@IBp}X@j9k4ZTksb_Pi%THVgW(g!%dy%|nbbeyVa3a_ zsvYJN18Q>dLF%s9nG16NN$YPk(xRp(fGG;?TrGR}PPgsHSMu6{cljBOic27F2jU)9 zTsz|Bh|`GIM_e{1SFQ)|i%RKoqt&-2Ogn4@6d8lj8}EXKe3h);`-tVOrwrq1fDyN< zXP_bPQfzvZ)AyU_?wM&i$vF?3qTH0Tk#Y4^9)p(i1%`TXzK0D`+RcvRy(Nv#YGBC6 zXYUa?`N_PpA9)(IsffRZw~Xe?S-K!^oeF!VzTs)aM>Et%qz6L+ag4a$#A!q{3LS`W z!}#+v9!Y%661Ri)wYX76cA@j}Z>=Ah#zy#FaoMa!kgPXajUYWJh!wY9@xCAu@1RY0 zLTVZ@PW^J|{H_^|JF?bh9!Wgn5@{dUK~c0gS>muyZ{OR*A-Kel+s|hWf%M`{am0J2p_9NEmmlY>P%H;xUEV zpw#P?(Xt}8$~~`EsCZU<@iF_VxxnJ2cVmULG@M7s{bXXzA%7hgW-Z4CFB==LnDa-hW1~7nfRH zH`9n)mAD;<(4ZV~j7V!kE^*BN6gQFn1KF(iAL?2U(GoPy>Axp_z4mabX-68VR!2Zv zu|LWYk4HshgRc@FWyGw?^M5QB6N!YN9dV!dGoJ5fyzl2CD9*uxW z`EG?qjo*3M?8&Wq7dERF=O*r}#A9WV`e2+BuaCIi#QmE{IcT4M+lE%{<)9UQrW}!ZBP0-stDrZLI9^=W z;3hJngGNNxC`Ux2HhaDJs+0&foBsMAbNflz#Mf>`q_)}Ttb15G3~JRv*sMUr5-~c9 zuMLW<*@?$|kXoFZNKMf`;@-u2O=*k6YE30pk41C<>lKfy#QmH2YOBbqA@nBh;}2N( zJFvI##@zg8MMy+=^!L8y*to!Uq{jk7vH#d4)%lwBI?*Wun&m*F(}2MyVa(r$y}z7M zbrI}Ii1bFtX8L<7cGri*%x~u5!nm=s5qFw!t6yCwUE5UN*N66YX?+wuSdRreBaULu zDAr%OXD_!piEVUDHg`1T)*PO#om}YJwOrT(TZI${$n-OI@Q)*hpR}rfw;XY9BD;NP z?flKTIYvlu>(7z*8*uvzYzInYl^WJ-bq|c~aERy{tu4~$Y|ekeAX^c%V6VQ}%I>?j zYbPN*V{+DZ;Px~L4to%HWA;;Jd*gX)z7TMimb@k^kU*MpZLt^XFQ*O z3vNxQnZhnu6ZEMpvkB)(rFVu|oBB5ewcxNIUbN@z#K_kx@FuKfR$g^2Vl@sajl z@4^3OO@D557T1B1|BA@;oBj>~ZqHuPGRmmZYn7UAbo4K%aYc9YhembNJ~Ud&b6TRr zp)vf!x6Jq^$=&KFNlpEAp`l8px)zQ@8G^aJe0i8AJV>p@CMU){D@pQToo=wf8bYrM z#Ib|mV52e2P`_3!?2@VtMt!tG8x|U3Q0VkQwQNw;lH0<{+3{pgg)wL-{=O@p6Mqs- zvMe)O?kgkW(3BU0Dj%*@8>3AnvqPO3v243HER09g^4Dnt)j@K$UTRL$t4z-vcfG&q zJ;Y#o;x#*1ZEPAG9;(y^8fs~AqMCb&4A#-{YD2A1T|l@-C0B=r>GWuC3#?uRl{Pg- zhasm5>Q$-umk@(aD>wKDt3s9jdYu8QsbR`Ut;*o93{%OG5f;O3T!WJSvOMzY!c_co zgxa7sVsjEl=?rwlOU}MOQ4I-KYUu6?xk`&t<^I^ZRMEL8InFI3NgW!l$Nw=h26Lqw zm43*~6^655@<_EYSQl=@`E;EY?;2eIvMNGV`XE)PTB{CK8vTQ{N@KWQsga{Kh^sEl zsMaA(r?=6z=1gc`^9!t`9*#7jiE-RZ6CR+FYYdS(eSn-!x{=D{kRP{kPz7WPi1s#Yus3G{XY&g*MY^(G zM|{N~D2^mcmjJXOB@Kw&fDV3nlR3``HOyy$|OVt_+pyY4BlYfGobYcR! zLV_yFNLU*hH)rBl@D%8?)R49{F7R$dZ1#1TvTW{PDG{=-8Ra-pBiTLz*9taJDCzMH+g<5i7vB7H_gV~2sswj-iwgyi@F7Ok)G5t&RM?rC*7QC@~NKum@9)etvC-E2CwUwheVoTU04psTCqi{{eDNBtvcW)*3rqxWtih$kwj3wH!ZJzD zK8mFVq2uS=aB4#yb0*@IM!}ju%6KU|z8mBT@dRZ^8z7ye2MPV46nub4va;Un7aka> zvNa?Na)E>34FyYkH;b5q#7-ZDu(o9V-iE^XNe-y_CpI=qQ?XB>85MhiXQKXws#Aca z#9s(D*fJY)CdR@V^Wj? zwl=t>l?Wbb&t|{HeJxvY`0$GCD|R>b#0;7uaz-Gc7TPbnB@5>F%e+%K5c-F2D8Wsh88KTZ?OuS5Nw{536?CMfFXNlZbC|b zY#@Sn0^kx820ZOFv(gB|;2RgxNJ*|)%;V83Q1*eHX2uLuhE zi&p2uQi?_~SBloC42JM9n(P_SE*hH?pY$2QGkpRYTDqTOy2d^~2DRxiQ^qTh7o>tW zX2`7RnE0rK7CzHxOCwZGQ$Es+@SW+DwJ4XYRfgJfzvfJ7jEI6o>Qd7Wd`m=C35h^p zg3CNu7vX|eHjkE@d^sD8IE2L%*G479iBP6E64j?z-nL`1CM398OGfZQCTE);_YpZb za1UrvX&Tc9;h-`-LUx*U*)A*NdWD7L+?6Yts_KQ7e8 zLM0ZN#h2{T@_EuypUtS4xgV)-?fMmdb&Dl8(A9*Mh*uGKsB@Np&Lg zIuLO%FAAlNb2fCuU55ZV?g36wdR38JAt=~lB+V|E+F&f$9@LN>akgZTEB)}nak$Y| zXkwWaY%P<_uHHs91f`P>%(5_QDYt97kpZNpM`jOFZqRhc1Eb@vdtl{BMVs6$3!vg2 z7>(2%lWubW1^pnu^ahA!F9t2&pFxgWN60A%^I%g@8=$teoJaGMA;gA$!33XYOIap= z0R)KnCstJ{wOSF2lb)B64N+|KDP2yZ5*|uR`;Z6;R2m!BBFsjz381OLI> z8QX3Q#C*zz7Si%S@U&+N@TDD!<&r16hDl=hO+RL#%=8J&kx8kXAHv!CAvg$M*|LdL zpEQr4ROhtel+9|Se2#e>2CezU?C{xY3Ja!eDBYY1T+AdNuQCSt!R-1++I5u_=L$22P(~dv)8Ji*u{a8na zsi3_u9BwhPT*7n=o!G6lOg8Eabm{_(83 zNx`C5F1}FEISDnc-e5txf+kJrQzDd_aOwcMFgZy_Ji$q>g*hp_$S|})0vXxPGEI3b z5qedaN@*NWn~Nyff4#U!lKt14{kJarZ#{*#jTRQ+44sQ$m``V|7@&e`RdT8e7W+_X zs0={>mdyNZc@9A?*0O0d z4Lf~8dJW)C=U@oYXyllS2LvdMN_m7@6)ES)1@C6|7KysRKzxu0dDGW48YwEhUWYvg zgPad5VJ4yUiu`g|5Nj@@G6*Tyb__$bg&SZaRDt1Ie>&VEkeya4gFuAyIB0u=+Miww z(V>1i4T?4RW0`^|IDc&nRvT!=mREUnS`NsWVox+rsNb2|!xY&N=KhP>z+8Pd=}@INjzKqCw6%m!yN2SHBo zwMbzdT59YQ7!}WfH!(&nHS*Gz2Oy&#mS1YDO4lKXP}o7hf&4JMgsD5R4sKfox=1>G zg<9Z&1z1uQPRARh>E0m%2>}somr5PgsN)Leo-?JcH2(t1v}aKA^J5!jnm!vPf%%(8 z5T4M&o^4staZSzuq=Gl5Y^g2EG$#w%v}aaRMoB&~O?_NXu~7vpxxv;-Die)00`H!g z4>P$&8zqn}o3aT#D2fq7vC2p_IGW00pa92=iHw(27-X$V;ASlu{G{W3>!Tw$T1PM$ zS>uJ_AgP+pbPD{KoCYmhE3o23C{Y}lDa}|oSunInVO+SjLPPthag^C;;Cw0EGX}D> z;n;?aSj~^JtfrewM9<+0qz9c&qf%=52muM&@K8UM-u%vaP#Z#khRcJ3)1FyjQqw!i z&0-Lql07p@slIF}C&wV2=$Yk{UI84V^l9KE?MERIr&FE-YtT$-fqFCF{-71SF>0yq zEHrq|Yk^6|M6)&!_Gl37C@@+vzfXB}fi~LLIsrL`X|hy0N#NTuZ`OeS~F6@v|W zQjG1Bx0YGcgfvr|n+=6gpo!@l|Ag_uh6>D?z}5W10)b2njeJpNT9liqAOb}}FpiE! zFq-RSqCBwYXiViu)3D&25piKUl_a%>#47^EX091t%v!dsQ5KMMlw53{WLB_JOpp7u2R(I z2{ee!FQBE z7*lY>C7BY2Xt5ANylAb&yfnh(lCqf$>nkQc+|a?Txqy>&XvPW-6F4Qdegk&a5#UK5 zL7=mxo6eCZv(d;I@{+j1DJ9WoYB)}}_5?2J-suE`t6r|~v?Kp1fk}?~8uxT`{lyW@MUYQ(Ho&$0S*9kcm!W6a%An9<0 z>z2er_|D|u78Y=P0Uz`!wOX6|e{{;hlnu;;uZ)+}{;l;DS#YwBU_7O~BK(waVHnIT zQou#}JPl~5C!}BA%b1v{mN&O^`q9a1I;*3UU$vl28=0)8GmcW$C7?8oN|s5P;=>Hm z`ZfYu!UmRcm-4Ua%v~__nppFz&BA?+Oi7(#JTdJKfw3qKZVe}Em}2QjBL5w^&F`kU zJj7HLieuc^qvTJ15(EBVpACP_=K#Iw5TJ02i@ZOa1Unczg+C zQ0Wn^V)+A~vJB>qtJ^43f|BZDn>T9!DT6jk3WnwvMw^Ls6+xXrpI!;*qFC6MvVU5& zWRWLD(dHL9cjZ5+R-@Ay=ws~&d~9tBjo4O;4dt2cw*gPnqa25h>4F=HcqCm3AW!$s z22?2yLV3YJ_zJc1+su}S=Wt}!s2j{a-WI)RAT1BLraiOHAl1rTB^2C7ZCa)HcL+t+ zYDcMG&lvTL*?OGI)*`;kG9s4t>i`tR#H)b^tltxFPn}Dm_$uGHvmOQ zs}f~fo(kY3vP?A_iV0&@m5sibF*Dd_Ok~Y2H4d51U4Vn>k=%@=`C7Ih!V7jH!lW^C zMHD6!lSeA5v*b%>7rCV_5e&HUW@AHR8EEo{y+TB{{zAd B{C)rc diff --git a/index.html b/index.html index 32b1225..cadd9b1 100644 --- a/index.html +++ b/index.html @@ -149,7 +149,7 @@

Other questions

-

Loading...

+
Loading...
@@ -160,8 +160,8 @@

Other questions

- - + + diff --git a/package.json b/package.json index 16735ec..7a6178c 100644 --- a/package.json +++ b/package.json @@ -6,17 +6,16 @@ "scripts": { "dev": "vite", "start": "python3 -m http.server 5173", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives", + "lint": "eslint . --ext js --report-unused-disable-directives", "test": "vitest" }, "engines": { "node": ">=20.11.0" }, - "dependencies": {}, + "dependencies": { + "preact": "^10.25.0" + }, "devDependencies": { - "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.2", - "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-react-refresh": "^0.4.7" + "eslint": "^8.57.0" } } diff --git a/src/app/Flash.js b/src/app/Flash.js index d9b7b8e..4568af1 100644 --- a/src/app/Flash.js +++ b/src/app/Flash.js @@ -1,4 +1,5 @@ -import React, { useCallback, useState } from 'react' +import { createElement, Fragment } from 'preact' +import { useCallback, useState } from 'preact/hooks' import { Step, Error, useQdl } from '../utils/flash.js' @@ -111,8 +112,8 @@ const isLinux = navigator.userAgent.toLowerCase().includes('linux'); function LinearProgress({ value, barColor }) { if (value === -1 || value > 100) value = 100; - return React.createElement("div", { className: "relative w-full h-2 bg-gray-200 rounded-full overflow-hidden" }, - React.createElement("div", { + return createElement("div", { className: "relative w-full h-2 bg-gray-200 rounded-full overflow-hidden" }, + createElement("div", { className: `absolute top-0 bottom-0 left-0 w-full transition-all ${barColor}`, style: { transform: `translateX(${value - 100}%)` }, }) @@ -121,39 +122,39 @@ function LinearProgress({ value, barColor }) { function USBIndicator() { - return React.createElement("div", { className: "flex flex-row gap-2" }, - React.createElement("svg", { + return createElement("div", { className: "flex flex-row gap-2" }, + createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 96 960 960", className: "text-green-500 dark:text-[#51ff00]", height: "24", width: "24", }, - React.createElement("path", { + createElement("path", { fill: "currentColor", d: "M480 976q-32 0-52-20t-20-52q0-22 11-40t31-29V724H302q-24 0-42-18t-18-42V555q-20-9-31-26.609-11-17.608-11-40.108Q200 456 220 436t52-20q32 0 52 20t20 52.411Q344 511 333 528.5T302 555v109h148V324h-80l110-149 110 149h-80v340h148V560h-42V416h144v144h-42v104q0 24-18 42t-42 18H510v111q19.95 10.652 30.975 29.826Q552 884 552 904q0 32-20 52t-52 20Z", }) ), - React.createElement("span", null, "Device connected") + createElement("span", null, "Device connected") ); } function SerialIndicator({ serial }) { - return React.createElement("div", { className: "flex flex-row gap-2" }, - React.createElement("span", null, "Serial:", React.createElement("span", { className: "ml-2 font-mono" }, serial || "unknown")) + return createElement("div", { className: "flex flex-row gap-2" }, + createElement("span", null, "Serial:", createElement("span", { className: "ml-2 font-mono" }, serial || "unknown")) ); } function DeviceState({ serial }) { - return React.createElement("div", { + return createElement("div", { className: "absolute bottom-0 m-0 lg:m-4 p-4 w-full sm:w-auto sm:min-w-[350px] sm:border sm:border-gray-200 dark:sm:border-gray-600 bg-white dark:bg-gray-700 text-black dark:text-white rounded-md flex flex-row gap-2", style: { left: "50%", transform: "translate(-50%, -50%)" }, }, - React.createElement(USBIndicator), - React.createElement("span", { className: "text-gray-400" }, "|"), - React.createElement(SerialIndicator, { serial }) + createElement(USBIndicator), + createElement("span", { className: "text-gray-400" }, "|"), + createElement(SerialIndicator, { serial }) ); } @@ -218,14 +219,13 @@ export default function Flash() { }, 1000); }; - - return React.createElement("div", { id: "flash", className: "relative flex flex-col gap-8 justify-center items-center h-full" }, - React.createElement("div", { + return createElement("div", { id: "flash", className: "relative flex flex-col gap-8 justify-center items-center h-full" }, + createElement("div", { className: `p-8 rounded-full ${bgColor}`, style: { cursor: onContinue ? "pointer" : "default" }, onClick: handleContinue, }, - React.createElement("img", { + createElement("img", { src: icon, alt: "cable", width: 128, @@ -233,30 +233,30 @@ export default function Flash() { className: `${iconStyle} ${!error && step !== Step.DONE ? "animate-pulse" : ""}`, }) ), - React.createElement("div", { + createElement("div", { className: "w-full max-w-3xl px-8 transition-opacity duration-300", style: { opacity: progress === -1 ? 0 : 1 }, }, - React.createElement(LinearProgress, { value: progress * 100, barColor: bgColor }) + createElement(LinearProgress, { value: progress * 100, barColor: bgColor }) ), - React.createElement("span", { className: "text-3xl dark:text-white font-mono font-light" }, title), - React.createElement("span", { className: "text-xl dark:text-white px-8 max-w-xl" }, description), + createElement("span", { className: "text-3xl dark:text-white font-mono font-light" }, title), + createElement("span", { className: "text-xl dark:text-white px-8 max-w-xl" }, description), (title === "Lost connection" || title === "Ready") && isLinux && ( - React.createElement(React.Fragment, null, - React.createElement("span", + createElement(Fragment, null, + createElement("span", { className: "text-l dark:text-white px-2 max-w-xl" }, "It seems that you're on Linux, make sure to run the script below in your terminal after plugging in your device." ), - React.createElement("div", { className: "relative mt-2 max-w-3xl" }, - React.createElement("div", { className: "bg-gray-200 dark:bg-gray-800 rounded-md overflow-x-auto" }, - React.createElement("div", { className: "relative" }, - React.createElement("pre", { className: "font-mono text-sm text-gray-800 dark:text-gray-200 bg-gray-300 dark:bg-gray-700 rounded-md p-6 flex-grow max-w-m text-wrap" }, + createElement("div", { className: "relative mt-2 max-w-3xl" }, + createElement("div", { className: "bg-gray-200 dark:bg-gray-800 rounded-md overflow-x-auto" }, + createElement("div", { className: "relative" }, + createElement("pre", { className: "font-mono text-sm text-gray-800 dark:text-gray-200 bg-gray-300 dark:bg-gray-700 rounded-md p-6 flex-grow max-w-m text-wrap" }, detachScript.map((line, index) => - React.createElement("span", { key: index, className: "block" }, line) + createElement("span", { key: index, className: "block" }, line) ) ), - React.createElement("div", { className: "absolute top-2 right-2" }, - React.createElement("button", { + createElement("div", { className: "absolute top-2 right-2" }, + createElement("button", { onClick: () => { navigator.clipboard.writeText(detachScript.join("\n")); handleCopy(); @@ -270,12 +270,12 @@ export default function Flash() { ) ), error && ( - React.createElement("button", { + createElement("button", { className: "px-4 py-2 rounded-md bg-gray-200 hover:bg-gray-300 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-800 dark:text-gray-200 transition-colors", onClick: handleRetry, }, "Retry") ) || false, - connected && React.createElement(DeviceState, { connected, serial }) + connected && createElement(DeviceState, { connected, serial }) ) } diff --git a/src/main.js b/src/main.js index ef1ffbf..713a545 100644 --- a/src/main.js +++ b/src/main.js @@ -1,9 +1,10 @@ -import React from 'react' -import ReactDOM from 'react-dom' +import { h, render } from 'preact' import Flash from './app/Flash.js' -ReactDOM.createRoot(document.getElementById('root')).render( - React.createElement(React.StrictMode, null, - React.createElement(Flash, null) - ) -) \ No newline at end of file +render(h(Flash, null), document.getElementById('root')) + +// ReactDOM.createRoot(document.getElementById('root')).render( +// React.createElement(React.StrictMode, null, +// React.createElement(Flash, null) +// ) +// ) \ No newline at end of file diff --git a/src/utils/flash.js b/src/utils/flash.js index 405df98..7bb4155 100644 --- a/src/utils/flash.js +++ b/src/utils/flash.js @@ -1,4 +1,4 @@ -import { useEffect, useRef, useState } from 'react' +import { useEffect, useRef, useState } from 'preact/hooks' import { concatUint8Array } from '../QDL/utils.js' import { qdlDevice } from '../QDL/qdl.js' diff --git a/src/utils/image.js b/src/utils/image.js index fd0951d..53674b0 100644 --- a/src/utils/image.js +++ b/src/utils/image.js @@ -1,4 +1,4 @@ -import { useEffect, useRef } from 'react' +import { useEffect, useRef } from 'preact/hooks' import * as Comlink from 'comlink' From fc784ec4909489393cc9a9a1cc2ee1f5cdceac07 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Thu, 28 Nov 2024 21:39:25 +0100 Subject: [PATCH 19/23] restore @fontsource-variable --- bun.lockb | Bin 45450 -> 46239 bytes index.html | 6 +++--- package.json | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index 7123a835ef90efb10a4b7a240b351a1fc8f20be6..9c12bb4a5dbb6d2f27d18ec046a05e06342babd7 100755 GIT binary patch delta 8182 zcmeHMd32TKng8CGTynpg+=K)|Zo&;A>?ql8mYWdxk^ljcj|2jQ3kb?hNFb1X0YYgO z5R|YP9~Y>Vimi%UE5-$@Lj`q?%d)Mdpyvu!a-`*?oM<2@DQl_PSxvcG>hA)z{lYjek!M4n+4>t77`^zWc7rwmw z*!ybB`RS2QDMs4X7f9@i?l6h@H$qXmn_8-aRc(qg6l!PS{Z6yIANgUNzrLZdrCL#rS-hsUVO?^2lkze; zucMT=P(La7!O74c?k#)TvHcpYpY(TY^v_q%u4=;qqrASA`&N{D zEw@i2795V)5fm>ccdd*v)o%#4Cc~liW#H^YQnaFAr0ynIb|bja@KN~_I8WPquslqA zOKtK-4AIoy&{5U6uKM*5ML|*bDOhg*I4sw@&*D>JzLnqAeZXqa4*z%{X+^1Rw5fMv zYjQ`hzD^0YtZxdov{r9GK2Ot;Skv~w@<7u)rhcBgU|p-S1O0Nn2Frmdaf*VmyPMEI zK6ab&oU3&2LB<$l)I*jRb|pCa{BP6MQd{2=tWgwWaUh^xROac7^3slBle?lVziWc6 zZOtfdscvtrt?5u+NicQXg+SOKn4SZtnB1+;#QtJB#1=(r!U7!5cz$ChD=QbDgd z^W@oKRHAA!H-vgsO}s;A)O=a&AeT#1`>+?&(1Akbs$ZURP_Ii9f2A|7e3?6(Tw$8p zI$Tk*%^C?gPLO#Zg8E#3@fn>7%a=K!udr=3DhNXq)0wDz)sN+zg(4T7i}K5MHSas8pi4jrd zW-xXtl%iaI^&A*SUK*MvVqMM#8)mQ?upE-_&g0~8!y-4MsSt6+ihqDZ8Y z37Ytl_Dsl^zHu}#K~rnSnagdMv7sIrMP?qbhHcE%KT)qZi2X39z-)7~r<&HN4oWBL&#FqJ1%XYwWV$0JV^L=JW*IGfzQ)6l7R41d0yY1#GNZrO? z({i^x7H5kuAEnpgY`J`|#o2N{`z_9v%MVz5D9iHu6l;d?!ARFyu5gEyf34+??*zE~ z5WxH}z)SQ;0H>iWJ9yM6H7&QhpU3Bdp8%Zk0KkbY=RX8+{xN{lwU#4t9N_XN0Zwe$ zv8S0JvE_cAWrD<(>z`nPbi!UC-((<@D{$f&WN;eF{yjEt*9x=$p?0rP!sYDHKWOuI z8M~MVSZfUwv}`3TC$?N(1#l?;zMB{E|IXcu!8rXxH!r?)zH|3pyJ^`G=KsHWjZMr8 z;{Sg0j^J5A`eyS|NAlUOz$dHbE^B=5$j>!;_Lpx=`nsk&{IL%M=gXh?^YEd_jr0M#Y06Yx^PfmN`MZfy6F#Kp;VX}pap4edLUI7Dh+~N1*=HY zMHn4T3(&E2H#yRE;imHR0Il%3>1nV?621UAGu%||(?t{=2Ri{4lc9@|6wC{YNyS-Oa$=Bxm1&34myurZXB9iXXxH|@&SMFO1zy8xEu z*F_@r_ycrnj+@>COQQ6g0OjPm>CPNoOrT3(AAl9*>S7Z05c1f?Wlx zn5W}kOfE6v$MK$#;g1*Jj2ezIH7eik;^exs!Ee(QQ1*<66#U?sh z4t-0YZ;3AIseB3aErmX?MiNV*ZyEG0)kQNM2Ri{4vrHGQ6kG;<70?IPPEi%mw;cK^ zbg_j_RRqLVid!BK9n`#h3ylb5I+Cy*-E?YoJ{34a=;P&1GpGO5>N%o+?b_Rfkw0#g z(-9ki+Y)L%%Q@~NI3!%SQXPXGVbrFARa?2pW&cccesurI)vMx>U+G$5UE%6FXvD!$ zl)Yto{8wL_i4Ow4sUEVbqpimYh>=Y9{^4)7IyIl%YEc7VUa_-fJ*a2IQU z8v(w)@GYD#bo@oX7$^sp0en^AdukKV4DeOvXTTG{{lJd_+{?NY!Uz6p;>##sP;UbG zwy+A|3oT!A`G&X;;Ct1B0N=On1nvUv2DSog0lqo%or}NZ4*@~oFz^H59^hW!2yhfw z%WC;zG`AChm~8y7!v`i`5-?dxJ`e`v0_gyYhyyraQ-Co53mgrU0UZGQ5e2XozTa{1 zIEWbl{zX+h0Bec?SQlTxFtHrqF5}+=j_gVx4dDM{RsbA`P+&OV0Jz)~$Q#p0iSRfW2px>^ZCC z_2q_*1R{WNfFp->%fC|^oNY8P3K$8*0^DB$;04BFd?gVW2aE?M0uz8q0I$zvfd8dr zZ~1d7!1)Xx;0LmSOdt!$0cHX-fIMIppaHW17FY-r0CRw1plbpCu-6?uFkT z?|%#>emH`OK8BNWrzhKfqDYN&RwnlKe`GYpkbip}xaaW1lcn^~7e-SbHysf4mrlo(qp6QWb6*J6^?0NyLp~lt_w{(Z_A`riqkQ4b&z!%r)L`$w9zt*SER^>O z8o$FQ&A7^wf|_=Cq)$@sjv8UiupBQbe5X$uOUWnu1-0$;{SQ$x*Nrq+viG}}hq1VQ z((9miZuZdXo8!I4%N(S=81eqY^ZVEF)TCo-a6Y9v==Pg^Ui)cp>vMnbJ7yF=iVB$X z6o@f<@!D^FId>)Bk@QkD!q%B)ZY;BcoEAzcyFA(UlU|_w&C)f$KXb{73c_nY`kmRo zJt9_~-zr6#xg_!2N85M#O&q{F*2WSyH{-)#i2UoMdNPudF|J^%I1l)3c@0DtRAqn znxd)URv)JJ=&f<$J$fF0|3v3+&G6a}abH}V5Oeh5EBS^L-Z9FQ7@D}}DY;=ZUEJfd zCRVnMrm+V+RL~nQ`(kNzug7aYxP5%J@~xXjIx`KY46mnq=r){cQ{w26UZaDzdwpK} zxiwKye1yyuGgvT`!$a2|TQ&?ej=4er?`YBVS3NC-*Is zyT{(X-!sO3OuHp?+L6*9Kgnkgnxy0^%4N#f|Fpe2?YF|WpLsO0YRLol89v~U!ac;0 zCq53skUw?sA+6yYi(?Asj5!i9Bio#R@POg;?=vlWyq3^)oqn6!PjMml$J s3_T1?K0GGpe^Ea*IrZBeBxj|hQ`DnLlZR|PXZlFQUCw| delta 7666 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 U&IXz|6iX@O@M_9`0L1>c4gdfE diff --git a/index.html b/index.html index cadd9b1..97e1d08 100644 --- a/index.html +++ b/index.html @@ -9,9 +9,9 @@ content="Update your comma device to the latest software" /> flash.comma.ai - - - + + +
diff --git a/package.json b/package.json index 7a6178c..dcfa9c0 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "node": ">=20.11.0" }, "dependencies": { + "@fontsource-variable/inter": "^5.0.18", + "@fontsource-variable/jetbrains-mono": "^5.0.21", "preact": "^10.25.0" }, "devDependencies": { From 77288db16a09aead7966f34fca9391fe937cc59e Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Thu, 28 Nov 2024 21:49:23 +0100 Subject: [PATCH 20/23] Switch some dependencies to local copies --- bun.lockb | Bin 46239 -> 46919 bytes index.html | 8 ++++---- package.json | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bun.lockb b/bun.lockb index 9c12bb4a5dbb6d2f27d18ec046a05e06342babd7..13a75861543f44c8410fea75aec6cdda3d3360fc 100755 GIT binary patch delta 7902 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 delta 7545 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 questions "imports": { "preact": "./node_modules/preact/dist/preact.mjs", "preact/hooks": "./node_modules/preact/hooks/dist/hooks.mjs", - "comlink": "https://cdn.jsdelivr.net/npm/comlink@4.4.2/+esm", + "comlink": "./node_modules/comlink/dist/esm/comlink.mjs", "crc-32": "https://cdn.jsdelivr.net/npm/crc-32@1.2.2/+esm", - "jssha": "https://cdn.jsdelivr.net/npm/jssha@3.3.1/+esm", + "jssha": "./node_modules/jssha/dist/sha.mjs", "xz-decompress": "https://cdn.jsdelivr.net/npm/xz-decompress@0.2.1/+esm" } } - + - + diff --git a/package.json b/package.json index dcfa9c0..e3da606 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ "dependencies": { "@fontsource-variable/inter": "^5.0.18", "@fontsource-variable/jetbrains-mono": "^5.0.21", + "comlink": "^4.4.1", + "jssha": "^3.3.1", "preact": "^10.25.0" }, "devDependencies": { From 8ab1efff53542fbcc8cacc4bfb3afb68449438cb Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Fri, 29 Nov 2024 13:00:53 +0100 Subject: [PATCH 21/23] partially migrate manifest.test using bun:test --- src/utils/manifest.test.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/utils/manifest.test.js diff --git a/src/utils/manifest.test.js b/src/utils/manifest.test.js new file mode 100644 index 0000000..9ef592a --- /dev/null +++ b/src/utils/manifest.test.js @@ -0,0 +1,29 @@ +import { describe, expect, test } from 'bun:test' + +import config from './../config' +import { getManifest } from './manifest.js' + +for (const [branch, manifestUrl] of Object.entries(config.manifests)) { + describe(`${branch} manifest`, async () => { + const images = await getManifest(manifestUrl) + + // Check all images are present + expect(images.length).toBe(7) + + for (const image of images) { + describe(`${image.name} image`, async () => { + test('xz archive', () => { + expect(image.archiveFileName, 'archive to be in xz format').toContain('.xz') + expect(image.archiveUrl, 'archive url to be in xz format').toContain('.xz') + }) + + if (image.name === 'system' && image.sparse) { + test('alt image', () => { + expect(image.fileName, 'system image to be skip chunks').toContain('-skip-chunks-') + expect(image.archiveUrl, 'system image to point to skip chunks').toContain('-skip-chunks-') + }) + } + }) + } + }) +} From f174606e2cfb00c1cf20e85371d8ad6a6a47404d Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sun, 8 Dec 2024 19:45:07 +0100 Subject: [PATCH 22/23] Use compiled CSS --- src/tailwindcss.css | 792 ++++++++++++++++++++++++++------------------ 1 file changed, 475 insertions(+), 317 deletions(-) diff --git a/src/tailwindcss.css b/src/tailwindcss.css index ef8420e..dfd2276 100644 --- a/src/tailwindcss.css +++ b/src/tailwindcss.css @@ -1,133 +1,23 @@ *, -::before, -::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: -} - -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: -} - -/* ! tailwindcss v3.4.15 | MIT License | https://tailwindcss.com */ -*, -::after, -::before { +:before, +:after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: #e5e7eb } -::after, -::before { - --tw-content: '' +:before, +:after { + --tw-content: "" } -:host, -html { +html, +:host { line-height: 1.5; -webkit-text-size-adjust: 100%; -moz-tab-size: 4; + -o-tab-size: 4; tab-size: 4; font-family: Inter Variable, sans-serif; font-feature-settings: normal; @@ -173,9 +63,9 @@ strong { code, kbd, -pre, -samp { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; font-feature-settings: normal; font-variation-settings: normal; font-size: 1em @@ -274,9 +164,8 @@ summary { } blockquote, -dd, dl, -figure, +dd, h1, h2, h3, @@ -284,6 +173,7 @@ h4, h5, h6, hr, +figure, p, pre { margin: 0 @@ -298,9 +188,9 @@ legend { padding: 0 } -menu, ol, -ul { +ul, +menu { list-style: none; margin: 0; padding: 0 @@ -314,14 +204,20 @@ textarea { resize: vertical } +input::-moz-placeholder, +textarea::-moz-placeholder { + opacity: 1; + color: #9ca3af +} + input::placeholder, textarea::placeholder { opacity: 1; color: #9ca3af } -[role=button], -button { +button, +[role=button] { cursor: pointer } @@ -329,14 +225,14 @@ button { cursor: default } -audio, -canvas, -embed, -iframe, img, -object, svg, -video { +video, +canvas, +audio, +iframe, +embed, +object { display: block; vertical-align: middle } @@ -347,21 +243,131 @@ video { height: auto } -[hidden]:where(:not([hidden=until-found])) { +[hidden] { display: none } +*, +:before, +:after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / .5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / .5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: +} + .prose { color: var(--tw-prose-body); - max-width: 65ch; + max-width: 65ch } -.prose :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(p):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 1.25em; margin-bottom: 1.25em } -.prose :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where([class~=lead]):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-lead); font-size: 1.25em; line-height: 1.6; @@ -369,136 +375,136 @@ video { margin-bottom: 1.2em } -.prose :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(a):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-links); text-decoration: underline; font-weight: 500 } -.prose :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(strong):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-bold); font-weight: 600 } -.prose :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(a strong):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(blockquote strong):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(thead th strong):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: decimal; margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em } -.prose :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=A]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: upper-alpha } -.prose :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=a]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: lower-alpha } -.prose :where(ol[type="A" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=A s]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: upper-alpha } -.prose :where(ol[type="a" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=a s]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: lower-alpha } -.prose :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=I]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: upper-roman } -.prose :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=i]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: lower-roman } -.prose :where(ol[type="I" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=I s]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: upper-roman } -.prose :where(ol[type="i" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type=i s]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: lower-roman } -.prose :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ol[type="1"]):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: decimal } -.prose :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(ul):not(:where([class~=not-prose], [class~=not-prose] *)) { list-style-type: disc; margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em } -.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { +.prose :where(ol>li):not(:where([class~=not-prose], [class~=not-prose] *))::marker { font-weight: 400; color: var(--tw-prose-counters) } -.prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { +.prose :where(ul>li):not(:where([class~=not-prose], [class~=not-prose] *))::marker { color: var(--tw-prose-bullets) } -.prose :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(dt):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-headings); font-weight: 600; margin-top: 1.25em } -.prose :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(hr):not(:where([class~=not-prose], [class~=not-prose] *)) { border-color: var(--tw-prose-hr); border-top-width: 1px; margin-top: 3em; margin-bottom: 3em } -.prose :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(blockquote):not(:where([class~=not-prose], [class~=not-prose] *)) { font-weight: 500; font-style: italic; color: var(--tw-prose-quotes); - border-inline-start-width: 0.25rem; + border-inline-start-width: .25rem; border-inline-start-color: var(--tw-prose-quote-borders); - quotes: "\201C" "\201D" "\2018" "\2019"; + quotes: "“" "”" "‘" "’"; margin-top: 1.6em; margin-bottom: 1.6em; padding-inline-start: 1em } -.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { +.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose], [class~=not-prose] *)):before { content: open-quote } -.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { +.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose], [class~=not-prose] *)):after { content: close-quote } -.prose :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h1):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-headings); font-weight: 800; font-size: 2.25em; margin-top: 0; - margin-bottom: 0.8888889em; + margin-bottom: .8888889em; line-height: 1.1111111 } -.prose :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h1 strong):not(:where([class~=not-prose], [class~=not-prose] *)) { font-weight: 900; color: inherit } -.prose :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h2):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-headings); font-weight: 700; font-size: 1.5em; @@ -507,128 +513,128 @@ video { line-height: 1.3333333 } -.prose :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h2 strong):not(:where([class~=not-prose], [class~=not-prose] *)) { font-weight: 800; color: inherit } -.prose :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h3):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-headings); font-weight: 600; font-size: 1.25em; margin-top: 1.6em; - margin-bottom: 0.6em; + margin-bottom: .6em; line-height: 1.6 } -.prose :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h3 strong):not(:where([class~=not-prose], [class~=not-prose] *)) { font-weight: 700; color: inherit } -.prose :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h4):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-headings); font-weight: 600; margin-top: 1.5em; - margin-bottom: 0.5em; + margin-bottom: .5em; line-height: 1.5 } -.prose :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h4 strong):not(:where([class~=not-prose], [class~=not-prose] *)) { font-weight: 700; color: inherit } -.prose :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(img):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 2em; margin-bottom: 2em } -.prose :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(picture):not(:where([class~=not-prose], [class~=not-prose] *)) { display: block; margin-top: 2em; margin-bottom: 2em } -.prose :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(video):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 2em; margin-bottom: 2em } -.prose :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(kbd):not(:where([class~=not-prose], [class~=not-prose] *)) { font-weight: 500; font-family: inherit; color: var(--tw-prose-kbd); - box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%); - font-size: 0.875em; - border-radius: 0.3125rem; - padding-top: 0.1875em; - padding-inline-end: 0.375em; - padding-bottom: 0.1875em; - padding-inline-start: 0.375em + box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px rgb(var(--tw-prose-kbd-shadows) / 10%); + font-size: .875em; + border-radius: .3125rem; + padding-top: .1875em; + padding-inline-end: .375em; + padding-bottom: .1875em; + padding-inline-start: .375em } -.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-code); font-weight: 600; - font-size: 0.875em + font-size: .875em } -.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { +.prose :where(code):not(:where([class~=not-prose], [class~=not-prose] *)):before { content: "`" } -.prose :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { +.prose :where(code):not(:where([class~=not-prose], [class~=not-prose] *)):after { content: "`" } -.prose :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(a code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h1 code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h2 code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit; - font-size: 0.875em + font-size: .875em } -.prose :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h3 code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit; - font-size: 0.9em + font-size: .9em } -.prose :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h4 code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(blockquote code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(thead th code):not(:where([class~=not-prose], [class~=not-prose] *)) { color: inherit } -.prose :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(pre):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-pre-code); background-color: var(--tw-prose-pre-bg); overflow-x: auto; font-weight: 400; - font-size: 0.875em; + font-size: .875em; line-height: 1.7142857; margin-top: 1.7142857em; margin-bottom: 1.7142857em; - border-radius: 0.375rem; - padding-top: 0.8571429em; + border-radius: .375rem; + padding-top: .8571429em; padding-inline-end: 1.1428571em; - padding-bottom: 0.8571429em; + padding-bottom: .8571429em; padding-inline-start: 1.1428571em } -.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(pre code):not(:where([class~=not-prose], [class~=not-prose] *)) { background-color: transparent; border-width: 0; border-radius: 0; @@ -640,73 +646,73 @@ video { line-height: inherit } -.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { +.prose :where(pre code):not(:where([class~=not-prose], [class~=not-prose] *)):before { content: none } -.prose :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { +.prose :where(pre code):not(:where([class~=not-prose], [class~=not-prose] *)):after { content: none } -.prose :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(table):not(:where([class~=not-prose], [class~=not-prose] *)) { width: 100%; table-layout: auto; margin-top: 2em; margin-bottom: 2em; - font-size: 0.875em; + font-size: .875em; line-height: 1.7142857 } -.prose :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(thead):not(:where([class~=not-prose], [class~=not-prose] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-th-borders) } -.prose :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(thead th):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-headings); font-weight: 600; vertical-align: bottom; - padding-inline-end: 0.5714286em; - padding-bottom: 0.5714286em; - padding-inline-start: 0.5714286em + padding-inline-end: .5714286em; + padding-bottom: .5714286em; + padding-inline-start: .5714286em } -.prose :where(tbody tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(tbody tr):not(:where([class~=not-prose], [class~=not-prose] *)) { border-bottom-width: 1px; border-bottom-color: var(--tw-prose-td-borders) } -.prose :where(tbody tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(tbody tr:last-child):not(:where([class~=not-prose], [class~=not-prose] *)) { border-bottom-width: 0 } -.prose :where(tbody td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(tbody td):not(:where([class~=not-prose], [class~=not-prose] *)) { vertical-align: baseline } -.prose :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(tfoot):not(:where([class~=not-prose], [class~=not-prose] *)) { border-top-width: 1px; border-top-color: var(--tw-prose-th-borders) } -.prose :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(tfoot td):not(:where([class~=not-prose], [class~=not-prose] *)) { vertical-align: top } -.prose :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(th, td):not(:where([class~=not-prose], [class~=not-prose] *)) { text-align: start } -.prose :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(figure>*):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 0; margin-bottom: 0 } -.prose :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(figcaption):not(:where([class~=not-prose], [class~=not-prose] *)) { color: var(--tw-prose-captions); - font-size: 0.875em; + font-size: .875em; line-height: 1.4285714; - margin-top: 0.8571429em + margin-top: .8571429em } .prose { @@ -750,109 +756,109 @@ video { line-height: 1.75 } -.prose :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(picture>img):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 0; margin-bottom: 0 } -.prose :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { - margin-top: 0.5em; - margin-bottom: 0.5em +.prose :where(li):not(:where([class~=not-prose], [class~=not-prose] *)) { + margin-top: .5em; + margin-bottom: .5em } -.prose :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { - padding-inline-start: 0.375em +.prose :where(ol>li):not(:where([class~=not-prose], [class~=not-prose] *)) { + padding-inline-start: .375em } -.prose :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { - padding-inline-start: 0.375em +.prose :where(ul>li):not(:where([class~=not-prose], [class~=not-prose] *)) { + padding-inline-start: .375em } -.prose :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { - margin-top: 0.75em; - margin-bottom: 0.75em +.prose :where(.prose>ul>li p):not(:where([class~=not-prose], [class~=not-prose] *)) { + margin-top: .75em; + margin-bottom: .75em } -.prose :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 1.25em } -.prose :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-bottom: 1.25em } -.prose :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 1.25em } -.prose :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-bottom: 1.25em } -.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { - margin-top: 0.75em; - margin-bottom: 0.75em +.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=not-prose], [class~=not-prose] *)) { + margin-top: .75em; + margin-bottom: .75em } -.prose :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(dl):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 1.25em; margin-bottom: 1.25em } -.prose :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { - margin-top: 0.5em; +.prose :where(dd):not(:where([class~=not-prose], [class~=not-prose] *)) { + margin-top: .5em; padding-inline-start: 1.625em } -.prose :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(hr+*):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 0 } -.prose :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h2+*):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 0 } -.prose :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h3+*):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 0 } -.prose :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(h4+*):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 0 } -.prose :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(thead th:first-child):not(:where([class~=not-prose], [class~=not-prose] *)) { padding-inline-start: 0 } -.prose :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(thead th:last-child):not(:where([class~=not-prose], [class~=not-prose] *)) { padding-inline-end: 0 } -.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { - padding-top: 0.5714286em; - padding-inline-end: 0.5714286em; - padding-bottom: 0.5714286em; - padding-inline-start: 0.5714286em +.prose :where(tbody td, tfoot td):not(:where([class~=not-prose], [class~=not-prose] *)) { + padding-top: .5714286em; + padding-inline-end: .5714286em; + padding-bottom: .5714286em; + padding-inline-start: .5714286em } -.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=not-prose], [class~=not-prose] *)) { padding-inline-start: 0 } -.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=not-prose], [class~=not-prose] *)) { padding-inline-end: 0 } -.prose :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(figure):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 2em; margin-bottom: 2em } -.prose :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(.prose>:first-child):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-top: 0 } -.prose :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { +.prose :where(.prose>:last-child):not(:where([class~=not-prose], [class~=not-prose] *)) { margin-bottom: 0 } @@ -861,6 +867,10 @@ video { --tw-prose-invert-links: #22c55e } +.visible { + visibility: visible +} + .absolute { position: absolute } @@ -870,15 +880,39 @@ video { } .bottom-0 { - bottom: 0px + bottom: 0 } .left-0 { - left: 0px + left: 0 +} + +.right-2 { + right: .5rem } .top-0 { - top: 0px + top: 0 +} + +.top-2 { + top: .5rem +} + +.m-0 { + margin: 0 +} + +.ml-2 { + margin-left: .5rem +} + +.mt-2 { + margin-top: .5rem +} + +.block { + display: block } .flex { @@ -889,6 +923,10 @@ video { display: none } +.h-2 { + height: .5rem +} + .h-\[700px\] { height: 700px } @@ -897,34 +935,38 @@ video { height: auto } -.h-2 { - height: 0.5rem -} - .h-full { height: 100% } -.w-screen { - width: 100vw -} - .w-full { width: 100% } -.max-w-none { - max-width: none +.w-screen { + width: 100vw } .max-w-3xl { max-width: 48rem } +.max-w-none { + max-width: none +} + .max-w-xl { max-width: 36rem } +.flex-grow { + flex-grow: 1 +} + +.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) +} + @keyframes pulse { 50% { opacity: .5 @@ -932,7 +974,11 @@ video { } .animate-pulse { - animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite + animation: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite +} + +.flex-row { + flex-direction: row } .flex-col { @@ -951,6 +997,10 @@ video { justify-content: center } +.gap-2 { + gap: .5rem +} + .gap-8 { gap: 2rem } @@ -959,60 +1009,101 @@ video { overflow: hidden } +.overflow-x-auto { + overflow-x: auto +} + +.text-wrap { + text-wrap: wrap +} + .rounded-full { border-radius: 9999px } .rounded-md { - border-radius: 0.375rem + border-radius: .375rem } -.bg-gray-100 { +.bg-\[\#51ff00\] { --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)) + background-color: rgb(81 255 0 / var(--tw-bg-opacity)) } -.bg-white { +.bg-blue-500 { --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)) + background-color: rgb(59 130 246 / var(--tw-bg-opacity)) +} + +.bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity)) } .bg-gray-200 { --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)) + background-color: rgb(229 231 235 / var(--tw-bg-opacity)) +} + +.bg-gray-300 { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity)) } .bg-gray-400 { --tw-bg-opacity: 1; - background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)) + background-color: rgb(156 163 175 / var(--tw-bg-opacity)) } -.bg-\[\#51ff00\] { +.bg-green-500 { --tw-bg-opacity: 1; - background-color: rgb(81 255 0 / var(--tw-bg-opacity, 1)) + background-color: rgb(34 197 94 / var(--tw-bg-opacity)) } -.bg-yellow-500 { +.bg-lime-400 { --tw-bg-opacity: 1; - background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1)) + background-color: rgb(163 230 53 / var(--tw-bg-opacity)) } .bg-red-500 { --tw-bg-opacity: 1; - background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)) + background-color: rgb(239 68 68 / var(--tw-bg-opacity)) +} + +.bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)) +} + +.bg-yellow-500 { + --tw-bg-opacity: 1; + background-color: rgb(234 179 8 / var(--tw-bg-opacity)) } .p-12 { padding: 3rem } +.p-4 { + padding: 1rem +} + +.p-6 { + padding: 1.5rem +} + .p-8 { padding: 2rem } -.px-8 { - padding-left: 2rem; - padding-right: 2rem +.px-1 { + padding-left: .25rem; + padding-right: .25rem +} + +.px-2 { + padding-left: .5rem; + padding-right: .5rem } .px-4 { @@ -1020,13 +1111,23 @@ video { padding-right: 1rem } +.px-8 { + padding-left: 2rem; + padding-right: 2rem +} + +.py-1 { + padding-top: .25rem; + padding-bottom: .25rem +} + .py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem + padding-top: .5rem; + padding-bottom: .5rem } .font-mono { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace } .text-3xl { @@ -1034,6 +1135,11 @@ video { line-height: 2.25rem } +.text-sm { + font-size: .875rem; + line-height: 1.25rem +} + .text-xl { font-size: 1.25rem; line-height: 1.75rem @@ -1045,12 +1151,27 @@ video { .text-black { --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity, 1)) + color: rgb(0 0 0 / var(--tw-text-opacity)) +} + +.text-gray-400 { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity)) } .text-gray-800 { --tw-text-opacity: 1; - color: rgb(31 41 55 / var(--tw-text-opacity, 1)) + color: rgb(31 41 55 / var(--tw-text-opacity)) +} + +.text-green-500 { + --tw-text-opacity: 1; + color: rgb(34 197 94 / var(--tw-text-opacity)) +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)) } .invert { @@ -1058,28 +1179,30 @@ video { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) } -.transition-all { - transition-property: all; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms +.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) } -.transition-opacity { - transition-property: opacity; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); + transition-duration: .15s } .transition-colors { - transition-property: color, background-color, border-color, fill, stroke, -webkit-text-decoration-color; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms + transition-timing-function: cubic-bezier(.4, 0, .2, 1); + transition-duration: .15s +} + +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); + transition-duration: .15s } .duration-300 { - transition-duration: 300ms + transition-duration: .3s } @media (prefers-color-scheme: dark) { @@ -1107,7 +1230,26 @@ video { .hover\:bg-gray-300:hover { --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)) + background-color: rgb(209 213 219 / var(--tw-bg-opacity)) +} + +@media (min-width: 640px) { + .sm\:w-auto { + width: auto + } + + .sm\:min-w-\[350px\] { + min-width: 350px + } + + .sm\:border { + border-width: 1px + } + + .sm\:border-gray-200 { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity)) + } } @media (min-width: 768px) { @@ -1117,6 +1259,10 @@ video { } @media (min-width: 1024px) { + .lg\:m-4 { + margin: 1rem + } + .lg\:block { display: block } @@ -1161,29 +1307,34 @@ video { } @media (prefers-color-scheme: dark) { - .dark\:bg-gray-800 { + .dark\:bg-gray-700 { --tw-bg-opacity: 1; - background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1)) + background-color: rgb(55 65 81 / var(--tw-bg-opacity)) } - .dark\:bg-gray-900 { + .dark\:bg-gray-800 { --tw-bg-opacity: 1; - background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1)) + background-color: rgb(31 41 55 / var(--tw-bg-opacity)) } - .dark\:bg-gray-700 { + .dark\:bg-gray-900 { --tw-bg-opacity: 1; - background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)) + background-color: rgb(17 24 39 / var(--tw-bg-opacity)) } - .dark\:text-white { + .dark\:text-\[\#51ff00\] { --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity, 1)) + color: rgb(81 255 0 / var(--tw-text-opacity)) } .dark\:text-gray-200 { --tw-text-opacity: 1; - color: rgb(229 231 235 / var(--tw-text-opacity, 1)) + color: rgb(229 231 235 / var(--tw-text-opacity)) + } + + .dark\:text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)) } .dark\:invert { @@ -1193,6 +1344,13 @@ video { .dark\:hover\:bg-gray-600:hover { --tw-bg-opacity: 1; - background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1)) + background-color: rgb(75 85 99 / var(--tw-bg-opacity)) + } + + @media (min-width: 640px) { + .dark\:sm\:border-gray-600 { + --tw-border-opacity: 1; + border-color: rgb(75 85 99 / var(--tw-border-opacity)) + } } } \ No newline at end of file From 2a754faf32b346dea6363a5a94b50254684c82a2 Mon Sep 17 00:00:00 2001 From: Andrii Fedyk Date: Sun, 8 Dec 2024 20:09:12 +0100 Subject: [PATCH 23/23] Delete unused icon --- src/app/icon.png | Bin 1389 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/app/icon.png diff --git a/src/app/icon.png b/src/app/icon.png deleted file mode 100644 index d5a6bf263a6ddfd3577fcaa1338e21f914785a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1389 zcmV-z1(N!SP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11o}xt zK~!jgy_#KY6jc<*e`j`UN&$lbjI9l#flz%=A&50bBEI+tWl0gCq%px7BxsBn9~43~ z8UxWpV?skhq7V!Xt<*$cj3D6wh!r#{77Eml5c#lt^oum@?(t!ExBE3Scjiv~C4Jbr z=bn51y?4%>J9k7?v85TgCk@XiJPtGnJfJWWn3gpe78p>t2=pqPsDdLM=w;inC8~gx z$V_0ZLW{uSh~xhtuvcM!7djBdL1+Ofq+a25U;|JSWze!9U?c;(t6*mbdMQ+2Qvq#A z)m7Li@Gg@}BW^|ocHD;dzd^@LIv5F9jx0#P0pJna2o3oOSlxx53o>+q44RNs0($uW zf(LjM=t&_>L599F(1f%K>;{rH(cI{PYu`=&p3?%=bw*v&z@{#AmzRO3fE3cE;MviX z@mp~CVHo{u^4hcgP&3!uhrs4e^pi?$6_-#Gl2Z6IRHPpKys0>NNy3!+a6S}1YC=|2 zYAX}49GNGu2S|h)rksBc!QcCeuT80UMT8_Fuy+;GP})!=pc%O%0SAFQLl05H*i|^) zR(?Iq(kWqD8uqs#RfQLe1Wdqd#F1?jPQBoYD8)hm0t>IfD}~qc0-BL~1>TD8evq%_Z|!!^S6mZKz5}(2U!6MEw)Z?o`&9c{B5E<1AJHy zAS;zxg-d`$^^_TdBagx0FaCBlbKR$KOlTTv9bg$2!2|sEW^nKj&+;iilJK;X-3CTx z;22!^*vvL&0c4;t36wpaO&PxhJ?q@;W5VbkaPEU(yXrc(VhuuIK@yl}Hhejyg<25* ze((PIk*J2Jj+*%snC}2H%tM%@QlVyzz@j~H*Ag>xg&7VJ_P1Vznk^4*gZee0x=at; zQkLOUsM%1Lf`+Z(`#HdHm=1o0T2y8%g2kT^C7BO7zztLDph7JQ)wR&r4T%V4q`*xF zxL{&zQmBO`Q4NiUqL&v6eGbrTVr){Vg(76esf5DWq{0b-%|XU9m%@|ZdbeLc4!?)E z2^+SC&N!7gp3K1E1SkQw(5$8Yo`%ktk6M>G=Fful}0dIk5*n-wGH&Fm~PPAMn5 z(JKzFuf4Y3hWmnTY%)$MxtMbsn*9PJHV%gaX23S%6e2L9?#pIZKo>fYao>SPLMPz% zpZ+7-W}HGYuq$^Uk}oByU}w}>80m-1xOaPm8pn^JD%hF(kr&W`UQ!6y)mFyu298?e zcp+3%uNkwtE=_o>Dd;D+E3VrpFeR8G`~XUjO+VM#rqH zkojpiAh0mD@ccQIhSl9@V1;G0Cq9Vw-Gn6yuL3b{Y04NC*q($ZOoE4KpBmIEY!P@d zj`IY_*Ea1**b(*v5UYZGG v@_t}81)tjh*MNS7UI$Jn9O*)>U(WmoAwiys6^&pO00000NkvXXu0mjf$=PlK
+
+
+ comma +

flash.comma.ai

+

This tool allows you to flash AGNOS onto your comma device.

+

+ AGNOS is the Ubuntu-based operating system for your + comma 3/3X. +

+
+
+ +
+

Requirements

+
    +
  • + A web browser which supports WebUSB (such as Google Chrome, Microsoft Edge, Opera), running on Windows, macOS, Linux, or Android. +
  • +
  • + A USB-C cable to power your device outside the car. +
  • +
  • + Another USB-C cable to connect the device to your computer. +
  • +
+

USB Driver

+

+ You need additional driver software for Windows before you connect + your device. +

+
    +
  1. + Download and install Zadig. +
  2. +
  3. + Under Device in the menu bar, select Create New Device. + Zadig Create New Device +
  4. +
  5. + Fill in three fields. The first field is just a description and + you can fill in anything. The next two fields are very important. + Fill them in with 05C6 and 9008 respectively. + Press "Install Driver" and give it a few minutes to install. + Zadig Form +
  6. +
+

+ No additional software is required for macOS or Linux. +

+
+
+ +
+

QDL Mode

+

Follow these steps to put your device into QDL mode:

+
    +
  1. Power off the device and wait for the LEDs to switch off.
  2. +
  3. Connect the device to your computer using the USB-C port (port 2).
  4. +
  5. Connect power to the OBD-C port (port 1).
  6. +
  7. The device then should be visible as an option when choosing the device to flash
  8. +
+ image showing comma three and two ports. the upper port is labeled 1. the lower port is labeled 2. +
+
+ +
+

Flashing

+

+ After your device is in QDL mode, you can click the button to start flashing. A prompt may appear to + select a device; choose the device starts with QUSB_BULK. +

+

+ The process can take 30+ minutes depending on your internet connection and system performance. Do not + unplug the device until all steps are complete. +

+
+
+ +
+

Troubleshooting

+

Too slow

+

+ It is recommended that you use a USB 3.0 cable when flashing since it will speed up the flashing time by a lot. +

+

Cannot enter QDL

+

+ Try using a different USB cable or USB port. Sometimes USB 2.0 ports work better than USB 3.0 (blue) ports. + If you're using a USB hub, try connecting the device directly to your computer, or alternatively use a + USB hub between your computer and the device. +

+

My device's screen is blank

+

+ The device screen will be blank in QDL mode, but you can verify that it is in QDL if the device shows up + when you press the Flash icon. +

+

After flashing, device says unable to mount data partition

+

+ This is expected after the filesystem is erased. Press confirm to finish resetting your device. +

+

General Tips

+
    +
  • Try another computer or OS
  • +
  • Try different USB ports on your computer
  • +
  • Try different USB-C cables, including the OBD-C cable that came with the device
  • +
+

Other questions

+

+ If you need help, join our Discord server and go to + the #hw-three-3x channel. +

+
+ + +
+ +
+

Loading...

+
+ +
+ flash.comma.ai version: dev +
+