From c8dfe022ec3437355a939812fcd2bbba012b74b1 Mon Sep 17 00:00:00 2001 From: kaniol-lck <375520360@qq.com> Date: Wed, 29 May 2024 15:15:59 +0800 Subject: [PATCH] update versions & categories --- src/curseforge/curseforgecategoryinfo.cpp | 11 ++++++++-- src/gameversion.cpp | 8 +++++++ src/images/image.qrc | 11 +++++++++- src/images/liteloader.png | Bin 0 -> 25839 bytes src/images/modrinth/adventure.svg | 1 - src/images/modrinth/economy.svg | 1 + src/images/modrinth/magic.svg | 1 - src/images/modrinth/management.svg | 1 + src/images/modrinth/minigame.svg | 1 + src/images/modrinth/misc.svg | 1 - src/images/modrinth/mobs.svg | 5 +++++ src/images/modrinth/social.svg | 1 + src/images/modrinth/transportation.svg | 1 + src/images/neoforge.png | Bin 0 -> 1123 bytes src/images/quilt.svg | 1 + src/images/rift.png | Bin 0 -> 4142 bytes src/modloadertype.cpp | 20 +++++++++++++++++ src/modloadertype.h | 5 ++++- src/modrinth/modrinthapi.cpp | 23 ++++++++++++-------- src/modrinth/modrinthmodinfo.cpp | 25 +++++++++++----------- src/ui/modrinth/modrinthmoditemwidget.cpp | 8 +++++++ 21 files changed, 97 insertions(+), 28 deletions(-) create mode 100644 src/images/liteloader.png create mode 100644 src/images/modrinth/economy.svg create mode 100644 src/images/modrinth/management.svg create mode 100644 src/images/modrinth/minigame.svg delete mode 100644 src/images/modrinth/misc.svg create mode 100644 src/images/modrinth/mobs.svg create mode 100644 src/images/modrinth/social.svg create mode 100644 src/images/modrinth/transportation.svg create mode 100644 src/images/neoforge.png create mode 100644 src/images/quilt.svg create mode 100644 src/images/rift.png diff --git a/src/curseforge/curseforgecategoryinfo.cpp b/src/curseforge/curseforgecategoryinfo.cpp index 34f91f43..9bd5604a 100644 --- a/src/curseforge/curseforgecategoryinfo.cpp +++ b/src/curseforge/curseforgecategoryinfo.cpp @@ -107,12 +107,19 @@ CurseforgeCategoryInfo CurseforgeCategoryInfo::fromVariant(const QVariant &varia { "Creation", QObject::tr("Creation") }, { "Survival", QObject::tr("Survival") }, { "Adventure", QObject::tr("Adventure") }, - { "Puzzle", QObject::tr("Puzzle") } + { "Puzzle", QObject::tr("Puzzle") }, + { "KubeJS", QObject::tr("KubeJS") }, + { "Bug Fixes", QObject::tr("Bug Fixes") }, + { "Create", QObject::tr("Create") }, + { "Performance", QObject::tr("Performance") }, + { "Education", QObject::tr("Education") }, + { "Galacticraft", QObject::tr("Galacticraft") }, + { "Integrated Dynamics", QObject::tr("Integrated Dynamics") } }; if(replaceMap.contains(info.name_)) info.name_ = replaceMap.value(info.name_); else - qDebug() << "Untranslated category:" << info.name_; + qDebug() << "Untranslated Curseforge category:" << info.name_; return info; } diff --git a/src/gameversion.cpp b/src/gameversion.cpp index 368b3d55..2397ca38 100644 --- a/src/gameversion.cpp +++ b/src/gameversion.cpp @@ -17,6 +17,14 @@ QList GameVersion::mojangVersionList_; QList GameVersion::curseforgeVersionList_; QList GameVersion::cachedVersionList_{ + GameVersion(1, 20, 6), + GameVersion(1, 20, 5), + GameVersion(1, 20, 4), + GameVersion(1, 20, 3), + GameVersion(1, 20, 2), + GameVersion(1, 20, 1), + GameVersion(1, 20), + GameVersion(1, 19, 4), GameVersion(1, 19, 3), GameVersion(1, 19, 2), GameVersion(1, 19, 1), diff --git a/src/images/image.qrc b/src/images/image.qrc index 0366761a..1ea4f303 100644 --- a/src/images/image.qrc +++ b/src/images/image.qrc @@ -14,7 +14,6 @@ modrinth/food.svg modrinth/library.svg modrinth/magic.svg - modrinth/misc.svg modrinth/storage.svg modrinth/technology.svg modrinth/utility.svg @@ -22,6 +21,16 @@ modmanager.png gitlab.svg modrinth/optimization.svg + neoforge.png + quilt.svg + modrinth/economy.svg + modrinth/management.svg + modrinth/minigame.svg + modrinth/mobs.svg + modrinth/social.svg + modrinth/transportation.svg + liteloader.png + rift.png diff --git a/src/images/liteloader.png b/src/images/liteloader.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc5d1036d738afa145abed770cd6746e892527c GIT binary patch literal 25839 zcmYg%Wl$VlwC&8m;O=h0-QC^Y-7RPc1ZQw}hhV|oU4lz+cP9|sLU4F|_tkrKe{}V! zuI^o3Th}>z?MPK+8DsOPR zAnW_b8vrs3S#>1}*SY0~iY0Agx}jFG4q zE01eNia&jn-+1qPdiSO?)Jc6t%ub{#OIsz_^#GpK1v${hT7RJQ(Z2%KU^=>o^K%*sqBYa@hZ)$>$2pSbj z%{QgRqX0Al5y?z%Y{|*AZNE-R3fw#VWldM2e9Zo_B~+mW6>f6dVy_!Hdv6jYcDdL)cp}6zO)pap{K?0-=g-%-dAONlxRC>C z12fq)r3(#sJHAL*$uHuVD+xhUxu8?IxHz^<8#|yoe+|Ioyn^P9t%Wy)hNfU^D1d>U z5Nsi)06i+8b)YE6YN^E_x$m$mOKZVPqU+ARTByE-+5&>Y=?em3N6j1^l?XjO?fb7y z(V(I0wM0409SDMsK)`G19vE?g1Vg*nO`cOgzeyYt4^1lqLfJXhv>cqAtZn&`(gOh}eG8(R zyY2Ot${_W6KTHsZSaCJ3eDeu~6^#U3C&nv+1y#FxdbXH+(fgm)vI4bThMxAsu3yK; z$5(~rr+ttC!9QWBLlY2pES!v?D@@*gn@C%Ae*}QTz|sc)~c+_E_ zVsMp#nJ>RHca5INW}5j=@46k&Hm=r0PcM^zL4IR!%yF(rK=;3J@h&ML9w z+{8FK8H(_jH~S;xK@$tu$W#~*SU4+N7`$*)AZOiLs$*S(df!GDB)NxsQ#-35%f<)Y zcF*U_)#xgpYk zZMwE1wgfmFiaDSPX>#VjcXjd|K|rL7p}gxyo}mxU>^E#0KN~#J#8n^T{B>QX)iQ;M z;?-qI!7d*0-KhK`Kr{=r;q7;4Y z%heD#0&MMpCymEp+5+WW@Jj>Vtm| z`=rY>xet;LhlQQDHFC375prjguiX*Ts^$q_%1Eeb2{^sW|3`jSmw^B+UY_?0&uqV# zC!lnm@cyFXv}Sx*vt_{i-yX-UqyJSfDJN`_L?QKP)~9luwU1oQA-8M^cL{^$2!J8j z%+f1=9>i3c@VmFM?%G9mUP&IxE3IciB@6GDa7WYrjK2d@G0^elBU_J6-kPxr_9ChO zoGIzXTX?PBeyVotb|wi+SuSHt>ifHRF<4;)EPxktO%NTj5Ss1y&+LkptSdnfpj~wV zOAEB2Sav#jF{DWrhGX(hU5nS#lUH=IThqMj^<2dG)axTNk13_}BEa#9f)&sE^%NZx zHyCh_BWZG1wB3FSB9*hiNJ!e+!N$~_!GF;-$#7gCWU_NM>( zH&-0f?>I~9agpS-T<d%Uq#X^k)Rp^ed8ou% zl>P>UTz0A#6ngJij!Z zxf9GyE3WUMsyWm2P%Xl7t1;q_f2$=DVs{r~S9y1z zXZ~6Z)kv~TkV((^%e`ID;e6cKU{es^NNLJeHV0u~P$Yj^V^0r!e;PuXDA%3Qhg?2+ zQ-a0Rl4$-QRZ?Ex3%9&e<|msxKM$F2*K-?%4}9ycv0tcD8h;Q;s?S8`am4mHj5M!} zO%!`=bQsF|IT-9(7myhm8ibZ+tm-%P%X6-*tf=1MZ0K<6@_Dy`l))L@^}I(isr@t3 znQaC~5O&9jk#ddF!?&|Wn`w^=Efj=yh8Ct$7N|-L&(yFsB@4{c)6*fol}G4cJySJv z^~OUEB?~spBeB5ASY*$J69?*M2V6W=m|HYsJVj`7$Zma)9Ymst*ZZ$7I2(aAI<~K@ ze=vDxSRedkEuxZ5#fdr)fwcGccwR$K7KQt0DknP|{r9)09&l!-MDb-Blsa8l3Tbc; zuQq9fV>q~YJ$i&aC|~FjDnoZusZdnG;YgRbS2UWss9#7ED_;Vj?@(1+5nHXs$gRtkE=;od35U>+EZBd3))1 z>EmOR6^pOm^d^e>pmOoJc)it;#Uw%C~IXUJL1VOlpj&5NLBV{i zIR^k<5D#~WCsi}w;Z>t~tK?&gLCm-%_=b@w-4S7---)$wVZq8amE0-6&ScF9&UiLg zTqk}Ow>b9(1)96vQp_MkVDA7q70Y!^Omx7(a+L|%A3KwEE4KLxR}Dx6*!z|>!;X2} zW3yQAm-l+?rDVT?m^osF?oStZMufWHFch~D@(BrOY}CM0&F752S=QW>%{{gilP$?K zDtqlmx!FEuC4LIUz0P!Poe{Hb^BL0~Muq6X^@l5ylZX&c&I&Z@jASf(H_ozWIm9Cv zQGt*o2?+>|=?4hMho&-gGj&7ez=PRg@OGHrdYt+;HH5JD?q-eIXM=OQ;*{l|X3#uO z!j8;p9)k$rAtMf24IGr1`C5-pEq01M2$g_B&Wg@tjj0%LlbjbOdY9{SQGmb-o7zr^ zYqbzq&7ITjKm#+^x?|BoJ8VCvpJ4}K9hc|g@pD>MKH#oumaJ=N*!T_0y{uCp&gwom zdnGIdHH-$~NT38F<`+F2lnRI9Tx1!zEE`j?V9Ig=6cYSm{1ywe%{lEQM0Zs0@V8Xp zuz#!rxSFF;7s8_B3a0p(I^UDOmIhnFnYEs04E%OsusK)gQ7K--M?Ze+ndi^Is2jW= z=Fhe>ZS-pq=-^`_6Rims)*8!yKaIZBhQMFeCbL$f&})3D%15AxB=H0!w#_Y#2;f6+*EXI3w68 zUgV7z4n#goc-cd!dLcSu{RO&}HYF94PZp005hOc`hoo1>0t<;8S~N0+Hb=D+vfb&e z7R}6G2r3R_g<2E6!}cT)l@sL`)~33o-8yB|?SUw~%3ZtLJqA2+SYh8kQD;N(xPfVL6;sn116YBk?R$x7*v2Z>!8tGrhnhTll&u66h&%{9bf~xZsQ#e-SGm)qHBQC<&ZO{3O${Ttd7+1+4x4yUe~` zzK!KDacSi*ar)oJy&j_rfM*J%?I_o${{dUxVi?;LC8+!A^L7CgnxH;}AmWw`L$r#5 z<6klyJnh7VT{#%DP_6#p6B`y&27&MTu#b2JyMga#J<()A;m#Kopmsu59eR0vqK1v~ zK=Obnu|BOKthk50uF~2(AME98uIkxFF*>?on~Rxw{ggr3(y}ccR6f;G3ash#-1y_R z!aB>42@aKR52kc*QFuAH@Yq8vDX|?E*P#X*3T+H3%9w>-|<4(_q$0uoy5oAWdv&?qS4BzZ>u zG#P|tCFmKLj-Foz586vOSRY{#jU9qqz9M zGtVO+TSNmBk?Ajb*_VI}SA_9?irY7bKgF?4|CRfl>--cdvtSn#)Ls4lp)`lDkqJtK zn(Al-w1O!}tSJVfKvMdE{n+mKxcFiZcry6Qq6Bw!&`#%bS~x7$!-tDzB6(Ky*P>?t z$`*Bb)n6`dR90htFhX(=)272=>|WzHwd968a@{XlqP%qbjV+y@@bu`X>mvN}U=?XV zGyj6*>Y%S?aJ^?(hb$(jJ#J+6(Qc;GM0PfUuUJwK#5^(~y4nvs| z5W%(Soej9!8>{ z97A|<^(2O+@#C;gsvBC1OAKPp?kd_EJuwop5Tztthg09)96w(& zTYoWrX?7-MLa0Y)&NK2teY=0ZeFtcq)wyc?cC)@iW$IulbM8dfg{b8y(Z!PXQG=B7 zPPH(Y^6*D<*xOiMpDp5rxc&Xb+K!mEH7r=4XW!mTo>{N~TenNVh{d(D$lZY-U+a+2 zzxC-v=dJYj$Wu7m#~F<;Wu4l=m7?Tg#o?7(BroS3u%)O&xH?=(Vx0A!>0Sgn2qi$e z1mm`MU8P^snPX{ImA_ke?j*I4AM~ozH$}gzL<4b&OOG+Po>oSLwX1qPU=4xiy`YJ0 z#GSd`U8A1}o=v7!5dF?u0k9YBG!ub40DkLknE(mPR;xE~@(=b!TTA;463*vpjXPCt z>V1o7iNM1nfNIu2QN<3LfjPy?xXClwCf0}B|O4OS;^97OSaIVQRPo zf~p-;i3F%v_0NdD19u*mY&GhE$3DSbGx+bh!M4pmtMMD|@GcUYPS-4xr(%;602{c* zSL6Yrb59}*d3<($jV6%MqLnKf!>+?fiA8QYm^FpqkRW490>3S{7tj*Zir%IfdBcA#FJ-y&EM-WM zp=Dg4dOojF{d`_m7a{lK;H&%jtpL@}cCT@7T5xphRk;Q<;m=MLi1-a029UpEBx`=7 zn3mv0`_6eq=^_aTTQX8ws}BtLx74?BjY|cVYf~M4$})$II&LCptM8}xSd{;CxXNEH zqX74eO3P*1{11j!EOoX{l=9DTzl0oc+Jh+OFdsS3n)m<(gj&iSypQYudK<{3N5jKw zIscVCEfH$G2~VnHbWVP&P$r(a=&)$eLA@?>Nn7p9wS4VZb;`fE3)N#Gzr5Kyd*FxW zkbNFc1H{1E-=!6=ewj%n1|p+>uY;FH4@@oKgl+<&<4dRxb-sCHBCHwe81gVl_gmKB z^#!KnD?(5J5kpcdA;i88F`D9t5Lvd*vdK2!N^B^44ngP%82!s9Y}67Q33Vh(2)T0s zdT*l^?9b#|DW`9`wiOf$C9kku z5mj{DG+>!WvJ+GXm51Ai6*{nCfcO@Lsw@a6;ptT=tv?e!JGCU$Ve zKwZJ!D8k5k=&-2c3HnyZZQyIn=c*zunp;aXc?U9KQlogmng&cGh(g87z*>l~&AH`iyr8AApSQ$U!UXti4K``2hmV-K~qXgC=$#BB0AQ_GGfluxE5 zv1_6&?ua};*_g%FAW%0e+k3t|mF5(O?am~P-2ePXSOS%uK{!`| zU8%R5)qjj37>1VwIsw_(iYV6wHaL;{jn z3_(2@#UPS08}UL{Kt=crM%*na!Hg>59tVm-9bTda0`s0M;bFM{pK$7pxUYeSHIg;v zI!P60pQ$p^yC-ft^rnxtslXq85uH^fnMZZ=uw4LM%T{T8S`Y9+1q}ZT0LgQ076l9JqoCV|5EG?WR;8#1mso| z87>BA>=uQpLXo2`TV~Gmq(OdJl8DvpVO2@WP0pfJ_q=}QIVVM$ z|KWN>|32Vq#UlPLO0T%z&@XRjLRU`@|FeZ`;BS4GbQGlC2=)jdjfZ*oLcbl9XAnQ6 zJGc(k3zj;hLMy0WVl-42Hh(Q>2GZRtFolgy&EkUNiT?6*`91VgAcB}~l?fbzcC!8z zqp54#k$Wpdi+nJ_H8zAjm^>7%?=#|DAX^?;tK5kMzz1-J^PSUT$UqzfzjtUVUg>aw zj~=&AhXw;-&DeJ!g%31G>7_+0i0huPM;+aav%Qt&JoBiZqz_@Rs(7jh7J1o4#l3H5 zfip5^vJ*3U@pE@~uZY$H9-eq4_125XoW(hR0tUS>WitY8U(D+lZfNuE*|0+!+66c) zL@P}thg^_kMeb*ib%GRWlKW%pv&%iQE&FoQ!E&Hv<5pEW%&1lWyS2_ zBEfToRmu?Vq74h1JKK>QPRM$YyoGB;LR@&XBi53!sXlM-*gg;N$~J#S65)q4@c#An z&un4(5IAE*Dr;#eLEm_q{am2(M3PuF^PE-FpsL!aZrK$om1#dF27&dN28M$m9VY5A zuQD$v3bPk80(@2AA5J9vbj-5$M-Bf+;G}ZLZCj*Lxo$Ob^xnO3n->g-Kozdl#T!oa za}4!h34bIkvcw-+BQn9}pJh#u{r>UaSn51>OWZ9`l#PJ8+Ean%l?2|;PhytzUR6}F z;|G1~vCZzZVcc5%zyl#sl!5$y4WRYU3=2_dC)C6Nf8KzzfzT>y$Zs-JJ0OxMJ=&Km z`)Wi+d#ONMv6CI*{q?v2FYB1m!0StsHuzj)VCCN8*Cq91%S>(xo&qJag)N+^_?OXm z#nc5wE3~I3-S2J|9qnGHy-tG_hwkz6Ojz|@KT*kU^c0F`X^Ug@Quu^?E)>MDCNi4o z^AB8P4PIhfU&%huFwHOm9Ht~TbDL1QPt!@p$cjz_>~zNgo2E(L(AGX)&zFkV)kD+)A>@BFTUjFjvJuI;w2S@_YssQPI* z_E~ySmvW~X);X1%ik6H+%JO~^RHlr9O7LxSKS#ze4y(T$)gy308qxjFxzGamT$nNH zV@d1BVhJv`bbMU&#m*R49{hi5|#bE@qAt)K2bl0a<3ysglPDChpFhJV@xnj^76&y#11AHzrCY&~X5d9%TAgvb;kVFc>HXh6{*^Zu1x zeJLr1hPFid?&cD)Ia8c(XHuXyc1N4K;B)!WONqO?bN^^SVh36*#ZtqjZ$HFt|H1wt zzfawsjr(r$w9yv3KumugPE%Raf@5E zY#AFiwWm1}sElRG^*~C&)(UHV?SlP+Y#9$(aExA17ACI>xl&m$)*l@bObtP|<>QTZ zH!*f-G#FWf1a4Jbu5TYeB9xWra9X#qASn#^8Oe&YLc4l;RC-9BR(;(llh3XyM{3!^ za&v)Qhbgvu>yO)$nuVs(Oe}6B^Q1=uGd=VOfqpbzJ{9ksDl3+R@Aa9~DLYS5%ZbSz zYba1EEr}zm?avpv;7vG%yCGls#<;m@ue17*sD1-Kq*9i*q!Hb@wR8*thJWON=vjRE zw&E?yF4Zf2W~_=3=h-%(d0EQNY*>ZRTGZg zDovlMrYGo@7W|=B-Vg+R;Sez&c&3p^v=4-<@*;(`GhBo}`V=o%50-GJ3?tTh`n104 z*X}Ws9Vi+M+W5oFC#-$&3p!C~?%1^=ZOBv@nk9(E?~w|E8Y;CJLUuVSl$AdA8;Sf< zB?~8ksXkg5CaEz5&*klJsfbXY;EiK(jjG%!m2kk>NaTBlgp$dTFiCY>o%m zZc3R~Pyx5FWuS>3cFa?!h#7ke0!H)3JRoLTlv7NFzEZ@*<@7xZMwq8FE|Zt&eDwV< z8Ay|Y)#r>-VskLbj&!~^Et37brP|HH)k75<$?;|0>zR$~+l$xB+vU6eeJd=fZ(YXW zxdrC@0aIa&IEpL<=xC$mkTZ3UvDhz*Mw-LBFh3cjZo%2VEFJYE3Y(AisLcPalz4gq^eM~o_t%k{^)3;=R#JK)mH zxidQPuuJ;1+b-IgA{7?4k0lZiN z@R`cBO%J_=@%jn4L9isArp!wi=Nx&DiYyFcdH{g$4iqV*!XuBvaYOcN=+j`={^#y{ zmnkKHyl_Hw(>u?$FUM4lfX)P`RKh9>CI-wXVws)G$)N@S`s?|iCn`?wN{ILXj#eOR zwgH;;3oAe?zJUI1Ki&9`Iqm$J$Ya>CI#jhWY*1@tqAl5votbi^ZUm6m38S(k5_YAt znKjZPJ5j|JyJJBt;EdlzO-u0UPa$9iC`xCH!DPdP8O`MCb2Ie*r!d}Qz4QI;IeK$i zt%iL&{N=sN9yb9esZhuqwTy!ClivKaabD#D?8BN-7mJaLqfMUvp{Q$&HK#* zTf7F*JKgCQou_0z@Z*ns{c-C4wrgWXvsuOoUj?GZ1g<5k2=i%a`Ydg`HFvx`!Z9Da zVM5K7OmyU0f2fUmfu9a~DPer!qxV~CwxuS5nmr{F+7Xu|BBDa%v2>7?2Cw3G?fbA@ zJm#k!G{Eq1xb6fR*S@6HFw0($brHiVscMt{z9B|6-J8!aRfuNDKFdI|cm&rsi$(%% z6$)2?9twjTKDp>V(;GNsZz&(#M*-OII?54%?tb)+Ao2UF)^*5Lo5_IFLY%Yixp6Dr zE}ZbIl;eU)}?iB6QcJ4=r zK;7FzK?^Fx`L^-oZn_-gTV^7Lh@43m*SNVuX1t@zgpDfd2Pggm>?%8inEhm=sFnPR z#R&WgJRpwHkH#Fc4WL^3IWy-ld+XKJ)m++lGH$k=6_e9NZMTX>X>^jHT8zHHp(aX&$WxVXA8@Jqt(4}BVA2?Mx zif7bw5&@KF>=C!DQuwWK*hKZsft^A}^M*z0BezxeDi(Tvm$4En>bRA~RGb~)R0Wqh zGhedmk1h4&;j6Kfz#xk7f+b!h0kZffwQ+W|Ov~br_JapaNQjdmSPd#r+!oHfKj39= zoV*6BGfyc}8U1gF75rd!+g*#!ZbCvcM}ihh>jAm^PFTLN=s{IswqQuLjx>ycDitR` z#Pl0d3Fjyy>R;wFRU1cy^6HwJy@^bY?#(T~z*8bJ1xQ;*#~MTC>K~jCJW&fhe#fhv z+5n~x99Fs`Zbs6y*lh?dep=Jl^8|$aiKc~LV3SpRHQ_=~as)5a0%mn5Xj>>AAO-bI zVzK04Yf9tbC z+lN-6hp;Hk>kYTdR)`#O{r;`i-ydCmqS)}gl`Y{UEzE8t5W~zO3g+eztf3OfU{=R! z=plH5%!D9jfD&wZ76GjFbnu^)DC@AXp>QxKZ#MrV%o-(Cdm;irpMY=^kb5Q~rq%b| z0bfcBevF{45FE0gK^O((t3ia?C}4T)7qxy0_6j@f%O9I7Nnr|Sq4dS2w^K)Y%sL3n zbSsiO^jgI6c>$OxjrjXIa>xC@DX(Bp#wox0u7SVm!6QXRcGZQeBUZAIyOdpVEpcUd z#`i)g!oblVwnS&8!IeFWKo^*#cZk;Z28|dq`4qUSQyIdAtgEOWvul{bM#L6lQ;oB? z4?+F?VWoH*Iys?hV8AdHs%(;e^5@^AFnyp>&+9`bl{BY0+m=3bgrl*y73=f7q#~c9 z0D(U?oOKw2o&^Yr>hn%KCRHk4LV=Plc~H?sj3@1?Ed~S0S8_0M>Nz28Xu-e3=MdE9 z9i|MixfM$wh)kkwMy!T=mY^u+@=4$);DNi2;#?O;ZXr_dJA+0RRCn2VZEdXzKz@7U zPtxf;Y>3?&UtZP>jU?C8%*Sy{6z(e*1*bb1Fl<)pmS@tK z0=5rL8M_~ujM@m^v6p;JyROrw zeUg!T@239ER^U3nNBQEVy$Q`Z*TVG!8mNg1q)~_lF?c%yCj!4D%7W1hut4B8@Cqm& z36u!shKSSLcL@;8d`9mB7p$*P;_18TWQg)3afF>c;xwp82Ov*g6cU;Ud6O?~#u zb1EgpY=n=!`a7Nwb7DFa>U>WAraznm@8 zl>*tnKB>AbZ)qsCc|SKYPjUtPN?0{a!^BD-C*VL}SJ1wv0zQZr`U{gLR={!iyG+*) z2}V2210o?=Ld?S-*P*GnS;d<}UQrJ(kGGgZPTASn0LUkqxCt)X^C^K##s*^36oRR2 z@@Ms#Vok3+X%@hDKDQE`aB9b*3805KwhGv^1q9mcKUwqs;3wHLA2+T3 z3d)x0fDS-w*Xmdy^1zA_(JI96t1!XUj#Xjuno4V^!(t`Q(ld{@N6~%L7&Cz0yJZuR zWz|OYf7GvMM225_dHtTgIuFymla#9DF}DB@ssVhBbXLQZNUbY|0q~;1JU@RMe-s*% zS0Sr91bxPWS@I7`20ocPTB&NSwl(Sy1kboy48yisEosa!l2xaiJe$t4v7}mcau69> z-tvx0r#<^1Xj_GHCWG&qNfy8MxgY?)L60Pt!i@v4wbC{dXh#&2w*7dkD~Z7TC|Iz8 z964>$X3CMRp*?@kvGhIV5G(bs+xT_e_0jyRfsql@u)*AYN=vpi3r+19&S%0}(OE;c zi`hV^3{*jno^Q<}4<&?)jj`5L0Ap}$k`lQp*N_0YEnFBo0NX9Iw}p)9PJz2v+fc_o zfGb;$6;4uU22E02AW(yIPSg`I4*oNXLB1w2Y$oIJ*3bHSAVAmHn0c7whk&MjZ*fl{ zhCrL=HH9X2I4bD{QyRmNpFD(}sqK3YwT)Eq(U)->@!!uWQ#Hm02Elg=t=zbgA0Sz* zS%$>N>+DSU%^*(|^UWFw8jrtkB;dN*6q}YPq$*)D6e&IlU|vPd&EW0ABl}k2PMBFw zNg`q1hLfhG4xl&s3_%6%NE237*A%#-RIez0E=K1qk~q8Ux}A!vPuWOr+M-0=NDJzp z#qRietbV`Mc6BsKU(8s}=~lk*)$8r$5#``ZiFVZfK}<1L>FUagtYLY=$^A1Gohs0p z90wm>Y^I^u=jYMSXD!4Km_+M8tfNE-QycC)DG*fuX*M{vv_a4QbV?q!&9NRXlfJcQ_;8Dw$dzan)@6cxt&+J0`W+`Qa0 zZEed`ExD=fxz{aAiDgE}v@O<&C{zZFV~SR&QY7fp8<{S46yyO4`AHh+q>J#%5S1bd z#@H5~Ssii{jTXeth@eM=6=NL8&VmI)nrT*ekiC)3MWL1ez3kYmB|`#FqLv0Vn=$uk z|0;_l)1lNaFj4`Ixzkgngo=i86k>T1(RUv}6s3--Dk-H3lWamdSO==0=Dsdj4mty# zLR;%uB;XR+Y#~a>ZU-%#ETogdU|VfMbCnbNS@4t!v@){8nNNg0FP)Da+=77{3fjK= z7Jx2_NQ3O#;9*|@pLjKs)^GO&J_ zH*0>JffBP7WC^KCPgQIrLsVaitN-I{bC!|3M3 zx`#37ZO>A%D{;bzeIFAHk+$~)eJ?=95|vo$wPoDIA@BlikT)TqJ?`c3p-x;x(HT?6 z=Bgu#pZUk>GYPE5tDluPt}{R6Y}MT;yQ0Jv^`pevgEKzEo8t7D?=|VCPxk$@%-_S_ zw8a{-Z4=^zph!F6K$#H~y1M4VMdGc+eTH74d-V!b5HJoFAeHH`$TIeQ@=f8y}UUm$$mF?`M- z6a}1EKkW#uW~wi%z9@c-M2@2$zbEtG-LN|*hk1HHm?fB!R|UwY~!_mO0n z+2oygG2W2$kAaePF;ljh%|WRss21KJ65{|Lc3rJ5VM_-h7W!jyemzp_}LwqkNiq*W(0s~qE&^FlH#0V|dU_IZF>{jA=K zGk!IpHyoet!6kVeQ7f(2VsV;>UNZh8?AsW=2-^=-b2w*m_U14e|9rMKNrBGDEM`7r z&je`2mdpZ9gH(cGIKOZtnK~liJ#Q+-^o=Ej95C*T`ovJcZMX~|10a|*4l~cU(<0mJ zh$;TcFY9@)jR7q>fhZZ@9XV0k4xY0vrjdCzSeFdAoQV?x`LYjWi1>-4uxj01+J}K* zfGvcRM}Qkt+He-(q6I`EZApq?Q~)nuy~F4JZdoyUR?#*ubH+lBvHoQX7(GetI2bmi+W5ISYqnzJ799r z4Yze2_wCQ=&r^3Y74AKWBDZK4z~|yQFy3#>2)JdFfLG}KKl6r>T2;rlY^O=f{X`=E zM1ZS)L>5KHo1P{Q{(S#Z?Wp&I&4u+?)I<~|mvAtsfB4B;DiwjX@q9kdd+tPbK{8Q! zo-%kAYLEKvj=-qR1qk5JKW1o*zmPKVC~p zJC?Z|^jWyae`;9;po;wDW_pWa7_qr`GbpM@R1OH@fp5+}6Pt#-k10*I!+$Y{j#&Wube{ zo8L@ge}0fiofM4ghLB+@3NX^6>`sEw;xo1S^Vl_4pV=d$U!h|4k7-SA~R*($VjWkn29wYUhH9&)@sVqoJnIIsUhHbB<{^n z?B~4QowW0TKsr$|0jd{&4XO}6Rm11TNTuMYShDzW(NbBp3R5rOZp+;lHhDgCx*g5h zWd2_I?>HF9`tIacMb)ACF<+A$Jv!{OepYCo+Bea)ZgJQ4to&JV*R4E-`R=aO!+#0SF8jH_MU|FAQyK#?;AQmFLlC{O?@clQ z^1<}%uZ&a)g#Ll^{4gKzq=E~Zb7$o&?@Dkf^xdtSvF!3a+EVZF<%gcc`Uf275Op%a zv0LjYy%SSY=U9HhHlN>__5N7{;3$QMeZ{IpQ)e8*;k5l3C`1_-g4`4Wa)$eKzN@J; zNy_bD49Y2}X@%Pi3DW!9sRnPfhD1XWf-ai4=HK&Ff(c=ts_hQ>G~&dn4aKdbtM#%= z`es&(_b-~Ihj&?1@@Qki%=Y*lcNS%aCNi_r(2GC_#cF({>z^IeJ$#7FdHM%2_eTac zorA0i4}7D(d!qG^=zhAuu6~U(;2s0i(0UWz`rl*;*C)4%16ip#`xK)IY(2HwVa5N{|`f~DqX)Q3_7*&QJQJAw~T}ZB_(4(^KEtI9%mmAxQ8I;63zHPaOWie zKuFpIu##cMvKLgWB1uaIb6^t^Q7!!O6zztOkjOs)P|pV-cl4+ho_$cMEfAeatdn4c z=lN4QFME9G_ahMNYTI2pkxCX$Q#c|Q7Z=$aH!u?Z27dNuy!q<>a>=^ zCyO}*l3YNoL!pf69qunDO58vkdGmP~0$l05m`-N4D}0TbV)7e4(}`sNDa3vC&9%_) z=?)?m->q^XU&>qQUYYHPsN*|RK)+`FuN<4}K4?7L=Yx^i`IMe-k4K&P&IDh7Gv`+t ziKa&YsBGEIp)LMq@z-j?Kg>v=h8}$%awBVddrHNl9=`9s%>hD!utZ(jHQ`Ns-=BxM zOc&y}?NSG3+;hBT;;%FJN8Df~B7F*l>FOTQ9O>L3@r6IM|JxC#L=H^DMu@>B>dfRP~3@Bd%_sEZ)+@Sfa<^sFd zMf;I=BOYJq^x|)u68j<8Gc&`sIv~}~=d8$Oa^wZ?SA)oVI*9t*QTo#LkRA}Ev&SmcfK$C9MLd%2$ zv}_6KCjMUiex8S!Hp6eEP?I0&7jr#Ie6^VTj;=1nT(CH|6r(fhl6X1U46Qyk9p29W z4#XPzLOxK5y8h`!6r6TG#C}Rnn}9$|0Fqp*kN*2nk$Ams4kU@CNeeRtS|AbyWX=F` zX(IT}o{qrSSY#-4iZbT{Q&yOSszdX&oqI0}!ea`dk3u=Jqdu$-s{3kg-m|Hm@9E~& zI3ERMowdyf7H7Ow(OB?W4WJt`e#%WY*D_~R4Yw78cr$$ebZnh&kXo~s>r)|aWW|ao zX4LR#!wIKf$$p427>avY(Wy38n&9C<=DE0&i_FBP3{o3j8|Ie{w2;v;4VFFgQrjN# zQg5{uc-Dw&En1I||2nIrX!3qD&Z1Jbo+`?{92mK-a>Pd}UurMcqQTDt)6fs9&zSYIXABUh0 zU~EwLxo=NmX*BDPr~zEZzNeQX@#!hcx?iB7Z0tSMkYQdP)=a8*>fUFH!bnAmlchsu zjkVP8m+MVgDP7t$q+IMwzlk>&zxtG`8%5g1Np>1|+L$__B#JLIgd^;1`E0BA6|-l6 zJ7pWd9@_8y`I!;}dovH3=3o4!=f!Q|p#$#=*m;=sL7M5185K@QZ*YB2JIozZ9C2qo z;kWz>i-FTt4iZc4YK5oU4=Z9ui%jke`WL6HW+J$fi0*;8nT zQPm-daY8EMZ#F;p(G`^j_!A`f*BCoFiy41Y%F}UdEjibP!Tiv4-+Fp9jt_{wBS~z8 z&NRr$l%?;8r{L~;*r47GIo#vU*1ye&=-R#gE-xE3HSG^>vO2wPGqZyY z!=PWk(@yrO+Fw5{`{{twewi{u1;bn27a>D0T|zZrHPH4YH~&diwgIOz8)cbtK5n); zqn}HjkXfldKHtLhsiU>jvbh+ivDGr9!4%#)-f?M7t%c*cWm-C6NdNAKIsKpxs_W?5 zBy(bK>-}e{acR?DZdCZC%nkm~c`B%^;X@^#S<4%9FY=*iA=pg4PfD%X7gL#{{K%#x zY^T0evL{Ou8bKl|!4@@#c_ewl)Xh1Uqyl*~8xrJbi2Ax$?ZxB-x?(x`Ks?X$&n7y3 z#h{7b2kr- z-6d_08Moz(-Ims?Kb7S;UGsu|cZ!SkkfVI}FFBdAer{krr|Mr{L(8l?Rtot>&rP0R zoO;gw(`|6?Hk&&ZKFBJX^giL+br)RNV_6XS4N7m90s6nA4=yttKKeN<|YQ6 zkEP}y25b@ryBrldpyW(!0Y~hRbb4*h%(G#QxvsI}Lifzx&olT`9Wkq>|6 zr0wc8jeIZwFTB_)*8?JA%Kz1guVxoGpX)yH?$#K7Nb-hc&fG2c1xZ=R^h151{j16R zo2L(;7VW=>gIp1Sh;Hc}o4$ZZFKn` zLOOgMe!YM5#gEGe5Z`(KHU0YHy;Cv=$5;Re0Q|{HJEDW zb>q&YTCGgi!Lp_MD~j~zk7(C4a;uw~Oi|H6XHEXmcIyuXUjiW~%vZc8Ryh{}zX9?(K%EI-oGrH4DZ8+NcUf5@2F? zip%AjMiF8PDC;T+3?CmE!7lCpyEM=FO$#dzMAL@nZrdrBYJpz%R&&U(S6tB)0p+#a zR_Md>JbTr4!1Bd&TOqEt;QZ)cu5FPTGSE=kqPW6SbZMMe{!X9p8JeN`{zPIIbD*2azunyvTBNcr{w3~vpK}+9AScd2l zH(vW~HhdRf&uF^s^pxkO))(`r8GfuPv*6o~-Qi3bFxS_&QuETa(jL#A)z)j@om=}H zBI{gRaKKj?{NqPT`=~O>{;YMb?Y-^xOMPyaBYk}jf+Y6_aPU3_-{j{9ubF3$Hfbbr z-)dvEb3|NW-f-c58v<{wNoaV7L!F!pa0!- z^vWx2323gA@obigA=Y$?vmiOOcdAK573wB=k)TF*d~-GEXaD5&(xN?zyX-#Gq4+~S z!T@{cxVyYW3g#H#^k!K8pjVuRa@E{qpCD}P&UKn-`b67tEluU!Aj2W_;pGBBGw2a{ z1~~lnqw+mfS1he25py zML7At%{pLrNWig3A6pf(LX$zf655j(nMHcb)9oi_hPxIt_@5f>0wEuNQi%UcN>~!b zf+{A?=jzr_|CL}KcN%(&5Ke!}yX|_f2Ex)jFHR4tHy0I;^}OQhZn4g%1ZmVWv~#;| zi@PkEN7Mq)ha3kyZEV>wWBgzCoA%otX7%CT9iGyh1I}Fa zKC2~6y^kctqD1s}9Dv_7wlEvD?gV?J>T$Tz+lcyr(zTkG$cUj<7c*vIu{zQi-IiWe zqw1)IJY-*SwXWAq{aTKce)STZbKRQLKKAA0N&9Qzjz>T=pRfl5yFRw4>CunA0qhc& z|HAoAS2hxP|AciiJ(#|r5Yk#KA#n;))gZ`YkglHij)U*dy&azly-0%IPo2pia*k5% zcXO>Ln$!5ald_MTFurdGXnDLb;SQ+;y4ojosFCCok1^ySLBrH#0EhODnLK8lQ{Sd;NJJ9C`PB+ zIN?3EB;2O``cLo8aK|VhBb;I+euEQCNfRv##B*Vgiw7D6QioGVK8PTug$piL)3S#H zPz)%{*3Flvi_JjPHO-#i`U06PfP%shIvMh(s*yUfS?^6vBE3KSUUSBlZ8EuahNKEw zv~CPXBaEX2b$&TtiMj6+!R;*knkWuP5f`F&lbp>BSVe-r2S_I+!K>QW7+?wF_F9PG zBjrMfAY1Y4ZYn_k;#yqJbz}Io2<8@r!qJElr!&By`02Az%D5!Wv6p;>*?NWvZ$jM} zP=~`CGUTB{uE_f9-48DZoGo%aS|E3Yn1$sTRfA!myK@DzVgN}{&r_Z+mOZ#43dh^q z?$C6CC^f9M04GWu(_`qREyGMGp)3;<9;I}#UkR4JAY9afVyLk_MJ#?A=C{H&DRWgK zJbNZ1=&VE(tPquzPTpA>IBF$upVfAS1Shpj1{WQFiUF1G5Tk)u$8yb+`511j6FaGL zTWHnbyuC51OU=OF*qG6Q8XXz)XTPU?RkuCpJwTk!mSDud=-UI;HtEA~6D1|BoaFO0 zyq>Tm!Z(EzB7P07I{FuIau}9UtzH-WWIn7W4x^7}^3ci6{6Q~5rFtIlW(jr2Aj=~w zmFaHl(P+et$QodhWMGdn1jBC=%RJC}@zNaw5X%e5`UWfWoKWeez}p9ypXfh$7c zW?^J-LuJQ)wQXkB%%REt7l+1Mz>M*rH^9YBNdkT1q^y&>j2oKFs&5EjMZSE}{_6~{ zXr9ub4+ez%n;uITo`8Pl7<20SF^8##vciuT-xAZRyiy~ggyKz+-X{&BAN!M@lC2m+z2R;=*B^ji0{jfgx}fY3)I zLjKa?R?~$Q|(dUp8of)dbr9cTG8LjH4<(Q9eg*9d(-GC+jyNVaT$o5<~IZ#lXwF5yHl z;{mlQU4fa0pf-heJ|!8>%5*j8`Lc9<$nC5TFf# z`Bn&V)Qy#)S6&S~Ws0$Zq>FRRb~-peC9LL`o{=bOoI)a?-wVbs6_z7)8~-V@k-*bc z59vG*17coox4+5->=Wo)@%5Wj8Cwt-uOR9be~Z1gHb}h(}&KqeDAQQ-OaZ_qCuQ-(#DTaLRSmx$4*eA#VvidOzOC znTGwBa1O9>o&_`wE^Jhbq_q*6;1)?H7L*F>E~WO6F+>Yd8K;A6^2m&1FW(UuZ~(x5 z&#gVuPb)v$Z@7+>bW^iB4tdr#&f1yoR>Gxqi^&A-HLFfZNhZN)q9o4w=L;0cG3GuK zK7iD4sB>nc6&Ix;FBS8Ga_{{cwiW&F4i*KoYiDV0?^zqG=LU(fj>${vsStu=07W2x zDT%dZw{eFhE1otW#0E&3mOaEa0|BPv$7=Ml2k!5{#P?p^B?iaBVFUZw_lNPe+l5E< zEfMaC$CB9vfK&xl7G4qN;eEjd_sm*NSi+P_XgNc#m)8D#K4)-oI8E4tSj|=~mIq%~ z(*eZDUQfA9pcXU7-Of+xWDU)4@NiK=kKgqFt3l0uo@G+{DQN#%xGDV}Z(RxvXeB z;8@$!Z-!#NK5Ll~RG(Kw#N6hz&f^gF8)jTa4$XZ$d_TRK<#yR>6U3tec{Sf{z2xxO z>ZZWIhg*xJ5F^6DXjNZcP=6^6#@~S2T_*mU=@MZYab7b{xjMmBOTR7C$;J21KTarb zG~c(axq(Gv?}r!yyxJA+f!isO+QO{Hbiteeq6ao&*?6E~;DXuw=MkGhxL+OG)x-*Ajca)yeo*E0$hz{5b z>Yr!x*5Re;IbRyn!|)Jg6mG|Ld7S}@_iB55T()*_Y?IU)sZ2-VZBA zq;kmXO#p&L8DC2%CGei;i|=I+w6OGNJvR| z2{=xf(GlYJ`(%f$p}BF;@m*1oa3Q$^qnU`*9y(DvDZrjj%IYa5Ib>AU7pbH z<<*y_bDNTm3WcVWcI}9c;(JcJwF*&#iR_6rNnh`G)M|&c5!j^z5`D`EDIBPQFTnrV zsTm|?izX+>7mVmKrDO&u7?W($c|fS3Vr2-)-hl|m`gh!b;hhf{hc8}K_1P`#H!oLi zVgVOPQh^D-0{Q4i{aZ@>Svg`V`+Uuq)0s|QF0_)$R(Ll&T2Ws5E*-pC=PB(V=AX$^ zDWK8b$-qu!>pW5q8u%&{)6B~E&HSAM-b>sHaf63+wQkUKJDtZ5rVq4}Xf@TL)a%)w zl-1RZH9cblWJ(iU=5ur)}X4w(Sr)x^Te;aM* zhLEsR%a%M}87<1_$133TRNgb$}iS0djNlwsz#hEVx*iDTcLl%|VRGN=?VgYx5ZAluq>BvPSjv|`Dl&Xg2E}r{;uRDFac|jrryx_s4wqW?aAb%e zKggTQLGH*f!~--TDU+IMn?0(rA5|9M!lZ9oSFm#|!X@K_?c80c^sL}0AgQvmrfTGf zn&A-UMW|@ijKoB1j^>^rh*b9ER}=s&{9chs9<@o0%o4oFT$5u--Z)L}C3jnVXpBPYT?vg1JHmi?LGIUrO| z2%vJOMf&U3f?b_ys-Vw!dRGBGpL3>wLYi9HWRGRTdzto=Hw12RmCDWh8cg8jpXg+} z0kmP>sk?)JH%6u#^C73TWv%_b2*+2-H?NMyzBI3Agxixzh^FQPRT0*=2bpd%h*U%v znP@^&&COpIHl<8*2i;$#HxKWXO=(O+3T}P5)JL5%CmsvY6U-d<7whjtOMsb#LMrQ*>w8?0lBxZB3p}L$C!4Xy&97-FjvrAQlL%pQwgz}Z>GqEn;BUcnY8t@gNBHt%iV7) z%(E6U>dR~VF^z+=YlVH=1aG|O187~QE`2%QZqF3gMlDOxBF;QoqhEd9bU#>>d5H%G z>t=bVOG89zn{*_;JbOChV#@HX#{kj&7x5?KPu58vngBP+Ud4;0cBHa$$2+g>{tcy{ zgL7w9ra4r`Fc7(GxR&*BG(7%Y#YBoSd%+5jZ~4OxHPSY~gDOt@eG8M1l0IYwRCuPo zEHx?k%c%J>?^k+7^QK68x0{k(0M|T_IV@ghy{Ijo3=25I}N;XWDN{9%H z%ilR?hT`uXr&c)h>A+QQWjK}bfP32gERRJS$kyZ)PX4Y0v;IRQ$n1?oQpX?kaWf!I zD*~+RvtSXdvy_0ei(mJ z`$Dt&aVvghRbDhBseSyua1zg&ZWN*LqT0mpJZ_H4$I|*juh*1Fe7sEhN9pQHn&7t{ zhc}%8THk-{V&sWovh_K@p_jk7h=ml7BR?Dv{P!fEDY&-V1{zT$OtUED19pR-xh;H(eiC>=%JI43y!i{0>J3Jap}WGncN|8$%5WfhBmw2^sNy8PTYq6{5G@UfXey&jj5jvww}aExAa2p#1a}CTUO3 zAc9)))$^A2iL0CGd~|3MPGdh!vH|026~t9!NET{eFb?t87)0@VXz zgvjq_a|mifv;7Sno(?Y`yQ5=?Rc|*~Kp1?27U{l;DA5Ji2l&TI)T!_)-~SAkKmYX@ zfE$#uj9IwYQTmkUVzheUvS>Pz?UGM017)+c4TAqp`StaaBoLqRM2A;ePntWyfaYEY zh#Q|);|-d~d4v|{tjjZeyEV?ta?9_#oi+!Wr~geT2k8TKZGh#~ArAysE@k;@&=O2w z4)RnLFc|Vfb}GL;IMzqs@y#R=VbT#V@Y~!TsyopHRLndv;i#p{kh=ja&fxn}Zz-fD zpUX&0C|FqsMK5g|A(q~a-I_Rn1CcLwk!xQ-k2het6e^W2iBZZAIoI`_uHK+*CFLJ~ zr`%&ibzxRbFb_H!`~_any!j&;Fo$|UP}A8iI0s&o zN|9))>q09R?kRVS6-+eWaIN2#{)q|d@Fzy&V6dJH??lW~YI6{9@m3WwMAc#>94=nh zwRAH|Kw=3$)ptX^HlyQme5&8;N)N4GiDgCeH|WD^%1O&0h)OiduFZ#GX5x6fku%%> zXPYL{ZSSr!`;BN)9Y!03Egl4G`Atc_t4FEK@YIssI%Q2s>4fO;!U)sY!jUl46UjBg zAcDAJwWFa(yn8i}f^isPb`gfQdT961H(a&_yvQ$6*YlGOTqJ(35x`6YH&!6qC`PQl z8+$FMb@wRK#cTJLOYd+%N$-|GgFa?z2%2-gAk%>2MLAyOS~w18*5bXQhsCMsn-1-I zMLQ2Oc|T1&F4rg3Y!-$t9*dFMh^J=``ws;%gqMC@Amnd?A8tIUU`c;>ln^uxycP56 zs%(kW;h|_&7O6KAWl`yKQiB1VX>5z>Dk=S45TkFV$)j0rXiD4fHUp-Cr==?M8;X8I zXx-4iZ}+e5qE&Opb~pQ(k6HuChWqv)%taL2J8O}`u(JI=4w7m{P~9V(xV5w)(d}lL zg$;jqhs@txAs_n*b2TTLdSq?Zk7x*FoWR!1JOO&-f38kw?H-1`k<5g9=4n}$A?09U zjQJ&N&{_TI+q=}mC#Eprq;|rzG)rr0D`{?cWgZehP(=;zViLK`2SEm)ekYfk#~zNI z;UspF(b*?Wl*7PH8CpP?4*$^R^VdSB=SPj^U?dz7S8eeKXD0+qBV9CQ^p0}5AQZaX zj5S|;F9#cUt}sUVd;&O-c`gJGuzk3pYRaLk$;hKV?Xl zq<#$yROMXfPP{|5{}PloqXm9T9q5RGu;SXx_H`(u(C>9=8E=rL(MPAU+;?tAGh9(b zj)Ar#d`u;kV`m^7&X4D4t>taKs7n-!|MYS3``zLw7~t-jdT(|lib?sp9C$iozr@bA z?q>!~?H{)GlG>1s9$%#xL<^t8YzceSC`mT0R*yaVN21UpyvtNfe(#AES6eYz<(szYfkUEFjA_x1)w21LJi7*Afv#HQvB=h*=sSPBcjh>wf z?R8T8iNGWwbr3l~FhFy?lm6188$2>AU&KZ(=`Z+@jz}hh?Y-7%t$Ug(+9jWs3)Dq5 zAx3iVf{Sm-vwf>{Q@YP#=l6#bOk0n2Tdge)zh$E`{kB`;&GLhT0qge8I~9AKpoTyR zdEFD{AdeRMiHRmHh8-O^iYpVLKflLuw&A^=4sSgpXU|s@cG5LK9(T^H zUs3Ll%S4weC4}uaEc@`ohZygT#6rE(czdKMQD`M0u;uCKy`P@*un~G|#9gSizsSXf zDIm2L6cE>E!H*LhT{3qkO&EiDi8yYO@Vv*lRai^X%oUBq6cAhm>?7cbw3--xt76WX ze4LoWvo1-xSDR#cbOOo0IqAhB4zpCoQF&2-6!}yE^#Sgt2W#Ne7GiwpzMlwSh`-Cl z(%QL+kk~^%G18*AQxv>7*HLDw;4$E_PNzF0lyJB`qNFmj)Dlu#25}JkxEZu6X>?Y+ zXMu!4jG~hc228#V z@{)tN`LZhML2BE?FWsn(TR(>ct-K&RZD=vRe3QxJpBU%z9WFfB(Iv;^IsNmC$3rM2S4@%q#v>F@zT;EuZL~)udZuXJlU7uM*9mW z3l*0FygOCY*3iNqx2?~l!*qp&ve1~# ztGzw18?Q`YD*#tZB74`#=o3OT6RqUK;x0P=Fz&f;3arSjmlb_899>TDYN!)NxHn=C z-mU*8DON=jpq_DV+5OQE1T^54X3|AUc1D?W!jUeG*zQ(Xng{5|zo=05cl_(l0^M zvf-rq%rhBaLz#VUe4j;80`QP8tC;Y@_DZ5@ZGM^>Ye)|7+u-!i-f}TxN7%v7 zT#8N6%A%y&8oBYJxcJh>DKO&WfE^^6ly_L71ffIF!`~1uZ1ynCi9^H^BOZ#ys?QZ= zekc26{J1w%nZq%WNc=_~3pope^}HgI18rq6tQ9XUz?zIsoJiQkjVt@TmqM zSeSYWa^uC4b8#aQXcg)nm z^BoXc-JkJbP5A8%jx!_)Z=u_W9W?ph4ZVT~lLiy_{QjY0NEhf)Apq!q*6X5MjxQv$ zg+XJ}=qvNsVfo(Q3<9y$iRns~>bNCcpd*3~U?<>RF5ks1f(QWA{|k{34K5KACYtM+ zI(}{5XRNW1|IHdUV=Goj58dYIitjej*e=|wPHI%-(>q|Q;;lg27ytLOTeuYw^1fNR zlt!J$F!~UX9^d5`2x3sugsiUDVwyd6ieETw^g0|m@nLXDwlKR&!1}*`o(}v6``LFe zHTPma@Kq(L95aXaPNz8?q%OTkr}pi2F%5)KcYsQrNR>zJ$?TZ*8kZQn&7UkAlI~P! zAsIB`lAc%{tW(3+ThQ1G2fnMNPp*5nVfjpqiPj>2hwIjAWyG5JRSF4tH3Tk+vwf2m zfOD80cG}qV9~-ZMZxmf7@}aq=*7UUr)xaIm;I{)FAJ1MU>yDz(f-~hIeAvfB9%nDL zZ0^wM6Ep_RAauf&V)^zf!ygE%b64=#G?=!gG{B*jfdCci?eN=4r-G=(yS-Bn>J>Rg zWB|p%>I5rVB1WG&(%a2eMn5_m!^(?3mKv1SIduJ@{J(x0gpmoYH3+ZxfBiK6_v8OI k diff --git a/src/images/modrinth/economy.svg b/src/images/modrinth/economy.svg new file mode 100644 index 00000000..40edd462 --- /dev/null +++ b/src/images/modrinth/economy.svg @@ -0,0 +1 @@ + diff --git a/src/images/modrinth/magic.svg b/src/images/modrinth/magic.svg index ae897d7c..2b037345 100644 --- a/src/images/modrinth/magic.svg +++ b/src/images/modrinth/magic.svg @@ -1,2 +1 @@ - diff --git a/src/images/modrinth/management.svg b/src/images/modrinth/management.svg new file mode 100644 index 00000000..5f4e9c67 --- /dev/null +++ b/src/images/modrinth/management.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/modrinth/minigame.svg b/src/images/modrinth/minigame.svg new file mode 100644 index 00000000..bd770ee3 --- /dev/null +++ b/src/images/modrinth/minigame.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/modrinth/misc.svg b/src/images/modrinth/misc.svg deleted file mode 100644 index c99ea7df..00000000 --- a/src/images/modrinth/misc.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/images/modrinth/mobs.svg b/src/images/modrinth/mobs.svg new file mode 100644 index 00000000..e64fe73b --- /dev/null +++ b/src/images/modrinth/mobs.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/images/modrinth/social.svg b/src/images/modrinth/social.svg new file mode 100644 index 00000000..a89700c7 --- /dev/null +++ b/src/images/modrinth/social.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/modrinth/transportation.svg b/src/images/modrinth/transportation.svg new file mode 100644 index 00000000..c67a28c5 --- /dev/null +++ b/src/images/modrinth/transportation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/neoforge.png b/src/images/neoforge.png new file mode 100644 index 0000000000000000000000000000000000000000..55848a69dfab001562da00828f41574339f6910f GIT binary patch literal 1123 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU=i?iaSW-L^JcES$CN^e3<0}fkT0hsRLrzJF^SY&)I(cI=d$AZkF-tHEUvWa_bAfKf1Z#HQ)UGDQU*W#%bRk zoO-(8xOKrU>leE;Hp$!1p80)N^#ycG?-+hKyZUz8$D~GK2-l#p#C!Fq(uzFRAMYF+9yUetiCwpdAE)Kooc3yh@t$tba&D?jtReXIH z)Bbyg+SBajtey3bcg=Lom2f`pk{|rSksaz^B(L8&&$uV@{^97K?`F&{TK`sl`(}P; zVaMm!uKg*HzieZiJ^$s^M{AcYo>#ANZ&k&czcXfH1l}FP4FX$2eP`Xwxi4v)oi)dJ zv*^jL1yPe`MjD^C*t#Y3X8N+tr<<}mn@SB>8c~8%=ck0k)|uYdZaj`L6bzsHdE=Zc zXLKiart;|Qy_uO7_&C@(>%y63mlvmf`+Du5YuI=7`*V8dA3wGD`$zpW+U$vnByQg?WI$BiGU_BZ!S`>0%- z;d$jn>cd<;P@D;D<&`bV%ijIRg#8J!X_yn-Im(jY!O$C zZlYhOc-43QrvL5p=1uu&cNs0|Go->ickVo}RQUg2nCrH|IoBl$9a4C2)i1Kvxb6Mw<&;$S!O7GzS literal 0 HcmV?d00001 diff --git a/src/images/quilt.svg b/src/images/quilt.svg new file mode 100644 index 00000000..93d24d4f --- /dev/null +++ b/src/images/quilt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/rift.png b/src/images/rift.png new file mode 100644 index 0000000000000000000000000000000000000000..d191b0799554d5550d88af627b9f359f02620270 GIT binary patch literal 4142 zcmeHK`#V(Y+ke)whS7+r7>AN6DwQ*(Eyj$TDmio@I*hiQYCBX;Uj{>=BDCL%(qv@k zP$4;$VN7haDW(V+lhdwoXhP#KgY;d~b-n+=`{TQ=Ypyl-b3ga}`P|Q1>+{^tHCJbc z)vGjC0RUF-ceFhW0EGU909F>goxE7&C$%mecCZ1Z9UI0`1M#OEq5x2yfm=Rwp~ ze!gcvMRr(yGu_7$9{zmHen;ZsU?Se+4?Nf;BM0G4Lh&5$mu&WF+OqhhRN6e1)R5jhJul=nFH8-F{0uU&!IM)Y5|Ln}tI#Di zensLhQM9faE1b@?vas-qQ+gkdC;R`lckc%2H-pF(E;OOk^>^$qw)0ct8 zKc7E;9+{i$Z5J*V2v@4bOJgw;3JJ67NT#KShexWC7HQywU@Dbe$gb&F8&*JGTm?Jc z%gM=U&N8GDTyjbL7*+#rF=WhXSS0AYuN0#-3d<}nQd!`$ zB7f=^6*u>oEZ$A(kPFxuY>j2!Eb8!BDph^A*w~gFFIS~v8Zi)zC(F3C2epTuwo>CqF9c$jy(fIYuLK`ey1VASvJ7Ggjw|aH{)vHFc_LOS(WF)>Y0J zU))MG5nyHUB*`|AsoMd-NN`%Is>d_2RVZp^}1XmPKa31o~Z zVDDC5c5ukpy~%#lhz;wIXTHy+Sf^$3DpWh<=9Sz|KzwSnn;1R|Eex=6`zjBHVA^iJ31%`p;IM z+TcM(Z81?RT3>zdr~AVgquwJCOvUI!bNwa}mW(qPW=6VNm!@1p$GM$f0__`2?*r6a zU;m|FW$bB6^+*E3>~X8gG%3KLPunnU#Vmgl!pSypI#qgVX*i*+4xk^+X)HT(5JN+VP*t$w~YsV>`p~oHL`N7 z(liV4bY5h!C~r%c;lzVC%VzlnXffVVZHkrY-wrYC0{^n)^HaXj@!+!+X+ah#Rdlj~>30+s~_mkegFejC5jn(nVc&wbw1 znDSsoLhq>bin;er51!60HBjKis$p`KDre2|A4?I27V67P%U*WMJ(i~%pP~=G(Bn$z zJuN2%GR+tilEZ(Y@L)2qwHaMa#|O`4o@sh%+vE#(wWc@ya<2ru4G?x~>{V0&KD8ia zRFt3*)VvAive^BRT9#297Kw}}B=lcD80&@K3huU5EY>Z_Y)J0ObQNWGU=F-hxgt-V zyUumcaGHU>rl_(>CcT?#y{_)^JNfv6t`o4BQ~i_fY#e?yuXE3Kc~HF%N0p=RD6AT* z7l#);um?7C*H_GgPKejXK)XjHW9Qn(ZX9X4;3eM50Pc27%><1N0kW`oogs}e|3v@z zlsK+;$_Ci4%~Y6eAJ4Kwj4Wz@9@~6Ah1T0>K92FGk%+u^x`_6}q$vw3E+&>`ZD$VS zp9o~qkS5(RlInyc_p!+Q-EEN8Dc5cFnz{KpHy%ezNX$873Eg-eGV zQ#H)+Nk^}<$HGD>ZZJ$A4D;!6`#s;QhWto`&vHV%C(=HQ@FRzFzDaSJ4Le;`J9&k3 zI0f$JT56KTnPY;f3V!bIYLJ>x_6qO%b{x~UZrXzvsZC(3JEJ9VJx(G0*YoTur{~H) z<%O?oO;(|!FD#BTXoQpuX%<_YtRhEBj)!<86X-LPO+n2@+iC?@4jkE4891C3)l0=d zPl@u5vbEEdD*FzF0>*pU8R%|qWstsgCgGbHLtSA!VURSG_37rZu8l%QI>kNjPW~v4BkK>Wb`@Nr`19$ z6Twp&qF7V&{5v&EM~HMAN7%-vwNhmvMK!M2nD0fTH=-b__sT~}-1B?Kd_E(I0CZZ#gq1oj=U=V%ksGz1>$|8GBuF|ww z{yevF>QToa0%xlWk=ec9&GL71=Tt9cjQ7BhSz@Q$vYB>=+{8%IU|V*uKA!A@!kg!w zbFp>ZcxtexCG30x(6HOg?K2K){`~B?RYA_9So5_A*T?{88KEanOl+EoX!!h#1acfn z)6_~H`NHCArG{t3{0HdXgC%Y! zB;-cC2_AB(<9Ay8nz&&<*<`va-63S>d}Aj`I>ePHX{kv9?Y+czS1d{iWT2VHpqKUr zxR`!VFD(28sW>AcPx-ViGX4$_vThRT>8QF`3>;mz5JqAS?$erd6KKi8YTz2j#k4Js z#LSJo@+*vjzM0h{X+Eu=UUJ#%aj=>~DzUw}bV*v=-_Om_$QK{R*63lq zLv>(2(7&O1!nShijvU0fxQ#h!xzLqX$1jYn*@y)zO#+#!*7W*m^{x^nnBI_y%pNm$ z7%%sUrS?Y(WFU^tr`2O$bZ5-8aa(v@VKL~4y&hbp;*h2}IjB-9iivJ>w#S1%l5~jb z;z0YQtK|3x#{6nBc(xAx*m>0|lbu{PZz~o=wD`V?MOkkO*nD%IzncP{nM=jYqc#1; z0Su`#WIY1pMn#bR#Sh~CZyDlSj5H#^Hu)w5>k;A<@!(36|Kfkh0DpaDWX-1^B03iYRbRxKz@c$wIS1YFEwd~;F z5QHP&L`q9bw}$KqK))6l{kVGPtgNh5v;pPaCgd1Fx{I62%F4EdSOmx++}&Q{#pnwc z%4t6OcU_@9Yav!b1O)^=OfqzKamku2w7-t!P>`TR(7zA&Q!I{>^mjYCL3{2iRbt=( zxn2piAx__25OP2T(nZH);B2jsh0e~-)Lu!>;X^>t_ti3yE}3pD^F-%_LwjyvLS-kpi%LxG2Z;$~eL_^JbrN~6tp`;_ubyIf3t&2{#r-3@eEbN zdRwC#Px!Za{_DS#>6fwdGSJuLnxzsn?ba%=;bXQaK}Z3-{G>szrQox*cr-C5f=FLN zrK}l^3EKjao)5+0IsB(R5_Rhy-Y&j8=O$JcS3m*r6<&f#jT?UkV}?RW)8^PAm*_H) z`J)&ql?DoEP(!8m))|C}I#b_ahJ6+_faTn*k7%y0vlTZ55cClR+Qg)ma$ds(&@M2rSCNYq*6Dn6F@*G_5 zJb#e_RNnWuChNFu`iL=sv;Ls1U6fg}Xtd-!&0P zI49vf78a=NmZP?*!%uP$$`y6j6Y2JcEA)!Cpi~0~gUqqayzU*i130>cHF{*ay!{m6 zmNK2NQsnaSA2oy0i>s+(cx{9Yy(pthU z$w4{?|CVs_q@)^L7`fJ1VxZ!7+`I}}b>-CjIwW(?(j5#-TH?g=N+Pg$UF!R)8s$Y1?r{)2Q_zM znIb2K(o-B6mut*7z6@mld5qNq`m~AVa@4p^c-bMR2X2giFaOj>0WvKt$mV~K-hU8M a curseforge{ Any, Fabric, Forge/*, Rift*/ }; -const QList modrinth{ Any, Fabric, Forge }; +const QList modrinth{ Any, Fabric, Forge, LiteLoader, Neoforge, Quilt, Rift }; const QList replay{ Any, Fabric, Forge }; const QList local{ Any, Fabric, Forge }; diff --git a/src/modrinth/modrinthapi.cpp b/src/modrinth/modrinthapi.cpp index 09f69602..9403658b 100644 --- a/src/modrinth/modrinthapi.cpp +++ b/src/modrinth/modrinthapi.cpp @@ -224,19 +224,24 @@ Reply ModrinthAPI::getVersionFileBySha1(const QString sha1) const QList > &ModrinthAPI::getCategories() { static const QList> categories{ - { tr("World generation"), "worldgen" }, - { tr("Technology"), "technology" }, + { tr("Adventure"), "adventure" }, + { tr("Cursed"), "cursed" }, + { tr("Decoration"), "decoration" }, + { tr("Economy"), "economy" }, + { tr("Equipment"), "equipment" }, { tr("Food"), "food" }, + { tr("Library"), "library" }, { tr("Magic"), "magic" }, + { tr("Management"), "management" }, + { tr("Minigame"), "minigame" }, + { tr("Mobs"), "mobs" }, + { tr("Optimization"), "optimization" }, + { tr("Social"), "social" }, { tr("Storage"), "storage" }, - { tr("Library"), "library" }, - { tr("Adventure"), "adventure" }, + { tr("Technology"), "technology" }, + { tr("Transportation"), "transportation" }, { tr("Utility"), "utility" }, - { tr("Decoration"), "decoration" }, - { tr("Miscellaneous"), "misc" }, - { tr("Optimization"), "optimization" }, - { tr("Equipment"), "equipment" }, - { tr("Cursed"), "cursed" } + { tr("World generation"), "worldgen" }, }; return categories; } diff --git a/src/modrinth/modrinthmodinfo.cpp b/src/modrinth/modrinthmodinfo.cpp index 770dc21e..a1b4ee23 100644 --- a/src/modrinth/modrinthmodinfo.cpp +++ b/src/modrinth/modrinthmodinfo.cpp @@ -46,12 +46,13 @@ ModrinthModInfo ModrinthModInfo::fromSearchVariant(const QVariant &variant) if(it != ModrinthAPI::getCategories().end()){ auto [name, iconName] = *it; modInfo.importTag(Tag(name, TagCategory::ModrinthCategory, ":/image/modrinth/" + iconName)); - } else if(categoryId == "fabric") - modInfo.loaderTypes_ << ModLoaderType::Fabric; - else if(categoryId == "forge") - modInfo.loaderTypes_ << ModLoaderType::Forge; - else - qDebug() << "UNKNOWN MODRINTH CATEGORY ID:" << categoryId; + } else if(auto loaderType = ModLoaderType::fromString(categoryId); + loaderType != ModLoaderType::Any && ModLoaderType::modrinth.contains(loaderType)){ + modInfo.loaderTypes_ << loaderType; + } else{ +// qDebug() << "UNKNOWN MODRINTH CATEGORY ID:" << categoryId; +// qDebug() << modInfo.name() << modInfo.categories(); + } } return modInfo; @@ -84,12 +85,12 @@ ModrinthModInfo ModrinthModInfo::fromVariant(const QVariant &variant) if(it != ModrinthAPI::getCategories().end()){ auto [name, iconName] = *it; modInfo.importTag(Tag(name, TagCategory::ModrinthCategory, ":/image/modrinth/" + iconName)); - } else if(categoryId == "fabric") - modInfo.loaderTypes_ << ModLoaderType::Fabric; - else if(categoryId == "forge") - modInfo.loaderTypes_ << ModLoaderType::Forge; - else - qDebug() << "UNKNOWN MODRINTH CATEGORY ID:" << categoryId; + } else if(auto loaderType = ModLoaderType::fromString(categoryId); + loaderType != ModLoaderType::Any && ModLoaderType::modrinth.contains(loaderType)){ + modInfo.loaderTypes_ << loaderType; + } else{ +// qDebug() << "UNKNOWN MODRINTH CATEGORY ID:" << categoryId; + } } return modInfo; diff --git a/src/ui/modrinth/modrinthmoditemwidget.cpp b/src/ui/modrinth/modrinthmoditemwidget.cpp index 95a3dd5e..736850e9 100644 --- a/src/ui/modrinth/modrinthmoditemwidget.cpp +++ b/src/ui/modrinth/modrinthmoditemwidget.cpp @@ -48,6 +48,14 @@ ModrinthModItemWidget::ModrinthModItemWidget(ModrinthModBrowser *parent, Modrint label->setText(QString(R"()")); else if(loaderType == ModLoaderType::Forge) label->setText(QString(R"()")); + else if(loaderType == ModLoaderType::LiteLoader) + label->setText(QString(R"()")); + else if(loaderType == ModLoaderType::Neoforge) + label->setText(QString(R"()")); + else if(loaderType == ModLoaderType::Quilt) + label->setText(QString(R"()")); + else if(loaderType == ModLoaderType::Rift) + label->setText(QString(R"()")); else label->setText(ModLoaderType::toString(loaderType)); label->setToolTip(ModLoaderType::toString(loaderType));