From eaadf8cfccfed7b9542f4363dc232f4eb519c9b2 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Sun, 15 Jun 2025 23:12:18 -0400 Subject: [PATCH] display hash matching status --- backend/endpoints/responses/platform.py | 2 + backend/endpoints/responses/rom.py | 9 +++ frontend/assets/scrappers/ra.png | Bin 35841 -> 15366 bytes frontend/src/__generated__/index.ts | 1 + .../__generated__/models/DetailedRomSchema.ts | 4 ++ .../__generated__/models/PlatformSchema.ts | 2 + .../models/RomHasheousMetadata.ts | 15 +++++ .../__generated__/models/SimpleRomSchema.ts | 4 ++ frontend/src/components/Details/Title.vue | 53 +++++++++++++++--- .../AppBar/Platform/PlatformInfoDrawer.vue | 13 +++++ 10 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 frontend/src/__generated__/models/RomHasheousMetadata.ts diff --git a/backend/endpoints/responses/platform.py b/backend/endpoints/responses/platform.py index 8f0612d1a..5984028c6 100644 --- a/backend/endpoints/responses/platform.py +++ b/backend/endpoints/responses/platform.py @@ -20,6 +20,8 @@ class PlatformSchema(BaseModel): launchbox_id: int | None = None ss_id: int | None = None ra_id: int | None = None + hasheous_id: int | None = None + tgdb_id: int | None = None category: str | None = None generation: int | None = None family_name: str | None = None diff --git a/backend/endpoints/responses/rom.py b/backend/endpoints/responses/rom.py index d62277cf9..7a15892ba 100644 --- a/backend/endpoints/responses/rom.py +++ b/backend/endpoints/responses/rom.py @@ -7,6 +7,7 @@ from typing import NotRequired, TypedDict, get_type_hints from endpoints.responses.assets import SaveSchema, ScreenshotSchema, StateSchema from endpoints.responses.collection import CollectionSchema from fastapi import Request +from handler.metadata.hasheous_handler import HasheousMetadata from handler.metadata.igdb_handler import IGDBMetadata from handler.metadata.launchbox_handler import LaunchboxMetadata from handler.metadata.moby_handler import MobyMetadata @@ -44,6 +45,11 @@ RomLaunchboxMetadata = TypedDict( # type: ignore[misc] dict((k, NotRequired[v]) for k, v in get_type_hints(LaunchboxMetadata).items()), total=False, ) +RomHasheousMetadata = TypedDict( # type: ignore[misc] + "RomHasheousMetadata", + dict((k, NotRequired[v]) for k, v in get_type_hints(HasheousMetadata).items()), + total=False, +) def rom_user_schema_factory() -> RomUserSchema: @@ -180,6 +186,8 @@ class RomSchema(BaseModel): ss_id: int | None ra_id: int | None launchbox_id: int | None + hasheous_id: int | None + tgdb_id: int | None platform_id: int platform_slug: str @@ -207,6 +215,7 @@ class RomSchema(BaseModel): moby_metadata: RomMobyMetadata | None ss_metadata: RomSSMetadata | None launchbox_metadata: RomLaunchboxMetadata | None + hasheous_metadata: RomHasheousMetadata | None path_cover_small: str | None path_cover_large: str | None diff --git a/frontend/assets/scrappers/ra.png b/frontend/assets/scrappers/ra.png index 551e514ad63a600f2a793e20b6fd803703590f02..34527fb84879422eb057f81d44f20f525f5a2d80 100644 GIT binary patch literal 15366 zcmeHuXEa>l_wMLz5Yc-=Nc7%Ih!!=Xx4{r4dV)a^y|*A*ln^Dl(S{gh^cFp0^cr=v zND%cNzyG~o?&tgAuK&H(vX*nse&5}mXYYMxyfL~uYNW&r#2^reRQ+#!GuK!Eif0?>B|_-}G6I@iDH z4I3y7bcHuM`(d0J?gi(fI9Ng8kUdKY3%@tjnahJx4qvK3m0)YBM#=~dY9L<4A6Q@K zz4%1)KEa;#4MGpb&c?>J=2DDNRaRE+nbnw0hz5S@r!UXFYpH63M0hKC1#zxWOykkp z?q1o^a()+ARY4QxCA)plkK&{*GbYq) z?wPinHe=~;Mc20to*aV%4RUEV(}q5a88!K(&olLxJYEwuFeg5CxgM}5N{lAa{nDjr zKvv^~16K(1kFUS!EBITd*Av4tU+Fxz@byY{>$fB?Sz!+~{a2CiLSPqxq}Z zgl%g($0Iy#mKv2Fq8-~{QN`Bbfi!YZR4A%RT0mWX zFuH@=OJHs#TpzM@W#!X5mg1v*FR0(WYQ(e#mipE0pa@2HJihej$E-H$6-87NwU*}N ze?2a45eHGElI!Yv_7Yj&@zrEkzv&#tew-b-#CTxzufCo~QjnjUPwv*@Qqr`M>Q|~H z*}tD-x7-j(kX#@CG(cthyri+SOcC)Y*f!!|+V-KjdhX(@x9olCg||cRL_H^JwVsv? z9vlX!`||!1-Lu%Rk3Kg?NM9`+mjeaJ@BU4+Ks;?UIP4b zb4C$$tUE)NICdxEgZwMUa}%%}0$xi>QX>cV_l4HRiM|)_On`$Sd%gA!D55hl%E@4} zxBl5W)|_#Ty)QQ%=Rbe=IIAsRM48D|&nW1H?R$E9UZ3`gtM9}2{%8qVD(B25gb?lv z$e~$yhPY@^;r+o@u;ejPZ!gYMaxKd^rftW>Iu$~^ETM{tDI7hVkAY~m=V|YC^uPK&V z86`GZPH1Vc9^MCR0ltt_EX5T}aa}hg>f2M%GNfz9 zWjyO8B1^9uxBZ#RnzLO1$LS5zx|jDby=~Tsr-|xW8I1kn3ErXkzqbPTh1#_6A};w? z)UzIs`tD6wO(`?5rA#MWxv>jHMh{J{{;hJcjV{dOtT3OWigU52iv%vWJGfw3g7^dC zk&>~RFCpS0U}b3}g;;BUP+dA$IG<)re9&@Hv00;52FwLx-yLAF)Wh@%eOC#LKPjIR z1k}77CN_6bu>l_&RMExy#V%d|ewA*KZE^XEb3snKj_wvEJZ8#AVcKwEZ= zpRqa&F+mzV^x=11;-^aioF3{-1JI(sBi_xo&Zz7V|dfftCQ%2qLdnF~T|GpY? z>w)vus=t>IihLgau)ShL!Ch_#qY575zVrcH3R~`icat%8NOa;lL~a3VZk^Y(&$=(?R-gM2#|g(! zs0-dJb!urDMQViSKF>czSZe#RTRs+T6G>mv%p1@PbJ3(X7@4^dG>j9h6gp`+^^G#D z{k$dG>&DFf!Xrpv?PFD~YM5Uw&N)X8^pm$t)DV`5a-(@ZAI;KeC7PfISKF=4>AAfG z_q@R2+4k`VVm1OdCqCj#(;yFuX^FosH&;SRSi;FF4(0&uN!!lfjK=!93QH(k+SJEskF;D0Ytu`EO33Qm=sIb50%~LIr=i zZ`NoksIcQ^yBMjd?w~5RB>U>PXAi7Ld-tpzcOF|_U z()_%3-n~%3yM(jwGXiZJ#e8!eN#7v1v`VbmjnJyi9(7YpwFxVe$Sdi+pUSG7RSoYZ zsFbrb-ez(Y8g=TsVfeL>DDm^$HoHa|%!p}AOhT`n1ly9PS}bzZo9i~3XOFJOAJaRK ziF6WseusNEGq*f@dLq6B4Jt+_=%0E=VIj6X;;J$lJEe>ws@GWdq@(;}7i}V$pmghG z3H{C(_7D;NJAQ>GyWz=B+U!HOH-XuPK)6AY@ zYa7rfg&>=P7DtL`)kU>_2C72)rxm%S!fsOO{-%B@dD`I%W~V$G2^=St@6(e~3sebP zjJ7eJQM0xX$41+@q%S^q#jWtxtbrV?&s4Yqp_Xo__c<$TUx>3Tf169jd`cz})J?YK zTHtvi-0SwVxSlah3*PmYgt|@SiI)fK-QHP?dCsx2RwN#m=<_~Cn4}CQ4tyydBm75S z82NHyhO&pmg=q||U5i;(nqxW|#GG0b6Lz!Yb~ipAU$vlp_tG^nVms~SC#shwVKSAq zs3i)pm*c+l3wzG`d0VAKL5ucRQJ(o@1YgnnSzfS0`4UGVC7&Mfp?hz&Dy!^Dy@6cr zB8yX;MZr_4E)Q(xQ9hW;=r9q3i;DZBdPXIozAbi`-pK4?Yzi(C`Dv{W}a@;Nr`Ul zds@>st>b}mWuTf1g_fkU|potusePA><7tiBsDP}wa>e((n% zzL0@!rC^`hSUt)#SxI)rhhDd$=#CB}F>(pAyp9MT=ZicoQPcA`rUg% zo`^ydf>q!ixH$vJEn9Fj(S2sJ@aR1aLlnPlL!ER%3EbZ3mk9QS^X0T52z8w92@I))jZrhmJr%}_# z-w5UUVZeB|(L*bz@4hLRu>L1{;RQGs8th;tnVda^-s+QnHI$9%$&Oh;F-vbfCzy3N{#-NHMn`*Mc9+gq>ZxMHK@uSkT+?HHvQmbMUS+Ja=(-B%Kn?`Z`_;18QbGhd zdFd7sgkB7^Pw@=#nW)U9h&(Z)f=SLO#zKNs+8aG&d11w8BdnXx=Kz^J_d6Mr2EuN) zM--6+^ryJT>u()VVZUee+k#O~_>Jle+bU-@0zYfQUecw?6r9HV9 zMoWYAz930CZG4ppIV!{3A-2rzdoGjRKc3h;F3?ggg`T4;b|mlrUfs~KgEhN&X-&S~ zZ~v`@p8r!Zuduvq*SKzm^GbP99P_Kd9FR5~TOQXIJo&l~3CU*+%e#;=beo~;7F4B+ zg@vkGZf7KNEZ}m%rbbz7a)t0;4?GNq9>fgNg(bReZ;7am z(1m%0D-ja)V`Rk#y(C&GUGPgqG_5MUKRoMb=$^&DFc(J=8?LWKO;?NlX*f<44!qO( z$&L$_AOv1hxsT_p{NdT{)4f++o}?Kx$cT8M=en|L>cu-4(ZA{1%8}MTW?o zUm7X9GTO4G6M`hFKq7(H1!$7=8kM{5rNPoHIhZQ zqK_AS=EmGmu?VUN-(s-OB0KmwDutZ%c#6aK>ph7HCS}vom%Ma;gitA2+$4Op(;NB` zD)(jVG*2bZ*Ld+eM&ogw0Aurmc$yKxdh;eBmvvg^QR0hPO_`hu1$G9&N$+M4O&tc8 zKEc58g@a|B7ukSZ1}Cspp72b(CeA|I!UKuA(3>{0fT$&?gK_!nc-5urhhABT+YG)U zQ4PV8KBH`f#XA#cO2bb}#|W4&z!h4U(Q&2000}r$Ne!W5L2Vzxb)9Quv5l)oI*=`U>*Nu8(71 zN5@_EGprD|b$+ilKo)#;Z9?Uk*oUZ9WX&!{nL^mXHRe>+s1eUIueDkO*`Zc#!Ch`_@47;wy6B#dy>j=|+|k+#Wp z222vEFhd|AWn<}GSI@(Ia7(vIzV?rC^_ydRACMXE$*~}!2K5?pw_xgbqc+CnOCPbA zMCFb6Kh*%^T@wqMler0j>qab{b60=>g4LV^e==w~H$M~Z^RS#!SdP9Lgv7_ zEqKV3iJ#Y}UlkXu9XqO}WmrNJR@RrK!u?z}-zdr1W{?5u>tPB6nt%(2#jrvqXXnr~ zu6;hCwk|^8CPMX$1_?!&?PF*}YLH)9wo_E;B3XVqg;>Qvp|zK6B1ncdz9XV@7EA%2 zLVjY{cTApEig~wXodyfk7tZ_S0*2xq_}eK`2p%)VaHmuRlk*p^fBAQxyd>~>IP`uI zN=7xxlXClZjiFib@d<6w)GXHWhax#VZV!-j{tJd>$p+hHeCZ_0e}~c^Gc=xjd_G$d zhSzc_N8Z#;mM&S-0<_$5XqEWD@EBF5)cchFc%dgBA^AeWG)SV^2a;O9ZEEa-QgNA4 zdtEkX^3Q8Y;BfS{m5%L)qQKeNghzU{GYnA4=I&WMr+d63`!_&J)w$QP8tKwI*}&Nw zkbPTkNn@08-(i90G8>4zl#7WSoKi>auS%CV)oDqo)^O@M4;Fu8e9118!?Pkj@GZ(Y4iX0`gZ0tr z{mOudJ{{*ZsdWg4DnyB_0@<`C{xg8%q*r`n9h^TwMiMkTeO+_eLvW(=#>82PY1YaM zHDRkaEgkufk%6_TJ76W_d)VSK?>31?ObHyQsx9)qSPKQ@Z&nj?yx>ctZY)79jx_2P zn8rcmoRV0CiWNzK{gplH`=XF7P#Sn)91eT(jXDd{@;z+Fe>>Zc=xjffH~cNPX1Pq* zju)bX`dT@JufB?EY_XmpSbiXb)GIJMX-R#+?pb8(7<$d}6ZQw_pamNAYDwyUFBYra z#Q8s2X6+8tk|S{2sc(Xo?{|xNL;zj#ep(;h7aF8_m*<3Ro%#pUGIHsBi7t;1uUDZ} zENJ|1rC)2&Vto&$iwNFD{-al?Kz`cWAUKH^X0pG3B=H7Dn>djyo3pw9nnl+?n<5gs zVx#xw8<}$>s;0+-s9^x8ULmC2T48SH(yV&3NE1G|W`N*fW{HCSd0iVDeg~~Rtk|gm zeD9HQdO8x?Psv+B0#{#}miGY&vLPde^+}=k5{bcRcspTz-?Nv=;f&griC7J17-|Sv zGiWFDD+~96Ig@Y5o)FMCGjD25WK_iq2AD+E+XcCPIB>(!!lpiS2Wri<13?2=gybq% zq`u<2K%gq!?)J?xrCRuxz#zZ?HZe82FRt^O*?rdbXNECqZU8KfJ6k_V=P-{GNa41E z4n6==3HV^&es*@+Ge$tqQO?zBj9(!?3^MWlaZN2cjk_LCnwFmg;wLyl*ga^$*=Ei5 zE^H&Dx7wg`DeUzG%Tdzb=TfXIZ4{B@GgRWl7YYI^$!qfeSviTrL(YhvomSlJgh?_< zz!g9jEv%X_LM3BVCKud#mcQ%MASd6KAMUDJRRZL< zb*LwhW(Sj(OIJ4HnAsf3*w*r3DfB`XUx)I9CI~%QrwUC|8CHkr+be!wGGJRZA3O}*fixPLlkq2n<AxPI;sxoTbbWha*L?efz{X)L&Dih?XG>$Z4hCqcj#3uC?gFg%QEE<`!K;Ax)&#wLH0K>hU+3=5GaSD&ip{+P}xF;)aX9 zK?=b@JQR&kvEAP(`IM7cSS}uPZfYI2id88aMm1h2$h>S<089^a3E?3-% zR;=RhI6&Af4^wasFW~mHHe*tXc{u4lY-7xzSdh)ves70ZM+&q|*xf9qK2z_!1ha>Ck&P>Mz~j$P=7TRJhc_r99Vrs$Ao`nmbR{&cfakU{E5yyKzU_|# z^Hp|Y0rT2_4n7UqXBhGd;qN&{+Sl?NOMXVK`MQNj{i}=@+-6R-UgTs4|K*Xdq;}*E zTNaCh#K^2rj=z!BToI9?hw37t4gr|IY}R?#+0!HRiUv8fSCH-B{bqzRk=}ot5vtoo zxmGnlR5%XaMfb1x0DXQC6U?|m3IEk>uTEa1GJiVNpM@WH=B4oYQP)Ib>v{I0c6sz7 zZXAT;Ex{G;!kYk*mCu8;AD=wVveaU7HFx#?+{*7k<&-yeaO1F~(L z4U@+)HRO5za*e&!YiMj^lvRkk0=ad;WdVXc2;`K%F|+P=-<7=v=a-29<)K-^KN-i` zia*jT_~$!2trjGUsppX&4;8at6Du)pPiEq0K5Bc?|0E1}$u7b<2(}9D!2TR8lfNaJ zj=DA9#vaEpFKQYIbuF-u7gS~#OcNWrx9{UCO8b1PKJd>WtAep2)I0mUixAl&+yw&d zDMR+tw|=sZSy|B@fDj6-MY^r{ZXbH9$tJPSz*EKntp9M&SzJ`N3ofh+{a%Gb4=FEV zVy{WZ8c}@ff5%rbvsR2n6B8yFGt91s=Ss=i7w>I{3pba}>S`v(Ti|PlgXTAw=(Y3P zPOJyG;R+6@7zH%pK#YO`?nkz9LF{A-x>(c#VLCmph@c4Es#G|xSK!|G(do{K|C=-` z7>XW55O{ftH>a%s1cBOIxMe+W0ewmonK5RAHsPycS3NnHZHy`pmSW&uS!A5hnQJb0 zCK9)|``k57{Fz_8AUi=S;LRwnc;g0xDUht-IrLKgrAhDZvcehi)pCOY5(=ugDF2K1)u=o@T-U z87Cc}E7M9NR#SO!L#=XK(>f1jq9BY45MTByqm*V}0v#nDlF`JJx43>eni(I_alD^kPR|6>cA+xG zxgt4d^z|NSJBhXzxlS;3;K_{Pp8p(^{SDr-FBGDG5`oksx6N&e4S|V0M#o)FAvvt6CZukXd;N;s8X^dI2y@JY9%_z8g({YI? zvRl&Eu-@m^>4=i<>8vJt2qdWOJ2K($Oa>6-Udhd~SiClpS$S+9_Rr8c-X;rBiI1$X91Vw=A(s8MuXXt$Ps z_k#~SXilHEWB*upLT7mhKxwhD4=pzN%zaESYv$rt;&ve(f0FLgBdJfVX$AOq7}Xhs z&alO^o%{&CdEd;@bCt58nT?Tfob}|v0i_o86Bu{iG6SyFM$)PLd`D#}@U-pW$U>LL z?T!g{e@YGdPE32v2*1&P7CPfb1EtEUK%V(g%vnRfHZ%0dtry+L3+ID#HS1jwiV5n> z4c)u$9)ZrpiuF9HOHeX*&~!hl*T2vF#X}>T7t<7B96QESnWmWkrD{B79qz2cSk%HZ zDe+f^SI)1qHSDs;u+IAEarZo-Y+QCYwQEEgF_6PKI=ZQ`(KHPL$YqsNt*vT(Bfu_k z-QIJb@?cJ=ia9hsue+LhKkQ~HJUykodroo2Vp`65l_v7!{wZ9ZVpYJ%LiyI*Oj5;!^uaj_Pv+$fQNcmp2j|lh0eWkOn-Dt7sc|ptHl)VM1Cs+V6cgs zlRE$$%)%18c4;#mQJewE=54DEznZxn%rmF2cK@l-@>07>8%RzINu4R*MHnLKGg-^2 zHbX7PC=HsU;$5T7ZSJ8c0KM2LBPQ6sJeF#5Tk;s$d3Tgc=9b42M#Pj*5`0EXy>Te6 z9uVO1CrKKJ)e^z=^?e3B&p5s#rENuLyV&;dLoTpYL+IZox1Sn!*;#G@f;Cn+&|->n ziz}Y#x6*1(C+(u+$Jv#swQ*Ex(Li-Jym9@HbQJG9-_HTNxI7@ zoHf!m4u!QDepAn<17`740A}S^VcTbVf5h~_AHL)H9OK%{&i&EpP70~Bg z`tntcV|E;$fVuJe9q(z*D^jz>*S9`VqC~nXXKK~m)p(~mK_nr&T^wl&(}P1Lh@5{} z7=yCm)!{1ejHtR&yUk?^uumDi4V7sqEOKT=z?LUtPBo2roYQ}`$zsJQa{eHsrwUxh z6LrU{=-mV1&W2DadpBsaeb$l0`3Bn#{2IO<7O^BXaeEEGosivncf`q9JM8nUyIrj1 zv@Am7XP1Z4b_)5tl4Ga~u@__Nol)`tjB&rleQR-+7yqMiq)BsX?gl7Zm2f6%bN`V@ zed|jJj_4LXwNa7Z3oyE3kY;Ga;(U*Uz#mkejp% zuj5{2d%|+LXYZo4tkkt^m3n^s17Q#<4a5y+G$ zhcVeGQe(#!4W0RtIklWUptPNnJU7$)EutW7EL`9urQ$1h6eiiQgQY%F0 zx-H+8->6E&*wu~9h{#-0gFKZZ>R2bcvFFB8c#)k9Ni&*rGZ*T=5UI;E`dqZ5XQ2yK z>)pu*b}DcO%5?IXR&kx#HrzQmKBTMyDeu@NE4su7epp@tXd+dZOmLcbO3Vyo>|y$j z#9H<=x4TijvWVznmo9>^;OY~Dqw?*0z3*!0 z*ZmzD+rt1M&mAJWt5rl9?+}|hEiX7l@-8qV&N(FOM{@dr;WMjEqsSxI7l64h@xJdI z8t3m0$n{|hcr*TdUKs%;sjN3F!;VyoFp4D3Bpy*bu%QYp9tWbt0EGNS!#AIqj}l%pV!36{tt1{DMiJ;iz$r`An`cNh2SW^44SdRbb5#ygbq ze@X2!!p|90Hg^vU4~dblM>Lbw5GYP4I%$sJ;xPlm>PUDUpDr1)1+li?D9NOQy6grmd+uIP$3_gO15;;u7(_M!a>CRMG9IYilp`bQ9Hb zu-HZnR5O`iQfjJ{ockpCvzk#>x!$wv)-SjJI<)Q+Tz_CqAVW&MDm@^(ztK~HWKl`i z=eYMLv5`n(iwjpJjd)A$HZR?g@E`9R^azyCt1!^#gLz!5LBM!;8A7lDB|hB8P#Z=s zY%EF5eFA-&#|%5sT@J<*#Ah(}359** z`M|4X4Zt91wA~%3EQ8rBY*!{1#NkeIJyE3Or1(?!0;+3vVT{asy+)p)TLmUV{%f$& zv~f^N_H&sxtic{ea!OKqqRLI!kK8TncFb$jR`ZA*ctAvNkuf4Upg zr7)X+*_uURZ>h5S5#L&}KXl<@Cz{iJ%rG58NAvnsGzn{^-n2#fjY?uRi`%jGhLQaU zh!{;-uqi5bI3Zo#oX&tdcz5PZ*@r|l+}8(?I@R3R`@Q=_81PW2YcSjw%a2&;Q}O%1 zd(Oe!JB?9}8E?^zpSQEI(j-nH1~?*GosvV7HW|O%ngpNgy|x26Zrk%rCNbOW#&uU$ zskk+3a$6tNx*Ct*VTbNC3O1+*;iL^&r5i2jiILMI81FH00Yx*(CfCXw~hQo{a6N%7cR*o>lD~s~yg^ zfS^+C3&v91e3uy+Y*qE7F#d~nPjsWwFs`P9nBd71VOG(HrP~<^=5%fd%_AlwH@nP7 zRW7vG1v`M@;?{2@y-|#p{0wT+XA7^=56SsbZt#gaAD?(j#E@q`LEKH6 z2lnqs=W|RDjyqXG%{O)ozw#3Mi?awwlMou`5s{>=HKx{;*3ix2iDmS3 z_@msa1(4XHBxcTzMa8J^iSTjpO&0m5C!aJ_PKJfwkc92{YAiG@j3;zg%l*&`z@bqf z)!I4C7%=`u{wZ3`)k$@e27hY8uReWzCx^1-4Z5-aevJtW{cvi)sjhH?dHFUFsExVQMF_fL)xUA2gf|F1{m|(<-cew4_7P2%{W}_vK~@J zMZ1Z+*#WNhzoS?R?p?j(9MTaJ#;G%S{F`nZAILC$0k+#jC4dk%ZKUvSf5$Y-MM4p~It9(?m@V$1HT zVXg*Ru*zjjdjT->73@J=gcSyVJhLQmDQuG*X?@A}vwj#lb72w};C+++@>N%d;jb{x z)1d&5&( z*jnv{1Lwqkfu9GKrC0%bJRPx}pwLxTIF=T`qt~VXfO@Vh$cF1Mp5X*}^ux}gc`kTt z?v_?@csI27RQmE`Mh80~lJ4mlj)^oRd3X+?lU4N1LnLzQq^c;A7$-DK*X}$T9!Div zGc);bBc;(b*QtBZmb~4HO5%6=T!rq6ViT*IcDqE0lNws({sOu6j_9{nuI3We6z!Hr z6>k{To%yE}bYCKo8S?#v$me}=$M33A&GZK6fDgBugNbn0HI^YfV(jMkvmKWP(G?SS>H;Ei2Z&JXQ0)# zKq>1pVn019?lvP(_b;xQ6aYjfhF)n8eXSTUng6*n>k_6Q!wqh_sT(E5d3sb$+~Rqb z!Fn7HDJl~RQmL8Z7XFFwUjIVG4R(QoBK>pSy@V!|9e_=y=Qg~D|7(*ndumhZsU#V6 zQA0FKbFGCQ#h;6nlP05Z$fJ?KmP@zMIq?!Ce;a~vUUTlN$6Lnc!m0c%G8fqo9A?C{SJ%3!{< z*1E!p!!Ea2B9k?_%Y^U2k`ZBdA-9;!X>_#^Rg5UOJpHN=vTUb9<@GG>;jc02F8%|k zT>xnB6(^UiDdAjQvp zzev40uSnyMf|NFY*3zT?qh|P!>oKOQckUeYQ=PBO+SU9kJ*~FM3(+WPE&WGVx8cM% z?KTYOYKAK42+En5U*9;!V!NGeZ&y0%o2)~Yp>vT&g))_m5@o_#L`aW12kO~rSfAA= zY9LnzoU#)eKSgU^Gal6F1@RQud@#5NTirk&WATfPMJM#;=+F{}z-x)dThrF>U}xYhl}Sxu;+v~Dz^b|6j=+B5IYENX~GDkJb%`lO~CgUa3Mg&=J{ucL0Hjie%frH?%j|L+e68 z?Fb+7qraWu5cEIJAWc$~Z_BU>hV~tKy=`=Insv&J6v% zkEz5ssg?_ieH$l5DGeokAPIrKy+)nQ6ad0+65z81mEz9aV3ZO@tDTk83${9R4L9R_ zJqlEVh(Uudhd(+#&~k$n7;m1QUL0$pBMKqG#%K|BDd&0V5z4$Hq3N{K6td2r)lxa3 zQRGo1oJ-R{7~g(AX!o~kndi#*QzWTJ=I1Kj+0tS_=OK6V;#3I8&~)dYqiH^)qRC;1BA0jO9LaktLoL-d?jlrGj& z{-<3ffEK5CtBG5H^G#xX8E=0?>c99pb7nvnU`g9O*7@k@XE;RCoZ$RElzMi{@>hj0 z_yo{!?5ltARviyYJG$@{nN=i3a9O=A;jbaJ0ckD&NQ~o=Fma>(UK`sGzl*=miPrk9 zaO%f;1mA|2#IFxCn|x?aVs0=UvTsACfeq7@yN6Zjsab-|{oSLKJnss1Wl-O`!xm zz0M<70QLxC58)uL9V;AWqYBavYZ3JqDKr{ZyK>Xw?ww9dGe&gjeYu`1dEDyDr9voE z+xu@@s8XEr48LX#lIML?TI#j5hVO_|<11|SJ$>{5!-nU)j$`t8IE1rKpoG9dSlzRD z>t9oVNpv!sl{akm?{~1!C?lel}}r`l&_X)$z=?FT6`vj2|tvm2`o;=$uL8 z;c*{DQ!F>C7`AcGI(_ZTW2Y8>_?H7Pzb`GjwSUA!wTjPMPq_k`CGGmTl>mPqAwd-bn@Uw|B7sK# zj5${f=-!zUR0=k;U~rkV0L^`YE!p+482x$*ZN2&)B^GLYU@=-~Rz-4@06yAn0q{1i zE^i9b(lXM*(I1LmbqN3@B7R$H_{x0B@YS!d zi!Tw-2q>jT%l^$jEJ?0J!$<%N(H4)>E7=&&yk=a>{XaB(?E+bE+<{E``MdO{g43Y` zZSsmnOHoCurVKFv!$g_)VHDFt0nbv^&FT=YqO{snDR2E|OTYHaB)o)zCjVIeCsU=# z4Ii4!^g8QXeiL9Jz5P2z{|j72&OojVoTqS1n$SF#HWw;ZnqOmh0Dr`>e8Bp^dP52r zMb>)HZwo2w@e9ruH9qGbMmFpi1&{6?rga$81IciD{F={QlhoEhnn>W%LX^VgQX!l9 z&bD^|!h~mlv1(Zs<#l!zbPsnyULhic7-!`R@T4wm=Uo+fHUZE_UOp@<0a_IB#F|IO zi2lxBTk6@rcYOHw^ycI?p1AvKK@AZiArx3^3k*X*a$KR(Rw{ktnr9YE$`db7kx=899(pAHtK5tDhRVoOw6jldX;DnS8@6$@Qb<@8! z{Q!UDg-2WWffMFbYUFcioZm{Ls2r(~sp)S60V*Qo0Mku6CeME0|>lP1vPu z0?7MQUKm_+Fkgu+PXH*aSu?R4AVLNoxfBo?3zc(%B1OeX5;%&KW-lj%nG7gYEz< z%f%*B06x~07wi2=tk}RIG$tY7+!=8CtcxGGaG?OspMk97;3U9>c{p$m4TNUH0AeT_ zC@pY-AOy}hg5WCX|3gczfd6b)F8&hF{%3I-ngNQaNJ+C%nDb3z#rGWa49|_}`EL&j3u_%ddqx%G^slx%Sb|pg6C2IV zcIn@O!W;%&ujF3Kc>s!UJ`jv$i!h!0sL1n&>iH2N#951IbaD92uI1a> z&$)pUBIK`a#pRLSZgzOEyifm6==tSLXNt5#w~VXkr;y~}3Lqo#M5b2XfX z4g&s;c@`QRD0{4NQuXgPhRW$$vzPEJ-E&9H-W&7HX&@1{c7r@7!~vJBYjgO*Xm;7u zB3GM0cXt%l_4FbJW(E@jwNe9SgocHo8LV-qHvP>#bSB-mr>^0Yi&SB$0!0?8!vWEr%2*V(ZCwHJ)V#N~RARt?MCGeWEID z?D>2fvlR=%Z6g6annP^O9I99?cG(wV-+qG&M5g~9ln@W3;FlwrRCpbTuSi2DV1}7$ zUv($gh9sw!T-7H7Cd3v#lM2EAXp1}`?#`wiukM^K{cBF!J$zHRMmPPR`$3`8>uRi+ z!=S4$zn&W~yUUvCoqY8LdC7J+P^Gy!f-dL{?j&%#i??KXR*K@fTYFWjYm}FnqpD z>D}W4qD+&aX?e{;9HUvqr-htH(JrWu%=z^qdWe zCbbLbE2}qap)HTBB=n&_w?E1QmQeNn?9bgt+tAV=H~TCUXfcN{L!FP5A58?EcIE9~ zQcoN0WCX>_yeJK2b69a%1q}fGUoiuUfrzdKnq7ye^QzRWr<9Ij4eS_^@(+^Q9}ju& zaIaT!R&tj3f>#G@A*(m9N6b8Z288Dr2L47#%PweG$OBY2<4g0JQ1bi1hYM;%mY; z;@c0Kp$gBNJ0Pahdrm9rbbBp3O&*<`C9lA%Q>=4|0Rcbb;t9AizO?|Dds}x|<({BE zR|?Z2|7k3Of@(v}EC!~{f=_0|e>#7KW`p#3bQY$BEMEO=k61n&3L&Lsu9tC^$XPex z3zB9(ky_fWlu{Lsye6aP}@N++Has)5c2e<-fKUwb>b8xpv1AkmjT zQ%y%uaAdL3vcg35Wo6Uiw_rVH)!mftVw-jQM>(p{UU3-l(HI!sw{oK20`RFh)wiO; ziAz}U!S!vSj==&pW`d^&{q9VbH<&c{J9~!Ov=R>1AcwGZ5TUuCw0}kxk%hRz)}JSx znXPA_sBux9ioGG{TRxwp*>6`Rsw=~EXXaPU~)9x(lEJm`2oO}C;H&d_l z-?qILCSqmR_PJ2TObv{$HvoMwAXl9J@v(U}@n6=#ZN>SY!4ika$ ze8404^rx$TKzY?kNFk{An%{d8r!nikrOm#d!C&K&Xm-8tEJnQJ8ZT;_yPw*r`(2(&uPLFdq1smxXUVEN%0sxZ%A1 z!c00w_FxT2P-u~aDHOzyg zb%cv+|5$6g{#<;*z~~|z21mJdkH!eOab{@47XUT9qZeKB`}s!Jelg8ZfsO|>qOXhl zodYreN?+Vks-B|dgUXvwHJlG1f+L%_kPqcm zY;!8Cpy8Eo6$8RCw%4}mR7Tk3mHXKB?7x2UdB%DGwz>`qG`u?^vHVLpT68w+yWqsX z@QL%*?V}P;xmfyLhKX;jR^}DarXo0#tFX9F6HLPs(;4s3!JW_TbX9oToI6h&XHU5! zl*d>uFD?+glaK5-Iv_1R_3K%GL(>pq-!W&nD&+4d~)tjjzl!lcy7TYwolFQC#~ zl3gnJlj>|gjW^FHx|S$^-bcGijvYO;yy|Whn=6+PYF@nwgTJAfIW)*;?if#i&v7t0 zk*2iI&|Uj|jGw2W!_6DBN`W2}ZtZ*A>~mIR0V6ZRs9_QX?GuOGh+k{lV^dxkpLQBx z?0U@j=59(XwcX#nd=OGas)rSzJwAjUPLooUbK@$DW{-O6{HZ*^0+kK=W_PCnbBDk_Yo3*TKkdT4mnc9wTt6R&0p&mG#eV)wH~$WY;i>saYiJJ7O1`p_kn z6iLV2QV93(ks*e)Kb&_It$r0`zvvm|ysYZP%2cZ|P8B(MSAx3f#bP#zoA6!r^_L#^ zvp4*|z}7Uek3z#$5PjSd7lb3gXcz0lcY2Q(`t1~*hMK)XF0ITR2P|~_ngHCW6z$f% zB|mhv4fIbI|4^NjPREC7kMKm4itwN96-&~FylhIv$fabIvLJL8Cv$(oE9ZryXN%H;)maPw@++#Jp^?G zn9yU)F*-l>Ja-z^?Xy_F#+siKW^_d$=uXgypeBb$ve_9@IyicxyTz-gXn#t07&J zzSVzhF1eIKg?@Yw9jn-WYMU3?FB`n%tN22!s7meMzqoSMoxdI>61fvs@s5KJ9sp=m z5IOAd$&=PsBtN+q66~tKN`2%Dfb@)Y}AEYS04tXXn(jx89 z<=V9XCg2gG(c9rEqh*s<$J49sP|dIZ1p8skt=mMxQG6H{i+(@;Q@9{tMX5(#xA&@R z+nfu+>Ch}aX)@YrNOca2uTwR{Ecu2wA3MTCBxj>g@tT2aC#uEM`(+s(>m{2nGfC9U zBd@OE99Yv@OdlDVL>&0PXSlmmS15bfF>M`!y<<1wN(=qZxKbvqUG4^17AP0cn*nie z6al}^2Nkex5bbWw`8OU~mh+@L`qbsrfU?8R4&{f-yEl6LV+^TNVh*gr#{>PPqK!t9>;<7s%7~8gj)5gCQv?}$yoS`*J6Di4gTCre{k*>#a#yp zhvAQu_~7f9!`3{|su`vt-FIE&3Hw%z`Q=gLb#T_+=Lcs+KHaB{N0OwGf=OCCWsCo4 z2BOo|z=&uacdkvh(5FS09sq2dhH2N?o-6W99x67|^`%!SIA|~;dq9Lc7=F5C?ljwX zx#+6A1wyr0t&RMJvbj$7Ee(pF@%PxMyC|0EbD~g zBmXQBKxX#FR|gn008fvzdkk89R}pR6C8WI{$`h@D<3A)-{9dy%x3d-6sb9RUcK~o} zQYrDVMi!!eqWUaUa@Rc9a|67zQf}?=VhIa=zS6mz#5?oY#R=!OfFGfoZRrmxn27SI zZ|e){0-`vfxLLmOs0M+^N|cS@+z8-Nw^DP<{;+0L`frIh3$+m)=!cR+QWLxG}C+9fn6qT-)%Cvo3$NFk`%CB}{R-|GvNJrUMmT>xX@t zG6cVFYIls=Q3f{OPWWv<-=@K#gOa$N$lL1Y)ay<>iTrQvx%2G+5aD9(F>9YixPnLh zh$vGfQvz>gChQQEqL*#oIa8iBaO^oFv`ZCKxACU@txd0p>-9}KkINtZlyz&S>a#dS1@F5bTclW~vrnRS&gia;Shp;rpad;gcr4uL z?j@#@$zLz~!zv^FVK%k*YXbgLx^aEMuBk0@Kv!p&IlaE6ygss#LL*Fny)@c~&4Ef@ z0`6g%n+}_J&zg{WB|Qq%m=1JHR(Xi+w{0ef_Vrj@zPTg@E$ZA~F1b07pB8I=pI!78 zu7xMnjPC~}%Ral1D4L@JWhUA&f1mdt>hyEKX7o>GBz};j&jIt(;GSv0^OJ*wtp-cU z<6M|?6!$AcrJvfu2=E?1#t7X?|1m{@>pg&3j}XTnP3tKe?xK;%mMn^@6Sanekur;RPbd4-GA{!WsdDndE%!j+ZFwsKP-f8`2katqBI1um4Kb5EmMm57}U2rxw zQhX7JZzv3(ZadIr?y%Sl+E*>({Yw&Q>Ufyeqw|!sZr()PJXfB(Y?U!P>h6-|yOHQY zXn+yXWuhwW-ySN0gH}d|a&)<*(T0fH@*w11Nn!Sd;!kUKRC$?EU5#mX2UwMg;yU0g zTfaYnl(z`Aiu=2_UrPf##u@j(<4UX#R=~FNR=!!p{^Lf_3s0LPP6|@)mHs%6#${^!^F<#~nNg3Hk;fup9)U-*+hz&jqxP}Aj7g;As$%)+ZNigDeJwyC z+VB~_D*MDZ&}@1;qad4ydIMnD*Z*?n%x(Gry=}fc{p?jg60oM!9>%|#RLwu@JmJ@N+(Z*lc5%V#tD`3L%X1t$ zXEIAG8OTqS*}Z0V4KpcZ+h6E|wFPnXu9?UeTtHRH{U+AY zTGgSHp=_mY(BZS;)myy2eJ|-xdz)tV&2I97F*cHnM2aox4FQ)+S6CtXH||Y0y3a!D z-!Q!C_`N?034{~d#pzrWQ7396Fe7~=pR;|o3NC>#N;=I}Jf>1zUQYZyg3JzBD{iA6 z&`dz_kkscvN;yNkEtgD=r5pO=7GN)oFh&%J3%%b@dARa;$O;qaa@H9NwLChXuLa5H zd<#4je8Yr!42kaF9N!S3@eaDA#0LrwE$gz=(0TKGaKca9wYoAH+cgHHJzja35n#I2 zWW3q1o#$fF}y~v+o|d z=t(j&N2%-B!g(UcBmg#GO?K7tnb{c2;|5J9NPN$Ed&YH?tu^Miw>*ZNg)PGjwhC%E7k|+DdL@SS(wUEozV@!Xm8tIV8 z!;G?CoUgg*qV_DgXXn-zuC>ea+VVb&F}9`AjDpNm4bT-DTrNmg6mu()Fm8C4-6^1# zYqzhVsy*q1zwfHIy~Gjbh+Ztmb2M_ZAh0-HoBv9*&xa@B&N<2}4;{ts;20B8KWK0s zXxnnCdrwX@f7y+mbo^j!(VK zg9J+a@RB!7Fk6tDfls^HZht_8RPMzsYkRGoYoF4Nqi2UC3(G8rccl zr$71}S{HJutEX~p>se2=lB1XmPLDDgGZ)oIJ@Vl_qR%*ukWU9Px~)tMrzyYsxB`jk zY2$r4TO|S|$hys)eEV;CCAW4V+mL%q5Nr3=wG=dmKAh78ESCTf1{iX>_cd zy#Gv;{>W*4B|7e)M$E9D-Kbx-=iC&`>>bV_o)W)$ zb)R8MkfB~2cA4K!ENaBH1nYKyT3^<***mphycGF7SZwmT~>EDU)2=y?&H1gM_)K%YAMg9*$1#-5mvvmW=^0uY;C*AV~3&w@DGspvJn7CUjEVdrU%<1egX;PKOI|{d7D>tqtj}Q}vng znANzu8GZTH+HW}#ClZ2{En4g`iRiiMf01%q4b{7g4rp*$yiN?>=r4>jx0e9nUlata zaLCpGW5CyKVQckWD2WMN|CoUqBN5w~UlxkU3p}vgK!;H@jojk3CX70@B{ts?{zhq_ z{yJz1xe>kObuRw$r>KJ?C6W+cYE6Z=gq(?6KS1!2A&1=YN9PyBwYD@K+>A%2XTOA6 z2KUnK(N7%ChVWCDp*BFVybb0<*4+{oAwQ6dE4(je-((FRV=kL!Udkse_H+7*XiLzzS}%t4n#$ei7h!wF?BKgJkZl?aEZRm4=-5a!4=O_Yvc zG+V8j_RUbMe78PgYpzlA&$GpPy7KMypFvO%cwbf^XT#8)CxYKV$#x|M&I|JHy8%;o z?rN?ObzpwkpN;oiDHehLDm#Ufrm=-;bZq{bh8P;D2CZ@$@s4^G)jRbY>-Qpt5U+qQ zO*XsGL^4ulXNjSYOlnS2Uv!i}b#dPBVkB@JaK5rO9Y-aJ%)h>sLx(pxh_#6kMy|JK z(!TI_%mF%zWx(7+(s#6Maf=-8MSg&+EmS;8YFp(qV@P#M^VaTZHD~5k`@-`#o1yP$ zj8ornNLo|i^CV-Ej?Xzu?pPl^$(gX?*`=dL-=im&iM#ZW=7>8&aL&D14s|?@lHWh9 zNZcP@$z3$|T^yjx7*=?#VJ2e}a&34!N-`!z1^|EZEiK!x$*67KHSB7#v?9*vV*l7i z<{(Up{?7Vpy}v8zJhue^Z)Hv2Tx6hT%KSj@rua~{S(L6%^2oa{ZjRODQIF zkeFwv?44?lu?P zP6H|I_+EuD!yrapm6sI{ z(}QoA*=HBN&MTja#k@}^-Z%?N35?f9R}*k?El!2$(H^iA=Rj7FoRwqLIy407^aj4C|KY6uLpPyWB0K7?{!NaWTZIP$%)D*q4 z6mdVBX!`=`ZiHa;LLWSkv{BSXA6Uam^l~<@e+^*2ojxgrAvd5Z9YQKE=GIL$>7i{m z`4Ymv0^oTNtnGNSrRnd5mPJv3aY%*X$%0`y>m-`TPT`Ks$VJkGyYdsKEk=Pf!Wv10 zjNCTzfdTf+mm$L%>I((Gc;$7pCT=<~KlRF1yNqhLLB&$6!uW2LeVXo}_SRK2j!SdC z56B{#EYo-k#_*;VQd&w%+8coJ{2!fR0vhZ!;H>Z!vtA~*N^`GF>ldKp>*FQ}0 zhrL*>nC8Nr^F^9~w&hRlr;AqWDN!dXCy*wuP`AIeEpx;=u0lEA#T9Eh<2~Z7vH<--8ulEBrLBbdZ6^htx6^A~AEXku zznSR09<A zP98$CgO`ehU`+e!@g$0M3VO#60@jn1_~rE_^NV#UN3lbN{Do+qhN&{f5f-D3#1Kd7 z3_zB7iJ86<7ci^{WL2m84CLMY!!ovj^Kj@Y&Rl(xW@XcP;oT=$ALV_Mp$Mgkb{kA4 z8_x3JrJ+5!EnAmeqLNODcTLJ4h%{FVQ_c{w8@0QVE}+i0f!?9(zvf5Ls{!U#c36J= zOT>=kxs#m1!Y}%#jP{BFd+sa6YDB0`62Yj&cZ_b()x2BAoeOxoMH4`qOpmEFcAq|bF9nkX z`8bDaJT5Quglp41rpV}K$@onM9wws~7C(5MA^p&7x^F`;)TedF-(195h9EPWRXJ4 zJuGflHlbz}z;g}LvTlTTWqj}>|DoyPNC+z!`SYnnJQGHbCslD&--N@NBjiK|ic!8- z2(+?Ce4iPk@9@HnO6@VgH9k;#FWV)t!h;3In%=G0CfRifK5#7M#)C$#d?4RYkDuUa zfa*J1o>qVFYYirA9?N5}C>rne&mvH7Kgk(D%l*%mi#;~^(c-O-3?3kB-UZ@^h zPCAxx4>DqDxb~1 zPriZ+;^4|Z62v&RkDZ;Auel_uZVjSUK#Yh8wHxlG!fz40*hu?x61oMzz`- z{W-icxKq)F9@@3PyOh8~l-4Rnh9eC2Js@m zwovWzn#Ms^m7qb&RzP6$$f+m?w6821$NcInzv8F4w{DA$y9)HM$Fv-gxEK_mk$V|o z)8C+Re7RngM0GYau71*;e(GauGz*GCJ^-}jR|(hq-(MSdaxhgKOQ6N@A}+>lKCYlT z%*b9DZ>w8*ClKCJE2uf-y@>&NZEw7Bl4(e$=lV^^Nc87>7fNa(zm5~R>P&J^vx zLdJ@)p$2KXmZIQ!5;za!vmC~Xixpg?5ggWTnBwFZykmT7p{G&!4?uqk`g8@w0<^M3 z#UA+l@z>$mh~n85gK7U=@uTVXQ9@ce)VED-#-4yDa;fkOpAB<$eV+GU!MPffy7mg5 z-bVSf_-?PAP2le39?mV4L61wUFMtw@*J0wqxCCze zdEr}75Dpjf>tbVkm1?~8XN#orz)#7IfFRL|JlAfVtecAeiF$k$+u3E&} zJq^WI0Sz-1e`nL~0?5U5=a}o&hDvpBJuN;$CEW+luGsAcG#Pp4TQ3jwvYCt^YA#bm z@}f!)qK#leEQ$lucIjVX zw{fiQ{t4$QDP<>f>437a*^%R?_+lmm@D~3Ql^SFk^y>?sn;#GhgZC9SDn3QWs%%D) zz(j}HcdbdL+VZGDutf3MStO*{)~qO;>WsnM{jfjhB{EUFG1fnRsisD3P{uPR$J^&K zO-0F&6!BqNnDzIix|yDP0=7Ydc(EYY=ES(?g7)?DI>_ihN^_av*{YoCw%iZg(|NEB z5#-KU3I)DlB z`G2*=t+I;&f`ABtcK8#(C#tZHK=edou;WF~o7$wpy2`#U9K*eNuLAjwv(43xr(gNd z>vi9xA-?baFwLudu|E7QHgZ#N;&19rnF`P^=Q|r2#R66p3GUl^*Z&5UBl?Yg0^q}A zqOVT3PQ`D!`I}55N4t0}(Wqem8Le_xPUR3$zdvIoYAVP-r7&d$X>0Wth((1vaHlTo1dymwCm8+Wo5t6w}mi&7`y^lQNh1t!Hy=vBsDZSBBWgqe?E!s5VIbbSU$2}JHPWO#;#4_>?GeSk5@<$H-} zK9C$9eNP43?@TJZ^C3fhuA$K#USS>H;CH%DxHsp9oNmr?FQynd2R)tdC z=CwZh^W6sq0eZni5LBx|AS`?zz4LWq17bU`Y&W04cxZj_(DJKD-)kUtDOeMN)p^nS zm{lh8hSl(&b@dFgqGQVa6B+Fi1NL6q{fwSl$@ACjy=2ZMGUf}gWg}mN;FS>+-t_<_ryIb##@eDi+)~y~E(ncZOu%|n7Loq|939_8ERJWK z=D;*DLFOZnso6-3tLdb~_+lguIAh5(%t(!CS$@|P_%aGof!@$z0pZWWi?~_tp(R?# zGg$1HdeKAJS}-+kJs-joa5>ll`&DTo7m7#r5eeGCjQg z0TFT{`JTb)FGq4vxSJJ*?9V$LUM3D{ZMCC^C_kD#iMm&o8v61qT`z~3i)j8>bBwCJ zm?6tq+;UQ2tLn?Vea@ zxp7AarRG4j^&w70yvvx$0AL278ru*T9%IAk-(+6eKc*}UCTM8y^!~iiqsG_W;JpkT z7$y@Ic7@cwb-Yw=MUW@!ExChMKGahI zCv>)vlFXQ>O?dZV!05J=Gfwt-f6p<(fM-!g*Pv?+gGs&90nE~R%Z-Oc&ejjk3?ApY zK6P9)*95^gGK607H#54V=4Kr7#fT2;fbrKvaG3jB&lH!Qj+y#U$ift1ki1|w9|jVn zv4Slu=7_g-@1bw1!-0bu)Tb*+0tZB-ZO#sqyqqZzB_|%XjJo+&INTj=mK!ky zLX&4ii6C!<`rqPnuQTAPuP-0``1v}8)>}^!jv8#SZ_IWx1%>}!-c+H)^zV4L+k9J; zK5`smxQ6)$nCAS$&+~glHSuG z9Zc1H73U!$8dG&?i7KDGqXph0)IJ*JyIR+p!8l~b0)w}nvnX6vfwKOMOAo$`pds-5 zMoa9IS)3Uq#w+9`n)xBA!`dFe={gr zvgoxUm{8gw2S0iR$<}9CQUkuRb(PrY)OMxb>RV*0nf0;$>Ngo5*6;-_UE z?<8c&pk|X6-2hbwW9@b>U2thoGh!vZz2)$;SDYKCJIOgC!W?C|#K(-0 z4VENn)N!sJ6)l9EeUwS1Ug|Xji0sVDp=1Blx|}xb#8G+FTcgV7oLldsd7e9PABPw* z;yu+@t|5=d%*WgSaCPc(z+T5os3mXnr=NDSun?hZIND0agz1c|2;!BZHFY9Kt5;fP zF$CbghR$3bGF5LF1<=HjLObg|0en&B%T-JdwzWz+k=mtMJJr=wx zXtiO;5?Nq9G@y_xvntWl`O~*RPT!{QW@%_dfNafWS5lw|B-XUhBdaG-<4N7Qr)26l z@84FqyS()W7%Pko^U`>l7uAzj-x;=>x&m+Kx)S#3isGBzVOzqWIE)pOXm%TxMjdqV z+HXW-C@zQhaAsXZ)Zy#Yw8-d0`jff_oU;KXKDq_u^#Huo_RX=b%TWurZIxfG8f3Yp^zn-N`Dz*wiEu~$3HCrT!JMLyWpAXVX$^UlT-i}eUKUfr zhEEx5uLQx7c*Gw3_#Ay3L)-fLvM`nldrSg&BUh)rd?Q6&E`|xcKRi>e&F>3ZWJNqu8)CvQB4R4uWOl_es2G+^n^uUZ1 zB`!H18oL*rRuua-feC`VMXJrqY`Kn)uD5uhf}d?iN5G&nd_TqX`*X+J%hy%T$>8j` zc*ZyS>eB(Pwd}?5)TbH7M(l=2wNQ%sFnAH< zy+cDPoQ&z2E-oG;Px&MLdI2q8o_iRKJl<6d?4-Q??uhrVCpB@TIx@QS)Q}r5V+2Tt zp6ztE@u(8=1yZU;%f41kuqorvua#hFa)0KvPX9Fj-asi-mfZ-U9P_?{Su*%u@+C0Z z!x_0Y8a|+Fp`frF zNZwa^-#$~>v*BDxE@bs&V+gjrc^bAxx*0>gD785x`^<&Ck0I+lyj5%}?J8Mj@J9V8 zP{0~Id7~T_8*vJJd3@lnqExR!(V84^j*jgO8H5T?sjZ3Kih%jhU?I_-QQRV{a z?^YkcnUB39ljjx~m~aiO`a$`u;qTp~#+-H=S+ne`xF6ebL=-859D*K2;e@^ffH5Eg zgaen=7eID_-jMbZM!W$nxc1P`XmNWZu8rQs{RHXrIu+iAho-rX0DMGv8xW~GdVA{QUxmGUs)53y522rUL^o8Q z9Z?hKI`a}ofPV)7@Z;RV=5U+KM@eMkS`;seG*t{CC$MOVaKK+;<}N|epXDjvE>nZ_V!+?tqA>!vb}`Q zt$)eZ=vY*PL3DOn5h9DK`}v9PR$&vf9HaG5H02f~64vjzIiD(1EHqP$_BF zmbCr5<=brZ`PumaI7`TLInA4a#Jw|fE-fEk{8|Pz*!k-Q_aDvda7O|z3L-Q00gDR0 zzrA&P#-iYxn~%*B$Q$_8F_eb^wHC0$+Vbdm=w0Gl2V+M|E2d3F?2Oq=%EIakQmDvJ;1inh2kZ;gO-+4qrKCW7Fh)|0%;DtN+k$o36s&Ml1w8i7p;4__=UyYS9w6vS&I)*Q&9`pA+dr_0KH;~{F0&IM&P0q962E5o6IeSdt1VUjv3 z((TOv2s0j{s3-%wvTx`kS&OMPWM@RP3PJ9dmZ_1u(*U$@WBpgcSJhIRcTng`lSRpP}`A zUK{M3^~QcWsqe{8jPeA+aq;7CJ+v?HZAP*OoM$aR9?>v*avp~|4eL=_YX~p?L_X;I z-*}%XYgW6Kw`UTk8K)2{4a29lbT=3Z9F^^Xi4uF6G9}!6Lpa2w4UjeK zM0$Ey$Mu-l7ZbEuaBO0+m3^9O^8&3_&7A(27eqL={bzbO@Vp_~!s}vw#ERokx%e*M z6CO;|lzI0WqV4}B;cb@McX|wXl(( z%+(-o6}Cf;*t3FSmL&^4n*_SMpLtvb;@`m1JiNi)w12oA)^*w`=f4_FEeK@7XGu)~ z-Brvbw-bPe$GZMX82A088U}U-{8?v65#zo+mzv8dozLa6Tb~71H~<6og1&M_^Mp(? zSBtwp`)9c=e1}n4ktGZ)_wdRIO%L~J*z(K&RD`Z=@pjFhTg}2SzbGw=f3u=7z@SvD z$?kOMHkzHXVpu(MA5y_jdrZc1H%-j&%G%T+VXe-714?)7fF|_x66| z-mMSB)n`x@UAKzEa_3ILA|ZT-u=)O`>BH!N_~Q7_U$4B15-$JH^|+UE-i0^?PoJJ8i$w4wAkcG6qhK z6u*{=>2E28?aFsFOgF)65RZuoQ>3m^FZCmCtkZYYXHHwCVz&j^P_5>(EAboZfeR_x zW9913^YQsDPe5ADE!r*!2B{ALb8S1d0OXDd_fH+f7&PV>AsI_4q%0Af-Qq|a~hD<+o4)Uyb~?a6CqD_KSHo$OI?2ctpBkY z&VX;rB3}7mZ;wVv_xOBI`No1sc_`&wI;JavQ14Ac#PP~A{Z*vfH>KW>lGJH(12ijM z?iGD?#gD^Icoq8_319gRur}3Wwrt7Id448T|HJ=L44jlSVZFwq| zy^q+50n7kr2f$gIY<+iM;}@O(bI#6U$D>+r6x~hqT`R?cfLH?~rh;|LM7KtiVJ=uV zv-*ikutt4|uPbgu3L~=gJ(YW!0>2W5^;i0~c`^dQZgFV~EYEYA=4Y&)jCP?V;^S#e z{-Q4*_D~`F%AX4VKB};mrH&UML!>f@zkEO25~zilK{4h7F5r8Ab2PA)bK246DhwhS?krZhVc*fuR{sS}n zv(G+zt##kmTBr4V5XiG#V_v@$^M$qB-oA$C^D60c=s*pdUF(t?%U zpK@jo@*RWv0>ikU&hgX@WB&<+sU66^q}{fLB3Apra(t(UZ^7A5$-`Vow2qct)00QM zQ=j&|GC-b~BV(wQFXY#8!~@KJozMSIeM)wsLk0j%A5mf69sLb+A+@uoY`4+J+mrem zts6iRviFR$T_`N-7>=LhoX8P?lZ>}+6)FHi;r^me3mkX>u;mkJ*sTuVGokyw!n4lv zM53w!Yo2muPGs6%J=!axSAJqa_R^GX3;u`C#kRjjO&5In@CoGo7z0>t7%tF3|3!3; zjHb`m&5DQi*ms*_Ld`P_+ktR8#wPQ^Kg7qlh4VglNIq;7AlnKpVhWgUzj~Y;I&ow7 zhp~2d>808YZ)@@3pJ$UPUOVrEPWD0V^Y{9PwsT(`7ncvTm@A@edu_zM^G*VHv0?uA zJFqfjrBt-xpOUymn>Jd| zRE2^%RM{!B^l1gxGtPhld_-N=8lo|neQ&>X29ef?6bO2B~0 zGf|Aa_gE)1t^KKdB()oDKcZ*Xs>|6VltcW3Jn=gpXm|PZS7>U>F4nC)S@nKM@-4y8 zn7>;|vfw?!;9uAClGLvkV-K*k^WAWcg9^^^X!kz>)z8~NE zc2Zi42ostx82hZ@ZF2wPuWbisCQajN74k(fKe(Q%{FR`^(@u6EMW*71`XhbjqisL& zxBkm+->({u?N@>pv7X)Ofsn@%U060i%M3Gnf_}B(tFLA_sZ3{?S^?B=%56&!w7Ysp zd6kyD7GiTEAHyWRM{LWdt4x*{Sy*0{5?RLhv~t`W8hfYh3OzWoaNU>U`_RhRRi$5I z+aEN~WYzR{*bQKhy&5+mxO8$34*Mdhk~W{GQgBjkag99&q5{3Eb>)=PekzNe=<~2Fj zB`b?etn6CeR$Gswvs@Lg)4p^?cB?Zh@Fi<*h1~?BBM8ev4dn@NEtj%cGjUR(B z+#=A%XE1j4JtP0Qqfe=2n_Kx$L{i>Y&y)ceD=NuIPg8Wj?XNhUf1MoQL0(W{%wp*? zuB{YuvR+g5%}>9Z!Pye3U}}M8w{32tTuaK%-P^M?V@-w%dpKnP?e+?d?Sj+HOS<|Q z_MwN8V>$tC1q1AoN8wV0kwG*_>ToIR<>`-6BxL_|1HA{<%-)b*GEQ0hX`#8)?%U;v}{POp? zv2Skr4B2ROxP^8y{JyjOgsgH`=IAf4l{L8M0qav1+OX{sTC_XlQeu-}hrK0F0e()FkIujt& zAd$HdJLa3!^6SvMXV-K4C@bLbx&L_cMb618Z~OR&2sOds)#z2*(TUvnh1!!XmynGB zx)e>F-YW9czt?{s%%ARvEQ@*p&7J#|`18-V+Sw0b zDZ6Dn){eJ-V(=(?i=TJ4ZI-h<7;z-R_*Qw3jnnN%z1Z?EGf^zIMtH~AJYkxJH-g)z z)3@dcor=>I^37viL?yt%sZe}}Q)&s0#hek%3+5kncQ^4GdC0MbDNswLymsvLU-;VQ z6tfP|Y`C!x)KHjpn5r;^FQF=Gh2OIALeXyLK{??1&$)AAhm`uA7=?9TUy`SD zobO@vKfCw=X5rj6=9z|f3Q*?W6|y&5COfQoFb?0qG4p`HIJ%(C3J2$>OLc0c4jJws z#PWGh15x$7T~pIt1>B5@NQzw8MbYYJ8&gHopL{g&$0q<1q8UEHkcr)4?5qf+!OFIA*ceCBaDa z$HC%5v!`4-R&Dwf&bKdzqi#*nS&20nfU-CT6X=|OIox8T!+FD-T@40;japwz@ZSU) zgG*QaB4gnK_?V{aGTzTJBuJ4sBD^5HJo;0EH(hsFXN&!rlAb}_KQx239Fa{x!BSg6rzZClp59^$yZ2+V4-{ps zB;ny3{xdQlVi|~1oUAAI_qI)yv2^%e3c!p!l0{iJDd}J0Ome;# zE0?{hAm{d|a0Fpwq>0T#rN;b3M2Z%ojt$O~3#%-9h#;XBbWm#5UMRKRzO(Ee48%BS z$mnS7y*2oJn1^u>D{n^Q4r zxpvj&(g)_Lf!p@X@NdApe)=#{Xt1cX*VeX?R*?G-erJ(kJpU?^cgqJWb===}*JRK( zNHg)-y8(M9-QWPNbN-FYngi|gpFx0ZCBeaN4=rrCzv)>Jyy;`(X9c_(-j^@=Qy=HR z&}sd&kEM6|tv(Rt-jzUxSaTi?hBd>XQr;2`&1E;8-Cj(C{@-YkCu(TPT!5i;Ly_w) zBlM{jJ39=C@4vnn!XB3LC5P4mupi zz_xnZ<2ts@Bu#wb!#`YoIIZYL#u8&ljCsrU#hj(EGdAByIZfIbxi?Sn4s8CntB{vj z;&Ba3*3-qZkcTAbIe=p9KeDwOIeD&_&_^mnmNxUc7>5Tln;WvO`fHM54piRY>7~tvCAN<;a)R@1A+X5%Y z?y)x$JI3r^fu1jlCUGF7KM0~X1B4CNOzin@0T@Vb-yUWg1i4_F)B$l=XKb`aG`Cb& z>sgm#sW-t>P-7TOt`PNuuN6$b`{i?JM|n^xbxL)Y*+=&mG^W2tb35f5PjX+|1|@Qg zdlfNd2S9^b@JxSgMZUxvw>tKzc7+R?QKT{Jx<~O^SXH8tP1+Tt>~6p zQ+-6T|5~8d#xlkfkNnuw>-;?|oSuXf=TtG4|MK_u=sCSQvriZt=m0I^(I~1`Z48C0 za>t_aQtC7%YPDuixq^SF|}G`rxdd(VN#@_O9n?#9MEn+sK2*m z4%gy;$jzjvW-z4V&%SfN=_sw5CYBcRCPA>=4)y=a?tdN8EG1wW^V--pEGE)Qz|cS% zTJ!`d-+HN%Onq6>Y3@ddOzsegqnY=Zh(w6gK37lD8}va4PU5sUOw!`Se;E%&>D6MN zQ%0=050KH2cCjaB?%vtz1|`P%{)=Q$7;s4`?4V}mJ~O>DbSyX4FcL$kGB*~-w$^ZaNwlWU1`Q7UW8-p+!XbUY*b_lsdtl{%dp8Y`(9 zVoNm80a=tI4rZjd+50kU#x6(5-AUh~GO7ZAaiT1)6)b|HjVdvcr*X#yBI1*lo57*Q zULM^t&PcEtFxxF4sXP$A^@(yZ?6rBdH0Mf9)Gi9H#&}eR7oLy zzbjA!ITyK%9g+Zjj7o<+Cv0RsOutgJOyrU_VL}~f+cBHrXG`2rVJL(i{eI{R+>x~O ziMQ!re>YpHr0F!-J&EJ?@Kv05SPomwN?9v76W>4jdbbhRQ_SR5ZSsV0!Qp|gxqot49er1n=#9BHli{(zY7PSdu{9u9*ggFZkNGCF3dV^UECp+1Q1IF5p227Ap5#oSZDitz5G2SLfty z+w|)v?kKt`x*1}h@adX07%-vgHMi{Y-i)2}1fNXUvqRMc#QBlx-O=9Jod(_kI^GWI zd-swfmUhDkJ6lUhu;iotuf!D1%EV(dP8=+zj>!y6cib5Ym=L6^%h^i-J~j6e0Hbdd z=x0*ymsD-}Z*Ed7v+E!B&v*^mB$xWC3dcm~>lmLqn1QoxadL=eFXMy6;6d%j2KC;5 z2j3@xTA=1NI%Zc;v@JtPPJqQlPtix>;+N8D$W6jV@Dl(oYDTi3-3cLM9kR@|0;U$o z4om?$4NKx1fec*a@$_@7+GDfV5*(;SzrlC!H=ZlZZHp4o z=}AL1d`uD_`TF;@&c-tL#;Qpj`-RNMY_|7qu3d0g)8}g^tMH+zJIzV^31gm?>s{@j zPxj$va|Sawug3gbkN&!f%)e$dg`%a@A*YpgNjDL4fNU_CYnuV>wUBcHAc$RWqyYfg zHe|xso@SzbK6z{RHz0$2jhBVRPdBdQ=B8Lt3mp`@*l?#+)3B zYqB>eJ@+6D?LXw&_EQGBHg_`!)J>Q%x|wdmD*Td5%IQvzFoM3w)CX9o@`;D2sF0A; z#F3AdqkYJUq&AlcNCO6hNj+Ag$3(t_$&7zWeOn2lC!r=y*#o9%jD(_S~ zX!$YF1NSr>Hh1Un^rU1@qhyB((Qvzh3-$?YepEhT@Bnjc^^x<&&wAJCKgnL%o!j2S(6J-nBas<= z%@@jfTTkHa|RS(ud(WeU8x_p|j=V2ITn_R7(TUT45G2$)ret#UInW3U%Y=_HQ5;w>*d3LpfktpxdaeG7Soug=e0XoUmZYoNzIeTtNJ(x^p;lCY z?XYME9ZG)mKhC$5MaiPn5tVi)EmOXg-yN*crWUcdr>(i2DLdTVw}>f-z9SmIh-OmX zNwF4P&05k;H?CEC0)FwrfC3ff>jA}IwgzV_^Uk6?T}?y80NHQeaxCYl&NHS_fn^8% zkK7iRj5j6cLb+qBX{5*lQ*9t}Fl8Fw;E4f=iBa$hxc%?Q#k-I*f!Z@4bslS7g1nq} z$a0}$H|YV5V%Wxc+#~)DKbo6|N!tKM{pXwD9>@TO5yG-(XkQIQv~1*ehYO< zNz`u*RR;LE?6*J~L&~7T-8E}yWT?N3x!`F{4E@na|jiSmu8h*7n5kX0uOYv<==&de(ALoM+ zqhpUDbAV`y9`5b<>l}6DCb2>69VYRWC$r4Iv(ecQ$^h5|u8%v3x$hU|d{!$R#)lNx z)Xue~fKUUji(hS;d6#@bzWaK<4u=_54o5aSWa7@^gpKXX(WaU2YkC`5gqLAo7(_jc&2jbtJ{d*!7N3duE zHx{X~6T9l3>66)<=5*)vh$SF|#qbAKKk7s!fCjok!^NxmO-q&E3r5R@`iAwNOSbHv zu?jxM_?Lh@Vto9B9uagenPSJ3vt(H=P7o%S&~3H^Wj6NYlx{N#t=!`+rtIHo`SOvek)D1@ z`$u-zvnO+NtGc1aE!3IrmNu6==B0V1c9L-~A7GpYND&RqcD;Z0$_G}ZkE#|UTe3E) zUD_n3CgBWpBId9VfV$RYdn_$OF<0Cx^Q=5%z)-GQP2G<3sb;4je}QDcNlLNQ!^5!3 zayU@tuV*ziXLocS0TbTK&5V!0Q{(KTa;|b1E_6<8yQ7rj$z1B%cRUuyBVs*F7v40- zWlzyI&6DB?F0yeH5OM|lES&>;(^ddy&ncly*N zxD9s0Nlr|t^n%Td>>@%0p2Z>bBdqcI48amGuIEvA*g9K`e)_ zN~hM)^OtpIsS&q&4=^v{tPRwKX+^y8m^ovD4*E_D^^ZCRymuP!L3Ww;&*>E^Pbg7h z>ex&77tO*%#3E6s%gNBY)Xoy^riAOao)g4E>b;~<=S{c|F6a1q^P zqwdc|MH6SdUdom58Ck&PCvEX}K-UEqZ6`o}T}@&|_m~5KCww<6lL)zYJxY69`)FG^ zbHZ1BIZhuJL)h%-ZF~HQ^E<(gWGy12+$eDaiw$YJ1Lil}p8e9MAk<7w+iiV}Tk__F zvK8^|jtS`*{h$7m{UBfar7t74%v9xrW%;iP5(!2pd#`Z!hi`A|h=%pJ^&F0{o%_b2 z9c@9Tnxb}tu5UqllK4Qz%sKZR^Tm*#(5J4m8Vl58<7z-{?4*-t+i8yCmq%v?I2 z?Lb}o4Kc~^7WtYhK<%m&MCdm8kHrirhC(6cJjh5{il<>@uimN->Lq>nwYI5~uHKVe zJirAgYSS8(HQ$B(&2-o+(QIf9tpw^WvN}UY>LF?Nkj}DzD_7IG$yRE)Q6FD}IvZ#` z?sk+f=8jWaYpT zH-o^HU|GGl4T$e363+KPjh1TnZwcYoJV7x_??}-8ggZ)1G;TDmAC2z~Jc(HM7!bH; z<`U2W{lmJ=iCOnNO@z5M%O3|$G2|u)!a`QRrj#_G7tgq8c7YEygQgZe@cOls=ZO5H zShoKZU0pmDJlUQYakRlhGCR@Qf?Q&$s>}!3(vI&4wh08B>oU$GV zsq&Gbhh0E6ZNcZx2c_pLTE%uP;nu027@i8^K&*TP#S@WVqy@++p2@Nzmt-3mZ9gxC zaipE3EABt~DkN+UPyy6zKM>N7A z*(>(#18F;~CDpN@fJ;63J3H`N^|k&e2u8OVQAHFcU=5S_mMh^B|5B4Nrng=e^z%W3Qr%RfsS*MAx4MXEE#QC zzG{~%J)^)&%*cAWIlbTJA7CHCUN%(Sig@g~QBv8iQJ^fnyJ8l7D z@|oLfHo<|50bCD%s9l4~0~+L--MDnqBzOHoBZQAjoq zLCoGOWc8uw{+Jk7V8@%8&molRvWJxiBIyK%*l{iJT@b|hujYZPpwQ|QI6Eur&R1&V zN+<438q7kW<}34SC@5{y#7C3PfT3tMA`Eh;bK%9Mk-T^k%je7zF)9RBgE1RI?FiPH z=Q2y+44X$j^4^0yyE{_wLq|d=ns)LY9L$A`^$d|kmC<4T-Yk>_hj}{p<3cvp{CH#A zdikUz}pC@?>u62V{4ex?Kpi zMmK(%&xxd#IIh88w?f;d$f1%K{^}H-eeQpKx(LS(x>MTq$Q#J!8<{!E4Ej@ppTr)J z{zSYo*%ZmUHFh?2Tc7$Wp?J_8og(GWYwR!KO%FSdEPJ0Dpz&y@hn$A&Gy?z`z&2Jk zlm{6~*COsJtdYFBS$olC#O3+I4dnW5tSjiYmH-(wByUKVm?uz{T~yJ7fg{}JnBLVk z^Ewi&ASS*sZaIH|qE+wsHOlJla>IRfZyW{op7!;XW$ zesEc8#3NAW9Fu*5#Wx$=X1)ZOS@^JC{Km49)Mv$Z}CP{hzO?-LG!)F@WUqh)G#w0t)R zF(d0ef`4tkjPbo1P%qP|EGT)csHp{J8N6%>yMA-meOKW*#u`ZZoKReAjakdTiwXpp zdold#rjG&c}R@Wd;C<|Fhx?^=|HAQ z_S|#Y&xsOhx3sJd{lwLlLt0lc=G1=GnRQ)$Y*2G>=-|kh{^i~TYDiLv#LkrJy=_UB ziovPSe^u@}lo+Tb+W~xTV(ZvtR=+~b{?JuO%yJ9c+E$sYjx75d_00Gb{_Jf_fm1~d zZ1Yno-9LT2jQ}fhc#WgL_&egr;T^=?A0BLCwO=A^3DOj|D}bfsoDcz+wQw}VokO-j4j`UbpA|e2^)&X zh+0b(anfz<2$j5x39s5$_N*-dF0BOJ&Ji>dVaAX#D*NzrkJKwkTk9vR;7WUDiJL^p zv5tWvYB)w3+t(Y$1k;tFLWMCCyn({z#Dj_>V=Vx9n2}N-@~YQ4HH}8Rb91y4cgM-F zexovM4C22hF}{;<=hAjG<4WVoLHm39x;Zq)@F4~ixr}$Jy8R3+`?+JckU;(TII&uj zv9km?1yv<*s0@3_M*mf*|Mi2`;(TJC_-X25>e-SkVOjdH7o>c+<`2#$^Q|_4usuvY z?r9agCDf(9pp3MV>-6OZ=~urO=r_5)Xl(m1XsLNE*I7H?e7+c~2_79W(rFY38}r*; zcpaxul6_1y+<>i%!W+az8Xlq!x&*3aOM?Xnn|Xx+)5&J=$Bgcxy?nby${wjDtkxwx z9H@n&KO87BmKQeJ1$HKPW{yYA453cfP%^adbkHEqPMF-Qu#PQWEeV#L9xt~Ch;B1d zl%m)2sducHy2V*Pb=cLiYYu34RVjyl@fQbX6%YKkMi!zQ1NdV^2SbO{cxfJ!GyX`_&8Hi8I3> zNh!*hn9OIY@$Bw1k;}XUr-d_OG#+F?*bDaw$0iz?cth~DeY{7KAKM>XULxIg^p9;VTE$R0$`(FP?@o?jS zJ5ZK_v||lox+mtt?1`5@G0FLr0FWKg)1JB4*~;6x73Of!-hR?Kdd3kJD`wA;(hOjG zI&gIowqI~xlV`V)-2WPy^d_O^6b59pbL(d5r7=$C`mPVa0G@kIB*NbdIJVq&J%o-s z+tst%=mJ}In-;z)9R4k5m*QFcE?{li<}si-eD`z94|zz3p<@Rj>Z_eE6Yu0U`4i%w zla357K1Pw@S?<^op@y|S5h==Df0i|br+Q7>uovs&?S6VwEX*=J6(s2~);%wUw-Msn zy1G~tqjp8$AWi`xTjoIl*#`Qmg;5`j3NdECUIuMn*wFVndpN2Y!HEIJH(yR%eXstf zW;y0dsaLta8`%T}%`(egVQ+uNhk8KB)5oaoMXmqT+%pO&b7qg+Najr-tG*3ME?6_; z5W+)>za=@o^FQf%aAn-Wu??$;f;|V@2-jJyXdPQMiK@y=tv1pZp;*0OI$xk+gAU_+ z?6;z>vWjw z^rPQVuN+<5Xfu_?qqP9oSx^bUmfP>e0``A3$egUJ@0^C)N1_%Y^Qe$-Auc4Nc$M9s z0|SvK7gn*?w@=%`9i4$KdHD*@O^iU=!ub_3IY-SnEtR~q*Z&F;dSm{2t!N_b6qs6P zh4wsXh?Nd7Xs2RnXCk@+X-XsFRpGVy^2MSg-t4r>Ueny%03BcD-7g9Li!VLU#@4ae zlmEiTed*~xnU3;zeK5w$1)>Ctw_{90nZ_4#loXQc10|(5?>m}~GiJFryay{uFATm# z;w!v;Hh&gy)A@Zf(86WV%5CR)xO~ocRg+6hr!-+B{@D0JOBP$Elg(k6KpGb*qHQQN z_=!8xdi0=m4(QpOuh%Rv*uBh@PL6VqndqyQ4h|FohdF@#wT*wDJ2K=Qdp}#MwS8gm zdq>0>d7_X4{V=P6wpA7+M-=aHp@*)Lr=23&P*+;ntvoL>&c4NXSONr;8 z%#`zg=Ao`hv1F%CJ<@U8O_*o!Lw!psFw;nZxFt2b#Z| z`&v+W#X)Lw9onT4F*}QLapb1WZxPjI!sjxs-w7QZ+Wt!`A~|*Xt$;sLj!xW%^C>5i z0v=*U1CVoH(ef&x>1eIJ8;2q5gRT^3H(%0c0s1l79#FDVH5`P~;LshcJeQJUr^N`G z;~Su#+#rcPL}L_^K99?j&!{<7`4 z%eU1#(KEMbKw~F>*$8jpkl9#YMRI7PFmw|->SGtkFX)?064?J zftao=ii;dovXOIcH!w4mx%ZO})3jLjl^!YFFuyWS*yl9uKg){JLgVrNWlmc>?l;>U zwY1s#FXBIz($g0r2x_RE=|5ABPV-vV!9!ODXdsR~L^WhrQpXuhCl zK_M2mTvIsyHGnA6(?!aZl8313e*%0HDG-IbprD1j+jL0%u#ke)o0gt#m+g0;#J9uj zxW>=szda5!TSiztO?4qlYIKB-p>D*;O$TZot^CjF@P)RAvGCp1>a*0~Ki(p?RX(d$ zG5Twi4?ZnNZaDUw>}?%GP327R8`{%T#HSbaC@T-_kw~<-J<>7mtqBtUnjH*Tncwm0 zxE>EpbS6^b0j)5(vnu}e1XF+Kx1Q2@8-U!*EAV5W{P=-rDY8;%mG~!Pg3))}6A*H9 z5G4B${;>|;;%Yq{U7nsm!W_B`Zcl-YPrf^(hTPtCxC+$Dji5gHjO{6e zGXFNa`Z**19IN3F-8Wp!7y~p@vH|W30RwH1BNYxy{De@=J`9wD0q}&(S!7trcU>UF ztv}Kq9@uTP|HfwptWz&N%S)h3cKUHw#!e~mtDfwG;!p-nu;pQCOh?F6&A1jFGIr#J zBLyb?hHBwe1b_MiDeao2Sl5hn%CCN6n_+UaSqqKT^Z&HmiFW=3>$^?FTVEM+IxA@P0H2~QO)V8J89-g(3 zL*U~VqwRIAU@J2J*RdP=L{E+;pdSrD83g^W^;CZc5@M7*+;TS9pT9f3|G-VD8585u z_VaIdrDI6F<84URZkXI)sK8~3MGJP!+?n^b=%jt?%_v#$-Wa+vI+LyI;!+O1MYv;T z*o=daWJ-}9VHXv4^8>!i^pV7c3_Mg*+Uk-I{M(u6JU&eGVNXUmW(6Gd*1z&*(R!jK zoqR_C013sd(;NEC`A*MMj45Z02oWEi(H67QR}~I%X221UO*&q*A3iv$ z6%365BmTpqq{6gK z%ph%xr8&;&f}^=~=f67CnlqlhuBDwr|?)POs|r`ECHC|rAB?@ zMzJoj6r$Z`v2CSL(!bo+U`byfD!bb(oG8Zrd~q`zD=Bz&oOy-D&*YWl*0eK(V~`(LxwUgE2q?Gz9f9o@v;D0%;S zw62u;6+y<{M~VvfZX2}w3HA}A1|9Zh+JP?3=G(FD3WRwd!HD(fA|N8US`FtNo&ZDZ zY%UDUXqWPtD#+>fI;QcQm8;AtcyOh(m)_Rao}=F$+I_nvWj5V>uL4h?`Do`4#04=- z>S#%+n=Kr`Mg?gHNI$uYeNKx)~HD_dlA$60XvVMmI*(X5Th$^A$t^x#=a z!|u(OrBJ3Oe1ELR)>6$QQ||b^1NLs&YpjdrVIGb|ku|2qxAwF*cRLHmRjk13cY-LY zmpuP9YAP>hQ-pGvd(SE;J~eN*!?UWN@j-3z9mB#HcRViiFicJgre+s0nTHTrs%`!i z5QrXCDcT@5&qlz^w-a6L@b zi;UfO0HW%1D!5!*Ll;S|57f>0*Ad>`W@=dxEC0NN=kem4 zjUdBbD(Znzz@wE&0{l~Qd^{!$Ik6E1As&X^)m=-{#Slu3;CR$4%WZo=8%Fn^sFONu zB_Z{Fz5KT=UKVld!^`7{N11+Bz0tKlnmEAJal>Jy?81o}pLBodrJsVXQH5m{N1=)^ z5tnTmY>+KF*#~%<5oAS*?CfysRQYM@@c-{{gB~Z4v1Lb2{~Kuxq4Wg6Bixc(OaI7RW@ zb{8Ln!9cQHxS81*H=PY9U#>e(p}Bofi$BRl^xW2&v&R`j^I1?WZFDnWr>SRWnVxd0 z(rNAXaYMIM{2LXTHC)u$av7Iwc+}3AF50BCEw5YS=~5=_n$j{@)KhBL7?3?lXURm4 z*&ZJQLcF>!->5XE%ZpOwB|qWUm%>Yhas{dvH=2Brh|fmXJjBRQim!w?xvnK~!GJK> z{PbYlNI(kV6Fh`@4z3G0VBOl5(A4ZHOP$GsQ`>{qQgb6^79Sv@ygBFsvW`E(SShxb z1D2JkYj~OM=Y$0eBG0QCVY&ysItJ-Kg5Z{4NRZTPVW!ClFgEx*xLrlh#h3dA0cQ7w3C^^X5&?*-7`xvK)~}=sdGwm#X8M3U2S~G6N>L*>UL`p%)i{*|6xxC$cxdS9x;@ZL4>Oe zY6|aqK3pjW&0SNv#B3)1`KIVu7!gue?X8(mF5hEcq?QMA>Qhqs(~qW9O)c&{+gOt) zwj!!=cf??JOYM4UMBWy;$y(u4DLBqO>M?>NBw97YWpcL0s?9YSTt|aRIPNp1ZtRE( zFrhQHvlHKWw42V89(K0#AG3#6Z^bx!t!GJpwxVgbQPhpfqoKzr_t2O;u+ZfNzeoZI zD}0!5Lk(%^zxdd;6TOA_3_$G||Aylp^bWrsoy6Klsxg3C#Ml5iN>K#iMYokkcjS9+ zUD)qzIG#nXN=yiprJv&!nbMi#3k;e4`>~qlURhA75&G?hVjvtZxc;r{*A{@lhdsZz z4(Ub0SN?#u1ag$Fd@v9;P+3s;CyH8NPz9Iiy?=>g+Hq*5*J%c*C74vqPHn5d)uay+RA(iqQi}O95g5HJ39$#F`1#_a^49Jxd~&{ z-JH#JZZ`ZWloIFvTz1~Y*Py_7NEg-*QJ0$3y=VWTpH=*}%DB^WR?+1>DOG=Lq+g&lodMAmj# zldaRg+{{jyFD-H-20I%4j#(QLNhvic3_UbiYuSFO+bcegbpWR~CUxKPlEw~Q`C&=c z!Hn#`zbD0q`h3$*etL^3%BPeB#B2h0nK1S@#nWXBVKlN@4sR9k8>l7BryN{q&F)v; zKC@D_e`=599m;?9b1df?j?a2w6S`X0a;|VV131012&qh`bMYe7RWM$ab;HiMBFAlJ zJ;iK(#1OCHDb+`Wp4iD4?W&$%`iV;gSMq>4@H9w#WW0i}nJ?O`g6)DdKaK7$VGX?@ zw--OiwWs2}NydlVgWGwZ%J1)KTe>;w$S_^7l^^7_E z_XCB8;a94)-YKph6pRyjTbJa*n}|?w`fIsdEGdv0sg5>!`QizW06&s)QctrHOY*$w zirwSU4D7C~fyzG)Ab|;2GLU)ga2D2kGcA)&OHt3X?OpTYUx0v_-rWp~?f(|3=^Z0%VW7Q7{wuNi#WT(}N)O*WXEr+YDy~A0Q4j z%{^H|nVK_cC!WBsh7zbzS1=uDDl^_zIsn7RrJr0Cg=4sHNk%kWoRXe;IvH~?Gn-{w zeo{_{1*x6KG6IpNhlVvwrJFmeW5&0;^gCpYu-C8WCm$41$c#Ydy zMcY^9Upkj<SU4a;NX{@y_6*5``ZXGKve=97d)AT}(27>zvzmXsseU|F+)3T*wS(+Gla_&Z5p zyi?8l<#J61(2|$w)*@myZJ0-uaH?Lr8fc>(4_oe#aA-A+l}o!#q)O+w9UYYHYDxbr{luQ!}>cx zRf7~e4R!wQ@Ybf~mz4#e9J`#8i2o;cV2e0na0SwC@%J$!^sba+n8Vc8@gQOfzlH?d7HDOGV1gd*X`bv(Z@1I!nHpeaHlJM_ zMZYZ&>Vh9Q3TAXP3ixA+6_>~20hk0`Tat`zAZ70l?%e9bEz>TBw4vmX`0~hHKd~6> z=t_Xs*nnR1|GdTSeHopfnNSiX!7W=LOvK63`Ek#nfFD%Q%)E+Saf3UEV^zu8bNx-@ zza<$p!mG-F*2Plsp*hfBoa3U7=N~oz-sg(!m~D;W+yG<%l0K?WgaT#M=q;Iu>-(if z=}@TlZ1`|Pj+r@%|7$HaXDsin&8a+q03gHotSdOkmkM7?JQSP$`!=kLO6J=m#UOY^ z$fKfcWAwq~z-(*PhnNk>RR=9PE?aDsGoMx2(@5;_ndjF}VA!zou0}T04C#jvG;&|>{!-3xDDs5XGV_lcN{yv8G1M4w^;T3Rb86OjIFU9PYS|*+cV~0+EW*5xQnkHs+L*KWu(EWZjN$&Wr zYq4@i-={MHt6x^H{%EM{)C*nRt6k!1`Esoy@0G)^Uh}3IYWFmQ%u8(^Pp98FZ#lsu zG)G4#oe^VhR0tA3z><>%e4dp;wI&o(mwi)dE2Sj_0>><2G!Mu2Bq>{!!W}hEpPik5 zQ5t@f9keGY>Na_$mr4E-=My0t>E3fOye{7O2Lr*}Xa9+gsq^~20-e4QG4H{GG`w3S z?Dg8TuLxOvcEiaNg;qK1SX=aP5VDTRi4ij_#`nx(O{C6=yRji=u7&>pj)bu_x?0oW zo}dqn1tHMmIyeZrnnH%?nmVIhcZ=1D&}shKpgCx2hx8mxu|$Q`ZO2%VNtE%^U3i92 zSq#14!{*{gBe)1lri^zOjzPIWz6Q=-FTwi*t6?HBRx;Zr5f(c2;>aA#hhbl>wL!ej zxT8_N+sho1;cxUKfx8en_h6OO?!dLxfbU#x9lb#|1lXY^)GAe?p~TLq+A=NVOc*AN zvN)FV&ahiM8H)Tc`jm|d)!V~&7>GCz=Jcjr8ZaQKbaLhjJR-(4)qUDt;{b)n z5v86FsmpZ$Eg5g({^mKk%lSQ`=rEEu1q@o_9+!d3OO_4I^3;U_rBYhh zw}#fGxSc~@Wu|;}t^Iez9xY_yAYy6Yg}BYijK7(2rlB2Mk_iGYPDLa&SH9)=Q`Jf9 zA>Lt`@bI=t|Hr*q>yIH=+^wj6PlRmTx%d%EQBBVmgMQ5{LO?qIPL}wzUyKPexNz<7 z(4?lJE3FItVkK@B`qNkAv<&t?Tp=!H3t^L27w^z7E!t8dx@ zS5`U2%H&n{o;>GHdTI1BRG_i^Ot)XzGvzpTSW!k(h3QhYkUTUpYYi9>YOa0HNR27k zacfJmzx|5eg75zWj#Z&d#VWt>o@D>_<5`)fo6GSX8YPw`Mv%m%l~DSRtMz&_-IcpL z1q7f&OzW4hOX;MF=0mf+*t(Bc6Tqw zzanE!q*b7epXo@>>s;KJJQ_Q(6yuaQyqm%Xh~&<4Z-)W1)0-`0C>10m&iZzRI;w&& zbU9YCuDIj&gh*zREA{3WGu#~Ogl(!y$d;MYdyRz}q(R~IUUl0Rvw22RC<#1M+}I9H zCXnfsf0K}V%$O>In0-Ugcth*Y?q&ldwD;Nqa` zwwJk&Qj_?bZ>}7r;P!EbSWVQk%iM$3bm||8w73_Hxl*UVEHVRJiNTEarZ9`5*CKU^ z#C63}_>dc$HHL8E6~AZC2bUQ!E;q#YIjL2=$l9QaGwjWsS|lV*J+jSi%gMs0yK9oy z&I}P$SqGs~8(mLEjVXlb^2{0zB?rn+e6X{Fy0f&!9LJNYVU4d%+x*wWdZ(_K+SlEY zL+5TQ=mp1+U{=8s1`u*jYRB$*hU&a&)1T9Tqy<`hWlessb%)nF56uN#7_9I$oRDSb zx0i+KQux8I9307Kv_ED~qw7c6%!p&ICXl&h2EuuvNkgV_O zV|$9Nt1Ukkp!=`V@IB3;^DS)O0e2AvDxHHG2z#nUj`_!R?(GM*H-8v$Cs8m1Mr(6v zN;^UA?AP-ie#38ZY*bPClp1mBTAm|}s=a(83)%KQb=GQShR6w^z}OYpCRIlZ&?-e$ zu>(9uZ3whBl}G?WY91qtsg*P>-F>2T`BjWr=nu3tUD*t%-tpuytxmS9I8683n7i+s z&-d2q_D{MVrh&aiy@|q@W<4809b00EnY>zJ%V<8E-Hv=~4QkBBo`QG4bp2hM*WxbD z^}7q0^qSyYZSwC^yI&*Nx>+qq(ALGsm=enD_sb7i>#jW@)LHG41w`y3E)nfV0KLfQN&L)_1G2q8jK!9kE0JgY}CFBzXpFJr6~1KnB1z+nwNyUKd1Kl=?_(dV#Cj`GHfhCfmjJS_L%x!VrU>!Sa9Blr1`@Fh z9B{xl$5849pL7d_x)jewjfl6!dJceQQ(grA+9oRA0Srj=vvy+SoZ$~m9`oL{+)H(G zC?hSp6#rV~=YLEXo~5iYi}#LASH!J{0k5A@qXr+Mby=~WNu!CmTJCzz`JQ}{bN3P8 zR&+c=7g-xain70T(5aFQ(mh(2m$#%P+Oe|4&KAdcjk1-XQdCm(IgKg6i0L%JFYOx0iC*oUO2t4)Oila(ztUi z5OqPxy<5)0(IejzSHF}dW~_rg3B<1KxXgf|32RT+=cLQ?rSWh+Km`1FD4*2sYmwjm zBZX%HfU);Ilu=NpB!2%MtLwAs{IMF>dSDeO|Ma$IQwhE4K5hlI)GWK_IA+<2zp`zL zOl=_Xk;nq`VUx%5QRainfG#5^JFOs*FD{`>htIRi!R}{;g><2NDj4}EsEJG!lT)^0 zM@DSc177(#kxYMfGLdtA-}ukn*aT&#EB$|-#VT%T5A}+l7j#{74l_665C0}{EA(0t+cIi(9bVA1hWU4?{LR${#G-9dWVImmf z84N&D1$s89mB#`4K+mGD#sT`yt&30Q+I41{06N#5fs_Y&jR?6^vrAYhe}KGy>&35- z`09b~fj*`+{OPlU96w5H+*cq-raA5s=#p2Z35$to^VXiZnP<#3(6zKc6lB4gy}!X1 zt$OiqOoa^*6a*-kaWXr11$0TivgXIW_hcJaMoBIs)U96B01;0#!jP4)NC0*+><9n8 zWro2bhTH-AOTCMK1Jnom8b?ar8o2IxwfK`1=-w+9=~Ab{p)K@Czf|(ck%5kTpid&8 z&-$Y$e>blKn=;T93U>~4*48PtiyeCJeC;u1&a2kl1<=_)Ko`_6zh~#KTH1eDQL!1; zsRadKjssK|K$kKd;dTZZQI-nSt6D%OY@N&uT}eiGSY}fao23997tp!(!F~jD4|MOP z0bMXx|Moqbo4#i*WFs%}4|tImcp=nFTZ4=TbgeadpgS_ePn4V{m@4_tWyoFG;%yyo z?lpJ(I94~d#U0Ns1fGC21ogy#ZWqzf0Hd+<*d|j!BLj9=fXd>wuyryaLN#O|Qb5Li z)XaRc!xdEs>d=z{dU#oYE^zpc$Lsz$F3?}K-YPApnETGh7QnqMgjWn$1XXw z^*b#yJkUMR$F1QeVnZ))&Ijc_&XN1#0_v()&+Fq}Qa3ij+ZLdw-bYZ zxLHdW>g0OF4Y{WZ^rqE5O|=0G%~wW|J1p_tdh)RsPkq>fQI^ma#3o>xt=z z)BsS<%QetB1`-ZA9uoIV1&k0}s6$g>xQted*bP3`l z1N36a+u^LOPrE(jzUK#*j{)?_SAONaRJWIbYPLSmH}{D+NpWcboe;13OZyqRW1Dl= z_L*&e@!r|yb*IncbJn;9`YDxs0d(N5?qxBf55u=rA<%jD%NCn?@^&+2uy@{Jl4TBT zo+6+Z0Hs7A+Ew6iC7Ffx7gcTTSf=hdiMjwnT(Y&p2_(hwy~4o{>)fc+l?rshe8d@$ zc%XYvJOocfi2-wx!ZKs5x!U`oD|v{Q_tK8-zB!9SYwUdM>jHZ7+Mibq(B*A+zxhFY zUG(+!v)3LUB;<~}4!Hw!oM#Xb9FEVFXwUat{~3jQ1$BS|5G)N&N?d!cXEq&DMibDr zFCZyE+A{MAx9d0s+u-Gu>;~fu8KfV*S~cd&gKBs36eoeW&U0X0Q@~PJ+@$ zFxP;}1KoR~FjtNWQLs4eQxgX|Fvr<8Yqq06f58LYvC)q_w{Cq;=o;yKQ-*r5mX0IP zLh0A?_NV@{iD_-CcWwaa0;;PTdo{jMNgHA_to56iwtl^tLQ>Y@jn|%+xQVi?RRR`( z!y?^UW<58b>=U4&$!;PT8t;O0d@nzVPqTDpI^_VJBqcfLA71i^o%H5~TD+)Dq#63a zmWw{516xd>3+9Of9rr-55?gThFT2U7m}LQa$}YY4lDd~&w_@8|o_S!-bLR@^JnsU! zTE>_u~qTbp8OW;*8;lhkh|*a$qiW0KD^AtFlNHc#^nO}FmCVSR5IYTAMJ|-Hns=I z09K}@dnSZSNqFuv|fR6ADKxdYt(OUT(kG9S=B^qUGWVw5wdr#4W#zK9U zj(paSB%#)S*8|-HJ(7`pMwc)P&|UibGgq9A{ZgK}=Io0+la7IoheVc;xHS=s%xoa4 zk$M2Q^nnf}`J@w6q^@wi^S`ZiVOK!U^*+x`$r!9mpsNNwzie&v_&m_PC#N2#Dh-lL z&l^)$0Q8iS%IrY*!ZKB6t(^zAR}av`gGQd8k+uHV>!7q`B_Yk>Ip`S*m2on7`t<67 z|76B7W|hM|=6zrepa^;Adl=fuDpv`T9E)ZOHUs>u0lErTD&&5sYsRgn3{(45U@n!o z0O(#g#(Pp;Jg|Ma%Y57b(wYVO$U11X0llg7%my<7jWRZMKEoYDT|f^+S_q$a9{#L} zX*5W2dmaLM5W!-3B8B!9H2)Hnd-Y^ zcw)!dwB|Hkw4bI`rzhkL9pl^zuB~$?3tv8`^OsM>Rb0Db#f!5U7_zNuah|KI{_B|! zfA7ETTQO$HI=l2I%+RaFf#dNfTAnBDXDr4n-u3a)H~zq;D<3ylnKN``clU3da}Ga{ nz4Tvj_Tk-on*K_r{=okSR9xu_XwR{#00000NkvXXu0mjfF1R1~ diff --git a/frontend/src/__generated__/index.ts b/frontend/src/__generated__/index.ts index 75da79bcd..8a014537a 100644 --- a/frontend/src/__generated__/index.ts +++ b/frontend/src/__generated__/index.ts @@ -40,6 +40,7 @@ export type { RAUserGameProgression } from './models/RAUserGameProgression'; export type { Role } from './models/Role'; export type { RomFileCategory } from './models/RomFileCategory'; export type { RomFileSchema } from './models/RomFileSchema'; +export type { RomHasheousMetadata } from './models/RomHasheousMetadata'; export type { RomIGDBMetadata } from './models/RomIGDBMetadata'; export type { RomLaunchboxMetadata } from './models/RomLaunchboxMetadata'; export type { RomMetadataSchema } from './models/RomMetadataSchema'; diff --git a/frontend/src/__generated__/models/DetailedRomSchema.ts b/frontend/src/__generated__/models/DetailedRomSchema.ts index 6ab019d1e..8557e5915 100644 --- a/frontend/src/__generated__/models/DetailedRomSchema.ts +++ b/frontend/src/__generated__/models/DetailedRomSchema.ts @@ -4,6 +4,7 @@ /* eslint-disable */ import type { CollectionSchema } from './CollectionSchema'; import type { RomFileSchema } from './RomFileSchema'; +import type { RomHasheousMetadata } from './RomHasheousMetadata'; import type { RomIGDBMetadata } from './RomIGDBMetadata'; import type { RomLaunchboxMetadata } from './RomLaunchboxMetadata'; import type { RomMetadataSchema } from './RomMetadataSchema'; @@ -24,6 +25,8 @@ export type DetailedRomSchema = { ss_id: (number | null); ra_id: (number | null); launchbox_id: (number | null); + hasheous_id: (number | null); + tgdb_id: (number | null); platform_id: number; platform_slug: string; platform_fs_slug: string; @@ -46,6 +49,7 @@ export type DetailedRomSchema = { moby_metadata: (RomMobyMetadata | null); ss_metadata: (RomSSMetadata | null); launchbox_metadata: (RomLaunchboxMetadata | null); + hasheous_metadata: (RomHasheousMetadata | null); path_cover_small: (string | null); path_cover_large: (string | null); url_cover: (string | null); diff --git a/frontend/src/__generated__/models/PlatformSchema.ts b/frontend/src/__generated__/models/PlatformSchema.ts index 434d7e039..7ec0e9e95 100644 --- a/frontend/src/__generated__/models/PlatformSchema.ts +++ b/frontend/src/__generated__/models/PlatformSchema.ts @@ -16,6 +16,8 @@ export type PlatformSchema = { launchbox_id?: (number | null); ss_id?: (number | null); ra_id?: (number | null); + hasheous_id?: (number | null); + tgdb_id?: (number | null); category?: (string | null); generation?: (number | null); family_name?: (string | null); diff --git a/frontend/src/__generated__/models/RomHasheousMetadata.ts b/frontend/src/__generated__/models/RomHasheousMetadata.ts new file mode 100644 index 000000000..0413490b0 --- /dev/null +++ b/frontend/src/__generated__/models/RomHasheousMetadata.ts @@ -0,0 +1,15 @@ +/* generated using openapi-typescript-codegen -- do not edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type RomHasheousMetadata = { + tosec_match?: boolean; + mame_arcade_match?: boolean; + mame_mess_match?: boolean; + nointro_match?: boolean; + redump_match?: boolean; + whdload_match?: boolean; + ra_match?: boolean; + fbneo_match?: boolean; +}; + diff --git a/frontend/src/__generated__/models/SimpleRomSchema.ts b/frontend/src/__generated__/models/SimpleRomSchema.ts index 63e1f27cf..32f27d588 100644 --- a/frontend/src/__generated__/models/SimpleRomSchema.ts +++ b/frontend/src/__generated__/models/SimpleRomSchema.ts @@ -3,6 +3,7 @@ /* tslint:disable */ /* eslint-disable */ import type { RomFileSchema } from './RomFileSchema'; +import type { RomHasheousMetadata } from './RomHasheousMetadata'; import type { RomIGDBMetadata } from './RomIGDBMetadata'; import type { RomLaunchboxMetadata } from './RomLaunchboxMetadata'; import type { RomMetadataSchema } from './RomMetadataSchema'; @@ -18,6 +19,8 @@ export type SimpleRomSchema = { ss_id: (number | null); ra_id: (number | null); launchbox_id: (number | null); + hasheous_id: (number | null); + tgdb_id: (number | null); platform_id: number; platform_slug: string; platform_fs_slug: string; @@ -40,6 +43,7 @@ export type SimpleRomSchema = { moby_metadata: (RomMobyMetadata | null); ss_metadata: (RomSSMetadata | null); launchbox_metadata: (RomLaunchboxMetadata | null); + hasheous_metadata: (RomHasheousMetadata | null); path_cover_small: (string | null); path_cover_large: (string | null); url_cover: (string | null); diff --git a/frontend/src/components/Details/Title.vue b/frontend/src/components/Details/Title.vue index 7d10f687f..6f7c65a76 100644 --- a/frontend/src/components/Details/Title.vue +++ b/frontend/src/components/Details/Title.vue @@ -101,6 +101,7 @@ const { allPlatforms } = storeToRefs(platformsStore); style="text-decoration: none; color: inherit" :href="`https://www.igdb.com/games/${rom.slug}`" target="_blank" + class="mr-1" > @@ -117,7 +118,7 @@ const { allPlatforms } = storeToRefs(platformsStore); style="text-decoration: none; color: inherit" :href="`https://www.screenscraper.fr/gameinfos.php?gameid=${rom.ss_id}`" target="_blank" - :class="{ 'ml-1': rom.igdb_id }" + class="mr-1" > @@ -134,7 +135,7 @@ const { allPlatforms } = storeToRefs(platformsStore); style="text-decoration: none; color: inherit" :href="`https://www.mobygames.com/game/${rom.moby_id}`" target="_blank" - :class="{ 'ml-1': rom.igdb_id || rom.ss_id }" + class="mr-1" > @@ -151,7 +152,7 @@ const { allPlatforms } = storeToRefs(platformsStore); style="text-decoration: none; color: inherit" :href="`https://retroachievements.org/game/${rom.ra_id}`" target="_blank" - :class="{ 'ml-1': rom.igdb_id || rom.ss_id || rom.moby_id }" + class="mr-1" > @@ -160,10 +161,7 @@ const { allPlatforms } = storeToRefs(platformsStore); {{ rom.ra_id }} -
+ @@ -175,7 +173,46 @@ const { allPlatforms } = storeToRefs(platformsStore); }} mdi-star -
+ + + + + + + {{ rom.hasheous_id }} + + + + + + + + Verified + + TOSEC + + + Verified + + NoIntro + diff --git a/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue b/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue index 118869971..959140196 100644 --- a/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue +++ b/frontend/src/components/Gallery/AppBar/Platform/PlatformInfoDrawer.vue @@ -379,6 +379,19 @@ watch( {{ currentPlatform.launchbox_id }}
+ + + + + + {{ currentPlatform.hasheous_id }} + +