From caa473639c2fb1e5dfe5a762370b398cbfdfecf8 Mon Sep 17 00:00:00 2001 From: Col0ring <47329987+Col0ring@users.noreply.github.com> Date: Fri, 14 Feb 2025 13:12:46 +0800 Subject: [PATCH] feat: add modelscope provider (#1563) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 亢奋猫 --- .../assets/images/providers/modelscope.png | Bin 0 -> 30502 bytes src/renderer/src/config/models.ts | 33 ++++++++++++++++++ src/renderer/src/config/providers.ts | 15 ++++++++ src/renderer/src/i18n/locales/en-us.json | 1 + src/renderer/src/i18n/locales/ja-jp.json | 1 + src/renderer/src/i18n/locales/ru-ru.json | 1 + src/renderer/src/i18n/locales/zh-cn.json | 1 + src/renderer/src/i18n/locales/zh-tw.json | 1 + src/renderer/src/store/llm.ts | 10 ++++++ 9 files changed, 63 insertions(+) create mode 100644 src/renderer/src/assets/images/providers/modelscope.png diff --git a/src/renderer/src/assets/images/providers/modelscope.png b/src/renderer/src/assets/images/providers/modelscope.png new file mode 100644 index 0000000000000000000000000000000000000000..897755ee8130995ec4c16a39a33d279ccc419b97 GIT binary patch literal 30502 zcmeFZ1ydbO)CP!KaCdhIu0eyl1b27W;CgWlPHu1l1b3HG4s`6ej> zRz5~}_z@8^)08%smj|Q&xP}7*53>S;`kUqB!2dYFz#y~1!5}}*;D7IBL;Rnq5SrPL z|M&IZj1|9v(!juk!KB5$s(OH*v<=6-ET!z%HJpYIjI3|}TIaoA^IBP!4{Vm10A>Fv zPp}M>k<KLLVPnW^_)_!e6L)-jYY2E!2vt-Zu(=D4N1~?k( zM+mG!m+JfJw5tOpCj2)@3CAkAlR}Vx1Qu%uXF#5M2OIN$QBp}-g1=9Iqv3Lb^L8nh z7^LI;7mcS#LJALn`v}oL0|+;ZW-CUb{)-Nv4Z-{?RYG1k)^X-YV^93QN_ODPAph1t z3Xw-mD#>Gg%W(ZK>I|sVL<^|ISqZJK_HSaNQ85hI*z# z)gbFZT>#OZ3`*lUfv(a0P4GO^orWIBs7uJ-f29tges1&yS?)LVHcd*2q_esF-bGb1 zmO_O=r$SXbWe?ri4-@8XrceTq^sz*2k|(hfZiu8a4mo2@L(7Cik7?Q}c_aW))ji)9 zS4Ra1?QpuO^TTEYUk4DO0dBo+aw%pb!{ia0^gAl*^kh3l9ozIVTKa&rG36}4Zj_>s zDr-I50Gd6Sr+L65yVuvoo~g@fZAr({H}yJy#MB(!+_io+_4hOMv@aw-KpW%EkWk}? zdVcBSv-HexWN|A~)uffV;fLwQJhH2TWGY%-AwvR5(_qY&qn*`qhTw=|-bGT2Ok1HU zb5E88x6N3+l|v>Gp`6EIP`9Fk)sXl+SL$xG9-cp_@mlM!@UT*8w8IEDF*;Yh38Jx> zSeWoS33D1&Cj!_F`tPW;8y5OGdf%n3Y2>= z);Eli9JN`gb7E@3lLy1!4gA?xe7>eq((PqqxC##?nbE^6I!dIJPsD_VH-W(e%G<-B z>4~bpwk^E_4()CG8RHzClc<{vFT=U`Aq>L(VW^#b%tDkC2e^7_bw8J3wUKow2z|UQ zT}(%R>0{~d3nh@jgnfRH7U9xzCdJ$(3?`t8;y~gHUGCMXcp{+LFPuK)ShRk{ZX`kB zJG^L=Q>rIm9#ChpX~@<5ocf6^5M?J+x!N?jqWVTn@-5O&25JamJC_3%8N6{gs-XlT zFB_5Z6Jol8FQx!B^paHKVy?!s0VB3PSXCk7LA>_xiRP}8QwI6AnSFOAS`3)56qsE? zdzX}zoRDxAo1}?xSBhAg2QZMf&W(&zav@~SWGmOazn{SN3|cvRi=NqEcjugCDXc(8 zOTlD-q`h%2BAwM z2nf7yONmOYD2GuaHfVcWAlx;=Jo66S6ebCPBO0ls1? z)L0+O3CC8lSKD)gI&-=dJ6>bfU%>fz)9$)@Qjs1sk(9<9CO{@G9wtIf8=wgZ9tkZp zXX?$AR48u_0;S#Gn|lC^j&f9l_qUZu`gpO|AJb1r z-f3zMXMt&Zi#vQpm!k_Mh(;TjtQIxQ-gWQ5UUTUiHjmP)#zylyUJw9xkkE2D6FfZdBTf+?;1tQ=zxIj+cxR z1Ur5AVERO+DiO-A?8R7<4of?KUjo$c6s@2q0*}dSIM|#o^8+}=Kpai}9kR50O~A6} z!&8ZB>;$uo$FEV?eOAPdlXjX81x1)dY>=&7hfI`ex)s_sSAVgd?I? zU^)igrO}IOxM&L+k#QbuUw$8uYs^aMne%83xbgF9U{P(VVRs1QIXmv#vH9-A#xUBw zq8koY!-VNn(}aSoU9h6<4EEd2rxp8kj!;8e(Pc6YGNY338Rc-C1SH?We=Y86rzSG<; z@ST~%o(`M+T(;~K?Ak7fBDXuAWb0)&w z={8E2^U>AfOSD5AG^`LGRiHPYa8V&V!~1@jpK8=y2A*)&x6kt)clCjrg1C^FNNwC^ z;J4^q1l)$Rn7O0?fdN*#yWZ$CWY%oc5QtkCu2|-(@BqCY3uQ_dA5MlQt78S>nP&Fq z9iki0_SulReK@>1rnT^WF1=pjT@p#vV0@||CySr*!WNk-=`_ z2ed98Nm$6Siw*XA^G2``M`-Q=w+ltKg`39`tAl3nPvN!7EiIQn_zmNk5gKf^7wdoq zrzWTysh<)*z2yO}y;JHkIKi3G%px6-O$5u_`*EaQ7-ymo?@2uAdTsIaDHm99^?8p+ z3uNJQGAVeenY_^uAD04!tZLmh)Wt( zNEG#i!PLJ}+tP&;mf@p_!(8#S0ImxUUu_W}ml6$H6Tv#d+~JwT!BTn_tQv@h zQ$ZUHfwMFYq*fpChR}z;xsqmMe}~nKiyYF}yS!%AWY+$S_xal!E_C#qK1`Rm4rah6 zX;0_ofwm*mhQ4V~O2tUUqcs}g!67U%{lr=~IAL06qjD~7fEVJZ; zl|&@je^`lQ-v<~muGvJB&UuTd@Xc-<17BudN>~FhI#EOo+mgHdk-KqJjI5tB8{snT zCN8xeUs!LETQsjx`KEblIs79PT&%F4GT^F|+*b~oklF5qa`6&fXfUZwva$O9^AB*W zU;CEIefNZ3L}%jHb|z3J+qK;_W30t(O8%);&2`IOfk$V#v47DQ!>kWk?xj`6z1RYu zJ^@PRb81n~1}PP9B-$hw)ST8dOa0=M9F$yp8;A{J9W%nlV&#P?`1|KTPE+$Mjv8m9 z#&|2VUV4XiJ*gBcV7V$En2{)kus}JClE%U9P2d{EiHyCZ4{sNd5+>z8+=%#NecGO^ zbEb!YqzX98hPiJ(D!{{^t!^nlsNWt&vu9TxVEx;W)UVsW%W@{mPk=ef|IaF>w^1$i zvo6TXB+i^>99vayiH$Vwyy7Yus$jQ<(FDOPvQiD}>>Ec#xfOsHPQ)A)iXL}Fv0h=@ z95B1uP{Qhm~hpR%A!GFr5 zF8xsD<+cd^9HXuLhU=pWd$7sFAMiy|BwFD8Qp7SEkVOm+=2g+uTFw8L<^JJS6yzW9 z6}efKnEEU`4?O3oh7_$H1-RZ1F3~(~<5jFx_m8UVs1bOn!PUb1^Zi?EXTgq!+VSvv zV{+${*Caktkx0J?P=hB~U>%y!Z+KW83v`vAv`H4N|33w_gc$vFo9Vc^G<%Lltc@n4 z2qp0W(>VfUNQ_f}I7hygs-HGPi}D4{rn~`qhh8Si=Vn?9#@B;=A8UaIN z;}nIlwl3Wq5#c#FmXf{LIU)(fD;U~h9-ILL!meI~5TnN!`uVd105*nx0nw76G*j zIwPS?R_Y&$^glRstmBy&hM;Py%pMFo#qp<5r`RZ21B7C|SM6=7asQZN4sf?;-rK>+ z^4U47W-n!s1g=C9BMi{@*s|%Rs1sKf zmUZE4I*RxVlk56n8}jR<)L2mKOT;6{p0C!(CPl~77=ce3^Oi*=U~RQ%J`3f-#rOQq zl>&nxFG1a7O%LJkF-yz2AoamgMq7JwTQO>AtXZ*movX@}yN=JFSeBuhs^<1~MR5%LVi)t(=~-O~g4iUO%QxP%s~ zJgXkY@2F$+>osKhieE1Yv*6s%3BpKTpI$KOkJ^iSQ-8+qy6s0tZ)tF0Cw#Jq$33E| zJK~vQ-G!jVm0#G$q$zkDy0sr`M^d|5?2(UtQiGZ1Z@ghKJ*6_+DMQ07bMD58`YioH z4tO=XeY8<)`}#0Sj#=siy+gBpYzUIpKrYL!LSX(8lc zD!-D9(x*O=8ys_jz#Z4}@)ExTEG0`P4$`u{p)GKfT&hO_ToMV1Z20o_!YA}wkY*b` z!vO@)9I#_0ymrWfM6q{qIOx=x;&EEBYZ|P1@-u<_AdBt6St9S3;HyXuYuI4e7O+b; zfb3GvC&Q4iuu8bp;tF4rCmu&-T!>Xn#{s7;BVjGs)ulP{CUhk+eIG&6awoa&=2}(w3ubJA!Wkjs6QX4#^)xLI#?aSSA-p%M8gSpmJpf;d@dM7G=s{5@{&ZAi^o|| z&|YSAAHN$Uk7SEn>Vew0`5H9o?Ios7H}ZX0d){712tzJD*k=DL3buT>kKr@@$fsHkO-;Sq7bktJ^LpoySws!^P#=I^p-C zab2_cG218$ShHNsETi6)ED*s^oY;trmM27hAn&kNtJWvik9pIKSM)ggPv>nP^b9<6 z#t3#=MJ-v7b_a`zt2x7PIpp)hv1c8di9Gl*c35pupYlP%V%V5SEUBFT%&o$qylhH+ z-Ra_{y)*n2=kJY2%pXXQs(csW)bvcoceKD(O<5fp3&{Xco?Xo8$12UesFf!}7DTzv zPA0!`ui3H*KO6hlol<>Ayil%0)31MBJxkxb@!`UNx7qQb!eFH{%vIMnN-63+gx(CA zi@eD|6d)n9+v@E3iq4Li`B)sD=)g2(l|q@g)vJHR>itH1G|2eMlQo{m$Z*ZmkvU0Y z9065php=ahg%u6}!}%#bC-r=>JjmC@+|K=;Y|zw7x0dgesZhS*n_{MqJ#Y3i$XQvR zO0y)P)FWEE9@O!)AbQs}zSudwfCD&Y|4p5yJuawNIOljBOG@A(KIlhZnmucBEc%}O z=P~cNIZtlL%;O!oM46=ptOZenxe|s{yo|$u3ai97k<6bT14;8lIr-x8SHtJZdbk=< zvoy0!_d#VA2F5*NhmI4-h)iA%i2Cx=U5>VgNs>_Jc8mfXBeUQwLfVbmehbtzlP_to zH3jx&vi8c}tKFE3wCutw^OBlApky7^l@)+2CU%lGwm$c)z7shWrEM}iAZHoWCuA#~ zN(KxSy8bjM^v?V;wY4Wst3RTlU(o79bTc`7+ zX_!U%H2uql|CYmRbIH>N-8o%n3A6uxga7k9MCgQ_MBry+0*^;H?m$|z4=7z9y;)21A$x`cROM%!?Aj|%^IfbnyEn-kWUQ`Jb-x1@IT>vk=# z>r3;WFX&`ed@2x?FdV&xs4St2v(L8fEh8Om?d|OY?WHuFd(yRs(Gb_K(-0v=iqCS8 z8d@gp&^Gw262l22ZZnqkYfLE)CNB?<-yPmo{m+>V+PQ=Vl4IR6)=Gj}6Yh+=wIR*$ z^rqEel)wA^dc()9{t8}Ne-u4895PlJ{RgSj2`pYc2sPR#P2je+ zp&l7M;5QpIoNzw|>#wd^HpB~n9`eEoczyBCjMb(CF*Zp@tCV0zTOZs6R^KJ7W9N5y zO+L8swVKfDglTQ zMtbN*{JXY>`>gEQ<}3>sgs%w~3H3VWy6>C0PA5qc6VH210J_I--h1=5YkUm)KKnF?cqd862@-=dpvdQJh+vgaqCv1*hP8ytODUpX zn|VerEiU6rl_z3*sma@OZlRbcjc++mNXikZQormc$6Xg`N+t@fgV-3`MH~ zw|;PhO015~7;~T@=RZ-eHhVm8phyPLY6^TAH!31-AX?X*MlbCL+#Y;IznDwIk$@Yp z$L>S4EyH^@jj`jXSiHB%GK+0kDgK%Mie#6c5zr8tOs7Efkb)Tk4-wp@ zY)@it!m~iTiRWbVkWa)R`^TROi7H}Ev!R&n9M1XP(sgXJjeF`+ha{wg4U`^{BPJ|} z)%N4Xo?GCZ@1B)W+{~pBccq~?(v!++Z2 z=Hmfj@5V^MBGK6Pr|HXxcPBby{#}qe^7g?z@xzuA1$sLf#$IGd+RdDxK0??-Q!*I= zpZJJhFE|9{DG<^!L=}3je5Zq~z`X0Ryf)MVSb+4%_adpa&zl<} z+({^zS8M3Dm~p{-3t4MB$N{HEWOOb1zKS*y5nmam#IIBUgngfaV7}QV*yn_iO<~VB zeKogzJuTUp!*GLU-Td-P{?}95=F->?Fq`gMpQ-`S=*Bdzor;6@$Q$EymJbd3$oOZ} z43T5tRXafe@$*nDm4WI`j^CO=Gx#dW{bK{ZFYAahAP zWUXxu_~VTLD0H7xYOb_jo`T%UD4VHNT`(hl5ZLJfezH@|wn|6^Ylg3lX zRB6w_wZ>X-wj5DdI`Y9j+60@1{L!(MJ4ZL*b{^Mkln)RPrdy(N`(~}34eKnDBbeIF zw=Bf{SxvKQvpF>r-!5_z*EGD4z7T?$`&t*+T9NiZEvR ztm0$s$-Q;FX_JLw9Jya7ECU&xM+}Q0`l`OpBj%0s?W_6C!qdv!P)I7= z`h3JU-0&F1ZPg>$;D?q<2gLs8)hLePQ*SCV8X}X=_0sUC6oscF#Oe>z-vO5??$SXI zKPc8$zA4+Xl%lLW=q`~0bsn4XPD$>MkAB1#V26{Vpmfg8DEDEV2eW0peco}SoJ8ym|=OzwR^!O z3&hfR>Eu_PfBVfp(cU5qb+IbqgZ%B?wzH_pUQg*C-6a6-Bm}HI->^<3v8(;WoLO<@ zSo8zUiBv)P$KP2X4~Ql0^67B9d;oU_^v?%U{zvMmp)m~3?FYj6#8(h*279mGV0%U>Z5C2OTrwnK} zOu3wedv7YS5VSjQ7)CoI`a?|nAKW7hu?D@vkX8qIWAKv@pNO|B$4cz#FE6e=+;RxuR%A7clE0SEfj#at};0Oi^&{!gwQcn^aKpH0+4cuo$lE9?Tqe{>@L zFpyLG<_$0UvHm}<(lq%-V#s&VJjiEv$6GkX;a`+xf6M$u34R@vMopM|;S3O+i8Mw3 z%WGmMozSQLS@7rn6KonYZx=ZIE-HE5XXmuzM&z$wtv;T*kp>;(&9KBss>W3+u6fn} zlTHa9gm!cf7gkI-NcEq36GGtU`1P>4Pl`372>AG?V6w{pNKBa$VEUDKq`pfSPc5>s zl|uDi)&Gis|Jd)~2d9!2`zth$8^i&!wdKuBGVSC4JSPQ$73bu567y-6|EK;8d^Yn3 z;=}JoCFA!`(Hg4kj|~R3GB)bJGC-0Ad{u6f5SWN+yf3-rvJ!BV!N+=4eq5tb1 z*(eYPpO7B~x=Q2tT-><@4m1jjSbpJ4CR<%A#jxz?icj z^jWXD*$B=Lq$9TqgT5?KJ%F*6(d^kG{U#tdO(4R>t@Od+Hi?1AeuI!1jO>olV!wEZ`CeFcn%fBt6*hDxummf1* z>BXjGsDo;z&#nU0rO%v!TWhk0WnkRNv4=RR7Yz{`u%m}VCy*!do7j6>dd4Dha%plY5o~RxiT10+-G^a%w6{9c0=o_64_i!3Lh1 z`x>8-E!SU^*6$8wY)y+2f^ES7qalPvIJWtH;4tE0FT|T(M)se|w=K|xos4@`acH;} zmS<6!CX==^Onl6}?pO3V>Dmli_?bd+@^4$7m}cdzZQy6af0mR5vuRBn2kZ#n^@>yJ z0oTt?0=VkKoHYcF()~#XGr*+ElgUx^5EG$@(gH7|&sxdYZMx>nx1DR!#x% z()A1y%zQtbzp>PYHHy2Bd9Ci%@q=ytv=i=pe>C5e>{OGz80=`5GfxvzMA>Y(eH|pE z>k5Wi+Qsh9Vcgfp=u}|+xv8VV{YZDR5T&K)t=Oy5u+^1oZ^a2&A1*SeTnuZDUP>}) zjysmQ#qY&lMMCs^h?b*PT;WcmmJxnA6;jtwiu}32=Pf`A{})fg6Hz}Z`ZTQ0o`xAx zuJ@lq61s0a6Zc~=@i7OhYM2b+Gb)3K`V088Gm!!t7f{8N=Y_v z&!f)0cwUa57&~3N(oJ0PoZp1}K4bvxC6AP@ojf!4;EhSJ5)UX8q1k`MQUr^w%>2C< zUQVz9@}M?PXQaLe0$WHzPIM2}_YOCULtKt4KAGTXv`UOGV`3hqO0kz(JYJg_qCA%`kH16lG8GYI#xaHh92%b6$*J0|MG#%zv=2xKhn zU$zg1t05=v_v-asgstl|f$%^>&AkC_E0$-#tGVp}^ifaqO7&XL30nM@<xA;9$`?tM?r51kt05ErBPy#JLt|ga{t;S>1DB2u?TBaOt_wH%c)iG*zlR5 z11LLkQ2KJ z+X|J&ZgOQE(ZYWpT5p(BEyyNLju^@m8X+&csO5O;+8*IRE67Td#UdhT~IUbe$36%A< zr6bpbAv9LztjCsb^F!ZMisq2#DAXNd^gR~sZ{l}u!p;L#-}23YRRgp zCF`_-0U6&;$>QPDaaO#rEmk1%kM^RW41Ln8t$=M7Ie9m;RJ=U+as7cc{MFw3SW9~(uZepR4Sir^%XMf3aV z72;tgrIol48nk^pj+7sUWNeVc!jp1ve0)4;%GGgKd>_)_Wjh!Lt zhUo!>3Pz)_fWF%Fo32m@x3vRY4=e%0G}GlWN~hEHujek4!PEfRnJB`o&F?hEmHo}e z3&7?_%#P((m38sb^e4LrTaGLK{Fg2Op&SB-3oX6)ak8Suo9j6BXKgGGBO*8(=7YVX zbZrfHhP-E?os$5?=Q064*=e={>1ui-PfR3hap~_3Gm3*{M*s=L{3DVSwGt-B2-Agt zQrmK*vZl*4*cXL5TziLZAh(0PLq|^S%;m<;NlOy33aq5ea{tY$>8hYpG%=J7xzBji z?I#m`#!DD1$YPv?)}s3=Nv+%d^20CEG$qCnKViu+PiV>Kv;m^iknl6YRs$}o5xmVI z;_c)l9^&Vovk+AiIvM(~7Zu6n^w~Bq&zUuRzoheQO`s8=f?wLh;lN4S*3 zYKG{{)5&MS=Vn_2461^2rG_gb2O(64IpTVU{T{Ouj`NubVuYQ9-O}^!19Hr!e`6tm z0EgrQNR7Sq9ip);I=S-b=IJ~xCEFUDo|}CqdcUgF_xI56s_yr_(LDqa=_Oc>2yx~K_otTncnYSc<>lAou$6GuV^thJQHbHOvi4xt2o zTD1>N%HHl6C+s%4;l)BCV->mCPY4?7Mdr5s9A%2!I?mYAEK{8qaf{9fiR-P0B;YpsmW^$|M00qDnm(U;3VZJqt-7LCYb{aIVx)I)(cR4A z4m6E&b=FI|u54bV>rrq;alANj;J4lvHMzh+$9jUBm- zJ9P68O9!$Fs1LE5T#lMUPi}lNRwtxPy7e}mIvQ3HE)3Qjp>etZ&2eCwzx5p(76*5K zldkVVsZyE2Oa&+*Hj%>(2Qns9PTSPNE&>(SoRB<*EcW-txqqQYsqJ!jtU=}mv{!Vs zF}Lr#JoDa%7_8?{A7WlIGnE_jW+*VFTo1;*J#0I-!+Dtas))kUo@JVzLc<52MpO^5 zao0f9bX?;wV^?&H;FNry-YLtwKzwQsyz@Zz+jf81Q;zd_<9}yK*WDXtl+`!TYkhkv zS^mBrM5&8rSkFE?5_}h3D`o{P=JN=KE|NO{t0Jb5NGZFub307(aznG(Yq7Z%ghO{Y zS8oOF2A~1B(33P=ci6qb)%H#dNkbAMER_#Z%CR6r8{qDpR3clMl$n&V))K8=xN8qg zilX z7}rkIp-Z6mSph`ZkkdFcWFWUKEB9J+9;t=GaCMMKMd;1@AYshq8XZViZl2E}UiA>= z&-&uxzngUzG&3;st6E@96}7auc$zwBed-q%8h`7@Miwy!@@BzwrEc}tnqOhk=x=B5 z1aI5#2gmU~*j+Z|{LLk&j<&ul5;t$iXXwyhTs0R?=wx|psUrgaWIcD5`0uViT-^e* z?tAHo&$dodQ8E|#FIdO3bVGXiM;y9#IdnTdy&oD#7G9j5N}7V^*1g*25LCzSA`+%< z)ah*i#FH}l(_vHV{yJ~4?{D)Y4*r%H-J0HjtJ&>6j080ZpL?9eFn%<>61B_AqgiXO z$IbPZ2EWtY{WO%&r0?z%d2)Khr>Bl-J+@rW7n|MCeGaU{V>wCclc!gp%&j|HH34aX zoqqKvaijy{vGyuK6aznOzn8GYH2?3O-j9O%#sM=0@WU*NFD}FfkPzBeJ#H zi(~Re!Qi`Go;cl@SX)FRLv#fhGxip1IA=__4F^CU{ z{O-NUT8w83?Cp@3P!^H)}IBN4TYej2^60{;Em!~ zrAD9E&FKWM9X(42f^U>Z^%k;BiAk#}FdJTtZRs7p*BR>fpKctA=6B5=b`3ILxEs63ipx8A}QJ#L*=#e2Z)WF(O7~Y{;){nQS3v>BQlYg36-v& z9R?ShP0^Aa(3{*rFQ1;?BDL1@X2uXGU$1B+x$7_CHC~QLX6|h=$TdU1a4349(MSjS zk+m1w2Q@!a?^M|J=5aEWG%we_4@e3L{Ctewa~}aS=|Pq!lxuZ5i(z<+x=Q($7ZS)# zcXm?KY!T<J8VdC|ppyGn9Ym3?xqaHwyv-S3y{BRP*I4hHh*3)StlICqY z3T#0}uGwJWg&~DV{;E=d`y}_wCXTqU&h6;iiF{z1uJEW8TSw~?y55oWY@XBPeew-) z=Jd^reh0F{dV5Cixjk^5IKlIdg5Gc3FP2yd&5)`)_fw@lyfG-~6seV)zbP##ilG!* zm=C?G^4B>S*AK~;pV~TnY0xi=NBmz`EvKFy1J^Qy_0%<1N-cky)Hbr({H$td77OuZ zZ+gIojNuAfOv&m;aa{Jave?)YCHbD2yw09^aJhfboeQCDBxCcoTKVGn;-eR_ra7d$ zVf2EGb8_+fVz1~-y-=Uq>Di-Uj>l+DFZS2I+lGh8oKFl|eg+25b@S?%HL)y8E=(7@ zGkgXEh@O|wU6buRpcI#}xOGHZbqo018N>F3KOOWb8V4s94_}iakhoGR&T@%_8zm__ zd1cGBksC@JBlK_hO-jO*c+L9?ct0nh7>jF>2yJzG$8IIxW|9>5M|?mt9ztLlBI;it z*L3+w@@vE$MU#@d71cWejs#?9!)Uoow@w}_kqompU>LFGs_Od!W#}Y%lzOAJN@2gC zih`=i*7^=nDFKKV{)M{=_*RN?XMqRa7seb3EGE%LOX8NDa)0 zboo|_9KMTW(llC`;@Qe)HJMZUqs{=|so9!;XbFts2h-((9zQDp(m@DWx7E&@H=?tz zAZwIWZxqem<}yh%v_gruOQpVoJ=u4o*IcwUW;*a-X9orsxYsLyhqs`2ziC)qsc}?3DABUg?(EgD^lT4jp_7c?FC(8A;q4P1s~| zIVyOz^aG96`+^xLiF!ePTA|2K{^XR)@k)OkPH1gv)`N2y+LDt}N+8;e^(`TT>ccUv zM)g?Qe5f!~39Gq~H-aDWPC#VBMtdDOg-q0YwfVQnlaB)vqR!k$ln35hdEB+8&CHdGjNEq zm;yH$J_ygQWwHtXoE1+3KYSO7NsrK;saP)Vwn4o%$6e3rG?U%dPm2e=T>Yo52M@0B zhz2YamTcBn?}LoZ=e5awJC-(jQCHC&Sv59 z48l$Q+S0I-#J_#zLmQi|zv)eOlYJ%IlIXbYA|IyzBP0F~M&?ocpzQ7cnNJ*>1ue&Y zG*{UZ1`)nMj^KA-ee5{}i%-Z9+FBuB2uTd+f7F)Dt7q8!$g`S^6_UaAPjSWN)-h?X z4~C+F9T)LZ=hkNXlv~H2lUFORILC9TxHsXnT%B#h)f~dj$rv$+6ViZYg5d*L9b0#) zQqm8^Hj(PXX4S=s8X1MY&B{9t{rknwMRkTV_XH=Dw zimNaJd?d_{ldRFK1}y9N)}TnPBdP@x$nzM`}$+ai9xegZ!GJtK|*gX$8reh+o+70U?>fN7%QS5`quTHt8s4 znuwc_`9Lg8A`VuL?q1w*V^os2s~xjqKa&BRdFn}^EAyu09?l!WyQe?5>fp4uv$^{u z+*KmEb{Smf!0c93kQjZdh=rf41}p@jO5|n%7>j{oMnDliag@ykR!YbPU?<4?)m_g; z10OxnGR#k#kG>ZTUnJ?#HzZJ1`p83^F*MOS^hFBCVdETa>NWixQmr+;Av2gPGq5;V z0NyH0$`Qn-g%NgzRBt(qhP>d@N55os3lmEB`DNXZA>;W3pHflr;F&G&!VLnlL4vo- z&F#<@3<^fyoC^-gV5!)lk?bC%5Vn|!i<_^4W$`eSOu?_VoUrl_Pxk(B@My$|_8Jg` zN9=fA7(2cAEf8_pxB0zvS!Uje2BKS|oY06Sg#L;Q4zXjQmJU&6$-GKVXC{y&ct<*V z3z=}6rI*0NTRGM-&7580Pb<3Ez1iQTGB4G-K@DtW(If>y30{GW1TP#uH#a{@!KQD^VVXYTh{3_laRHZBv~6#RWT7_}`0n z?11W%UHCAY;o=v;_>-DSgkj(~O`^D*y{Kp41{-_{fBvmEAj8_9a^n&RiDT#O5XU^^ zA z9=2nmB`2bvOd_>vYo{a$7k6%)7Geye$*LE^7VMsAoU)(wbt&F7g%2(Yajc2?>9euf zof|E4_Yrg%esNR@Kn7rhWyT9{)U5sc5wq`Z%N>u2S=5>`4m5hxkioQ;oI?a*t`H^F zy-S(CZ={cJl!SJ{XxU@VmD1aX{=^f2yO3tz7D#P6P#sq?OFt+S%t*`PLk3NPnMSv* z?1$j_9hCUofP8t4sHIrbK(@wmZ-!korxlHnbU?1iY+jKfo>s~9RfSwyx!v6!6{VP) ztmJsq%4GxR1@k#$8FG9PODOJKb?DMzN zO3tXjF__MmKg&U9&=H!a7}J#UvY1vY05Bf19{wqFPoujZ42|~T09|eS;@5gzzuU^q z2}YkR2S!0p@Oy59&*h?xYzK1-LDJPSBG<##b5Egr4td!~zK>QIWxS2d?ThFytXNWY z-L(?~*>5=}kr)_IWkU~_R|sxgjDeT2ou}=t8nld5a%_NJh}lPZeUKKj$gf4D6(U!5 zK?w}pwiy=RBxSA{$K<0B&vN4~mHG4S;k@JTd~a=@(dM?6pD2qMSJ1kSE^20JizkC8 zQ^CNv0Du1rz;a+OYPTO=E&<)5=xL#ni$T{r`(s6TvF0tW*TZ9IPvEFFYi=ztD$h!R)`m97BBOIwjCq7A5`CRkfs z6l;X;6K|MhE0;>ACC(LsL`NaA62xG(kcRWF{$(LQ&s%oKACKs{*$EchMW!8r#zr>u zd_0iPo>NEQbw1I1XLS*W_r~kUR$JSoTGesi`aW?rk?An9C(+&*DG33!*pOstq|v}f zIZ}#=8(*W_3Z#xc3fA)+l`6pS#WQ~Jzf69rl=>ecZ1Bx+5m;WToW1>q08sz2(irE9r?okmJ z3}s6zD|>_2YLk=5gXiLTdT6(nP1)j%y7o+4MQ-Ycbem4&>rvOL>^^I!` zLpotOYD8+!NK23hlnM?kLx9V>^JFgxF`;!1$K!T^w;+f=V=5whl3GqVLjw6Qul3KpMOdy;?WL-( zPF$8}uByjqWQ|L7?Xx3>7Te|njwWjds?$o@Pmd?gm;3L3&e#1AnHN^~aORQ1Eb!Ql zuzypdocl*6G8;dn{nkL8;(8(y`m#c7eSySsEZQhAFZV?Ya6_~HUc;>Z=%#Ead?ns+ z)p#7`SCryC#J9v<3d>Wqok_tkN|iUw-xBWW^!zk@&V+M-8~W*3T}!}&N0m>-8f#9* zyO+N8ncC;=X@8G|B?1Iw!8Ge`9fiy`6XBV|_CKDtQ6rHB?Eikg8YOuhs(2#>0-%o` z8^s0{r_;=)v064i+_%h3<3_C)D3rI24Cy_e zHQsueCyTwW#gma4zJ5<9svBoTS51yvtAXAiX^^haRNt(4cYo-3yPJ=C1a#j(XCSqr zXx`c*Wr8i22}*`vfkBlbElT%Fzy=pEQETnLk1+c;bCS)v}o{D$I@o#O`GA)7DkTtoN|C(%dF$G>}f*~7FW9dbMIl5g4jpl!vo}#m8bJUUTR!t8E_ee`@G`qZ9Uz` z2PiVjxQ+L=z(Z^=#fpwxZ)t66IYeT{_ei{{=+E{H>~J9>S7I^=3Vos& zW^blhN05q#f8ASRoNi(W9-J`h_fx^KHPx}vq!zWrHAfGDYusGu>BFJZqOgc*(wbd1 zw64DFr(aP$n2<0W*LsVYN8|e2gKs$QQ6T>TYc`Y-E|Ps5o$npAf&*(|0GZSngLtf* zc^C(*sjg;AIxatN+{Bsr6XU4%E-K)aE=uAs!)DvquA(O)NU&^wS=& zfvg1)Lk={16}FR6r^du%rlL?Z*eocnkS0I<2Kn6IUy-?MIbzOJ8ir;@Km;O3;XzT| zV(IR9ZFr+BZx=EETMqD0n8qn`!J#dof}u$n7H2b%YXY-!2_9ili9cD!`le+!TsqN( zG(~&e`f^d?f5?uwVm#s6MWv#416#YuR0dqs7FuUIKf^uJ@{!9cW%(U+1iiHZ_J+Uo z*1bOdK6m~)S^Lte+s>5WaQ`jNtqjG*lBQqPArPDVEW~g@vC^GUXYVl=j=M^8M92qr zsC&Xv-~uW`n<{`wW|mQ6`@xuKFmMc6>-sj~H>Ia1oK zaI5yAPfk%#s;bm=K2=WK@?e|tIRvd{tP^!sMhg!Z1?nz?ANOpH@H6h|=0s2y2W91U z$gzBHAl?YS)fNDQ#>UMFDVKscP1_y4Egop%fo{5v=7yzSLhFj!MOsMKyvDw!%*b)- z4MM{EBeA|&fpm|>b!~*9yX?jBc)scu;qW9oaTxr8Hw3ax9t8Fk;s!cUibOO%D(!LC z_J6(9Ew9{x67~5tB{w-zvd6z=R^PbtI(>O5|tWBV?90hwBb%*gfsN z4O5G#Dm;Y7e_WFlH|i7TDe`2&v#g!8-xF4(VU`SZd4%sRmP2KyD^mY*Mvho!E_bJt&5w@x`511~>a$^Y%ff zRQ$5~WUGMxqrI~Vi!0dLG!Wd~-9iY#-Cdgi!6CRi3GPmC4ek&mxVyUs4X%xAAUKW8 z&dHg7&ir$C=4$3Sm)(0kReM$KuHLo2wcfI!tJeNhB;*qm2urj18>u9FzS~?tshKc6 zBMCDi{Ntv3o2(Yo$6XGJt~@uhpzJsV9&jBao3Sm~)X2_fJbG3)?kNy0y8|OLH}agsV1cLu>};FH z(MX$|*S21#%c~kqRjb8!5O7~vn$XYf@gifvWIRsPN$xut($0JE@0F@4LQ;GskSP>d zc%X5_K%7~i^cxhXl^^l(%Q{h)+)X~A-HTd+HJ_+rA>tY8yY>MM70Lp%5s`$+jvM&< zHEj*Z#V)fxo-*uLm~PU+I5WeG-Mui>s7kpd)x>Ea^EiP)1(qMSxHarX1*l%j#Uagk zmEkpSNzEbS`;=5gC|vnjgccxGP*2Gj3f7!j{iKIKKZ-%zrq6EHBt z!cHPgZ}suD>dqd%u-wx~UEL{$bBci6ay@%U11B6*xFuxswumR91r3;s+Dsz7eK1kF zI$BWUH=#OavTNEGDUtX5RY7Opnk@ZN=+-gzoYEhx_YYm=6(9Fzevo8XPKe=bV5Fb# z`EL<&4&WkO$vRzY`;CR{FE7|_66OePt;QWC76TdFa*a!*HcqXVxo5i7cQu}C5MPVZ zBK-xwN6YMa_Md9GePihNqKtw}!-sCg8BTA8DoMc`;BI4Y#YG5%@ z9u)#FL@(Lo0+z4~^q9G1~HxXUFtYoz^dNV+^XE{HyC9SyjO zEmxf0vm3C3>^PZq!U2Yq+?gFtY;^f@&^^tTSm`0_PapJdJ}n2&X`$HFh*nthqPhn0moZdvf5mKdQ;SO49Y|uZ{K`K5banv_~phbqXJ~VaM8#7V`s{ zl%f7$&MTBg!a67xJo(f%JLdTraYGvwo#y8@$G9=-E5`E*a>B8d_Slxbh)~bL$~3{% zsHPz&r&i9x(AP|iEI3R>o0@c5Yr{PA63>^rGi^a$pr@8t#*B5SY*^1nQA?76UJ~pvkd~x%3vIPZC>X*YmWAtkR*=ZuNaTQZT;9;rko%lJ`0qel-U7y%2ux=htOg z>!CEAyw+VvPb8c;<&#J)ScvdnV3@;j#rG@l_SdU8c}4qE6I&SFPPHn#U!rJfjzHh$ zs%C#vN?`~S)vRpyH1}Hmg789AEoE!kxiwwE#13Rc^G-HoDDUG|m7cZ2vt{@V?sUIp zux;%U>B*Zk3lVsy6vEKkU)TPOZ0c6A?GgwH`sF%FhjpqQx6pGeSBNr057YS#Q4Uw)c%I(h1@L&)x}~e=Ji8)8s&@qjIKD7Zc`5Ltlrj7_Dx(-M*ARTei3M8^bu{O z8lt+`F(y(AyjyofjEb&J6FUDUmAo}?e`(piJQ?aHQ6n~SvoIs4#v{ml5k#Gr@Mx}Hlf((`Ygd-> ztz)rKx(fK9b9kdVzWmWw+D~gA`In(b+touV=p!rIh0+0$%e)~BZChoG&|z#xh(C0m z=SrS*IVa@=7wpB(*M?I@cju~#Ay7&6O))h@Q}OMxpbWH@3fSw3>Kw(gjiGY%@iOm% zsoZiCC8xQ0xp5v6s2&EVs~S$WkrW{JqXSLHEKsZ*_trK&M_Jkatj zGrm0loi`CLt_NZt3p1Q?p{-Cmw(Cd+)zfX%2c2E_6-asLNIuuX@_Rp;h0kk1Y-bvc z>Si96!e-|^jzc>!I@E5nZ!Gg6wsEH(C9 zy+$ML=%qANhUskQkZ*KHI_@s_!+wj@{S&AMmlby5XxXbV!i>$PtOs}lOB1}Ghsw{JGH{!vS+8#-7ed29Vil}< z$0wd=F;t$a5i#+1`ZKiJ`zyYrT2(1;V>MP>1&*>~BU6g3k_(R%bmYCU2Hq;sfyabL zQM?o3!OGOnL(O7UB-Ym6ScyawiG2(1`4gv7LecjMAVy_e?cvA8oq*B6@7n0}q7 z53UFmcjwp&%svJW9(0;APxEd<8qNwtaC4m#$x=A@Avf_` z2<3%_U+9RaxR$wBnJA@##@1&2enfHB-OZ>oF#2dNE!)GN?1&GC*%|JIuuHmv z!ehS@c++d~^;*Epofgn+;wjJ42=c}9@`q$ug|3|&eu;jQZ6%En|BkO$LRo|OZ`e8r z5EXc}e#%w{V4o+u&tj>0dFOiayVb1zwfBng8qXm$igmm`;GlQ>{H!!9YhfOJ_Ogo3 z1^o!x9mNvH$+f4Tfu0jSHFv+pG3=wyYyG_VaLAO^)}7>|jcK3kD}ZCW2C$C;^CbSN zZWmYpxiaTR(zXSTs9UuVXX!0sj-ndI0jPV37T^$AIJVix(X2{I8Bw3VfjP~aRvIAd zcR|ZS6GwyK^kx{_e@Tb(rPutoy(~c}V7!w$+rljHy1r_ic;5URwK!QT7y6p z46J}{%uOY#<;jb3It-C$C9+`g7z$<3MUTUR6$BRgv0SB0V<%P~oZ^03;Q}?lQVLNT z{!P_Po12sC!I+}UD1sMHSByxS0o59Gng?XEyW56DvH4IWP60~abO#_*u^v$s&`gmN z3x$u{5FgUcUAa?ryxDUtLE0R0S|L)6aeR#r7t!4T+YV#x8T@)5>(@job0#h{kKm$_ zNyKZq=jz}j8q#E8+UUPhS^yxWkrOs22zbC;8>%H?H4G`~7Zj%f_J4;%^#5i!F0ROD z&L}cJ?(bbWDi{O074#oeY4vB?Wo4vXfkk_v1EJnL#-q&L-)u;L7Dhk@6idJrkhAmu zne4>j_M-Ur;)<~ZGk>P~6gqoIM2w9DP~Xsy$-=q|5Z&SCt`L=e&-T zGA~L$oJW4WcqS7N*jgi4!CeepsYV?gY2#wyWHg00mN!fe(scSTEJ`F2%!*RE+l;zJ zA7={RLkU%ATuOu865p7BP3tL?Ey;!R!bDJ%d}(udRVT%im~ye z_)8R~w(R*z^kT#nH!P+J663aF6oDL;1RIAG3sH>aJDfeC<@bM-J*%VBiw^}4)gSD* zz@BvCBEcBOcL5^x`w6GLYQLLitiR~)KHV{qbJG*z6PkmtQ)c3NTh7OQI~(GQM&YO_ zGoDW4UAI>r2}iba2j(RiRl+fTp!D)mS>RJI8(E5Kxxgww@rNzfM`zOBAX@Qc6VE{e zSwl21f@OJo*Mn_8Sgly&xSzk`?DCiV1v~@oe;#yn2$iBx;NCkPdD-4eIc82PG`5zLUFK_ot%^$g+$p0*=x* zP>-WI8in)Cn`{WKlEBOoXFfW7u~#}c0fvf(*9`HdB;C>8quM`^Y)GAm`J}vy%*@f4 ziP-YWJrM@3-!ssqx5z}(nap{!i#Y~k+6Lw>?OeBEk|XEa$`_D79eyE+9{zE|W<9bM zk{(>6c#PNLT=)>43CA^)bUnE_+u|^xbZQ6KJQ}HyL7CP@Kn;jK_s^#g)W3GXHOkBv z(Bg5V@ph_k#xd&_xD0gr%_nyfO&;x}ec2v4_o5QCfQ&kzwS@Z$owa1e@8Pz1GZewC zc`x@@Y}H!~%o3FGS1Qhjq=>oPVueu{o#?1sH1Gw=2?SK1<>9$7kDT_fopdH>6_r|~ zTV+c-9A3`_H@!k|iGr544T+Y9VT8Zf2}%$7~i0cJ|>ULlZ>akz_tX>OG=rzyT9l_1HU1;soQ;X;*Vtn_wsP)g`E$ z`g0rWkntnvC(|DXx=qx9F=9mRtb=esFsI@ENrv-WZaIu4N&Xqo()UvbjhoLm?vI0g z+AVWA()7azIrOHi2-k*R$D*)4OvbB9jbWQ4(F@wheU#vM74UQ#tw0yl#`o!xMDhQ>~9K5fvV*np&>qH@4J+T=8;f;t+n(!-OknRKpf_ zH&!_R81#bE)(k$3=e`s9c6O%x3rkoPN#8vC9&=6D8z!1S^7P~<+b9RREi@c+zSiYp zC@7wUWkcvx+dCtcr~BBvxtP~7v&6Ug{os0PHxp&gvRCjrM&0hM-F-!8`Oz=on1z`@ zamAK7dS&qiEddh>SuzOuH@nE+2PRjScNg{)hW6Kk>95&Tg>>m>@_%tPw1#tkzl5sQ zCcsoFaUE*I-;R5I1_S)*>8F?L`2zM(5*R*)DCyr_?V( z@N-FWX%Dt&)J8vwihW23Y`%Ib%y8xtu>BGe?(pWQ^a<#xKLncRhK7S1WRvB#EyjKAA$1a|Z1_Sy8J#9oLFJu3-8!;S}6Mi}VEG^gJ0INaD6?;sKO zJ+WVPq{mLJx~|&MGx1lO9`gBwO7u)%4eZ9NXSq;jF)n*T4)v^!m3oZZj6T0(XL;=| z(9YzLfGZ)=#IUS?dDSVi5Frfbh3ai&hhPyggTzQF8+3aW!I`#GHhCLj$TBI$AqYn| zjwAN_Ghdcsl}IRySj0+jL%vGgJpT{tP1lx=6~eJ)Ub`Xh@ftVuI8HdnCw1yHL0;y* zwp$Uo1kJn?$aT=ruoppbH4%?*tb|H=L~LSxnALmDY;B%+ETeqK_l?ue$lW6$o!urUX72tI)Eg~ID+jL2HS@-pTk@Fi z+&BDAC$9%r660JGJcuG%A$XEcw4B9E4xM?T&-6Q${{m0uZf`mDEJ6+sGPEG96?L(YR(LCcpB_M;ZslCmhnYwRre(MOKMqY%ur1%}q$7OUuVBptkM0L&tOk@e`r3 znYV&yq$T^1kJ%zwyFzVc%mv;P zcMbz;7cty zjqj#X?UiI&Yh~OEh!ne9BwlJQ0^3cbJIhYg`_3u`G%9!Ux}z%BDjHU@`}bF$ zg)_XfH=a!{V~yBZHHXDiID>kJMy|FaC-(>l+XhlCQPWmJPv1@=Y}ZdVLeII@d+Z)= zxxP-vT3v%w{w7cX*7Ttdy!U5_I39G^j zCCL2zIVO@y<&7SB{=gcdv5Vr*aTz@mrx52aVR0c#DBhRst0Vs0?rh#}T;4|5#iS@` zEW+MxQ6rQ6ccBKYp;arcGFs+lKlpK8S!N4V$)@3uYF943+>nQcP!acjGP8Ju^wty& zcb-gS4-@=ml?{y-dK}7JG1D+CeMeii`x)=IN2(*IgO)D(*mkfZd7>0|mJ`$ZvT2f> zvQ}zkM{5j^_jm-PK}j{jr9sf@D79A^q?-8_JJS44aW6DWoZQF>Jr0e+ZjzQ#<__c^ z)RjdB=Y4S4EK5ex7Jw-BE{bJoh=Hv4bftGHr-w!L+qw9Bhvg|>^-%oxi6_-w62l}z z`uK&{i`x*1>JOp4AtSIhWQWBF4PxAoR=Y<-nKTnTD$HE50Bce%URaBUvyJl5hN=UB z&o?&v(sQKxZEXj|w*y^~O}=V-q%{R!y0aaYEArp9_aosqv{rGMvCNK*SR@dAW(2pZCpCNRtLF@Se-- z0A=1lbUMtVJ7`oWLv8Y-t&8Y)g!HeZTcUV%A~ni91)Jd6%2(6HTVQlgvGEBHq}vF1 zHf@yLlH0nf%o+@^SmRA{E_M?+-m7WNTut(2b2LY0(L9_n-l~zU+VNGb>`e?q9kb|T z-k`V3E!vMKxq$rhMwoIr1W9G2eez3W@HjL?Q{ z9pTJUr)e^WcZ^9o1p9kz?z7&EI2+|h-}mtKskT8~XGe3Fr|}VkH0>cmy)lhWoFfRS z)udZcNwrGxcWYA<^UU=cO^XUWozKznC!Rq3;w7S9D9Kf4kJzq0KHqT13VTnhm%qB= zjL@+Im3#hciSLx#aC}Ns3>h1829J0!WWeo9)7B05`?T(2?oQBDy<=(ma@SS=&gXX~ zYXxayg_lY~mvIZzl-(M8DThbbN3Kbg<)7jf-FX!UDh4t!>%wOnf%u-)K-ltC@y21b z$^qF>TLHP`G!2G~XoMiCP2rUsOy;I%AkW>76Q0pI>^b??rWt9nzrHe%q^Vy|{Wr;N z9dQ+H|MWE8a|#Jl`Bh0-f;XslE$_gkun7w&)Oi*5J{BY@^)QUgEB#x!6<{~^w4nqG zIL9ttyAC)2+d>Pkg?Z(EwP35OYgho(O$SPZHoNkN?3{Dy(w0`nTBc{@aBUnydh8c~hwO z24MZ2X{>U=uy=Bi@&hrJKL>M=09my)R^C(h1I<8bH$p|;dhje@H~lbG^54*h#Kc1X zg+BamOu$(h9OZc7T9}x4!LNTPkLSR3AQAJwXommn3k&EA>kWjqwlup(uEeTKT>Ot` z5%qv)f4a0A0&tP$`Ee%L$|3Hcham-BwA}xb^k{-D>Y))YTm%!7()ce}Kmd%0uz8U1 zcL?u+0TuKk%TY#WV=m2`#+g|lm-^F%(GdVk>?a3cnRig6di*edIET;=Pzh?ld|{^# zu>Wr?O&R)JY9CWLQW_5iJ>W(*GX~iI5G7kr0Yu>n2={N1JS#P@5vTcZBWJ2E6qKku z>l+e0!-YMCXT|X+iu3PaJArXa>Hr**KM4Rj!swnZEWj$!ZM(3iXt`t-{TGl@qkY%-*waQ0;sS>-IRm8^zdd;qdga@k53~ufRk4ii}Fl>yV%B@ znz95ypHmF>xc`fQ`5hoQU?Bp*jLNA$08V3!{z>xYA_XN%WmpO8*#$X<^I$D{xsgjP zV;6!OHrn;)VF}rsxc=~s4^17SeNEP-8+~PEOgnV*z3K}`B@bS%u*#CTJI##Sj9;w+ zU;>$>S(xOAumvoFVc>gUR97aK;uq7X<|&~)^h5lQjLF5Zw97za=hz{yBt=p6`q)8Y z4*NK`cZ9$U#pYe@@G{g_FT)Ow*;Q!VBKvFRJYLPV*ZlZR9L@OFY-CW(#Y{7JcD(l6 zGiN}pzfnE%tNK{$&RXb?*2{`HzH@woqEe@LaLSu~o^AaboTfO%^^Av17W=8U5<7A+ z)k>pGBlex^Q+mtt79!HE0}KShUUIHXr?qxmWUVlYENReT<)@EGhI8M_bt22>D`vM5 z>f;j3m76P~CTJ7rH`v0@_RGWlx9AW8&vF~^?IqfgKe>LolD%WihHGR+-K(3?9XyaAc?%QD39 z1$CnVxI>CDl$a-HQ~Cf9NgQ&dhZw>RGiD;<{31CKzD#u&5Kw#8YRu_JiXDHK3OPzu z_amwe8+1@#Ub&6hZvJhjNY<2mTw0$o(*fc5fQFP*r%|p zfmV}A76xI*?LuOUGzt`2nKcZ=Hr<6;eC+!^$NqLyj)9r8%$H*LOCOL%zIXYpto)em zB)lWZG(P_QvwZXkenkYX%$vJy3F?r z)ILJ*;i@-c_`-wKb>#v>3|!Z;;Yq|c*yW?_+f&%w4t6|T(IHm1vVW!>_9q>2a(L~} zJ+3wZu_##MF}}PB?sMGN47Z$SJjQK;F=X_&@isf{>!l_r(9xx8E9#t|8?tx;TEY5$ zIOw}@3L;aG0BF;z7&nQc{b&;oH@1)IFMW)uQ3V65rL{q$w4r7otuNasNQ2y7)(kg| zi8QMuqhHAT*QvO5Sm`B8YbQk->UPxaTqZr7qhEa|kCyowW6e}wd91>}3AIL}(eQF7 zn?_^HLuv!N_t=Z<-b|OOt=aMkUuhAb)4#*34+o%TS9!M7-q0ecxetIDqv z!k(tmO}4%_*3l}1pL$50;2i^IM|OUG-ipEW;)PPXV#Qd5lK-lhq`r!Ji(Pd6+=b3kb{i0%btGA;slnuv=WgFcB)ei>;aZjS6 zIys``>WzeTNAg$tK|b0kt}K@pT^oC$OeTioAgnPfmC_2OFt(i7g`drnH$upK7%*o2 z!ThC{kzotwqj%SuTVtG{s`dcWx}Z$$Vy}8|@P+Dla+VKKKt|Q?1DSadZb0~g{yJ z2}!`n1?Kr{;a<36`Q7!cyqtA)+(mDIIwc!|KkrB(9h+fOyfFi!?!4&no-8^Hls>M=*cCOTdhSUvw1D}ig$+h;E_ni;a2KgqZEDJgHQlv8O*NC?h zSyeMUK4MF|2)8+&-r@4i_Fa0$rwQ(m0F9lW1ujc&pGXNjCzfjBY(CISxw_gG3vCesOcCiA{*pZUS%5(aDDf~M;j45 zgA!xnK(w}M^l@%brp2}X<0eXBwR>nel;Vmuj%=c~_K(e1dDiH0ly$qD27BHWajzR2 zCJY7X2Ap(MMNzPxWAH+JN@sdBm5@=h!6cqztW7*|&A&x;HGvgWFIopc63oE{yi3kNGyX*i}Xb{_!`?ck9rwCS;G&vp#=SJqs~_@y#?>0{SN?DhV)F9XS;KtH9M!0)<5Q)@t;Bo6434jKA+V=lp%0 z)c%8KLg8Y>`P-BdAQ0ZEeQs6ydyh=O`+9Z=aT3zsri!tF9X2E1+UtKnlpOH^4<^N< zM}z-1rTV92>;DyZU;MmWK)_*zeXLO;$DfC_i9};PWDqeaMRSo6jgsnUME#)xP@t*W x-3w^`^X-4e;XlvAe|{JLSqc9CUJ(PJox39F8kbZbfg@_6 = { group: 'Baichuan3' } ], + modelscope: [ + { + id: 'Qwen/Qwen2.5-72B-Instruct', + name: 'Qwen/Qwen2.5-72B-Instruct', + provider: 'modelscope', + group: 'Qwen' + }, + { + id: 'Qwen/Qwen2.5-VL-72B-Instruct', + name: 'Qwen/Qwen2.5-VL-72B-Instruct', + provider: 'modelscope', + group: 'Qwen' + }, + { + id: 'Qwen/Qwen2.5-Coder-32B-Instruct', + name: 'Qwen/Qwen2.5-Coder-32B-Instruct', + provider: 'modelscope', + group: 'Qwen' + }, + { + id: 'deepseek-ai/DeepSeek-R1', + name: 'deepseek-ai/DeepSeek-R1', + provider: 'modelscope', + group: 'deepseek-ai' + }, + { + id: 'deepseek-ai/DeepSeek-V3', + name: 'deepseek-ai/DeepSeek-V3', + provider: 'modelscope', + group: 'deepseek-ai' + } + ], bailian: [ { id: 'qwen-vl-plus', name: 'qwen-vl-plus', provider: 'dashscope', group: 'qwen-vl', owned_by: 'system' }, { id: 'qwen-coder-plus', name: 'qwen-coder-plus', provider: 'dashscope', group: 'qwen-coder', owned_by: 'system' }, diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 28392e52..9e45b72f 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -6,6 +6,8 @@ import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.p import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png' import BaiduCloudProviderLogo from '@renderer/assets/images/providers/baidu-cloud.svg' import BailianProviderLogo from '@renderer/assets/images/providers/bailian.png' +import ModelScopeProviderLogo from '@renderer/assets/images/providers/modelscope.png' +import BytedanceProviderLogo from '@renderer/assets/images/providers/bytedance.png' import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png' import DmxapiProviderLogo from '@renderer/assets/images/providers/DMXAPI.png' import FireworksProviderLogo from '@renderer/assets/images/providers/fireworks.png' @@ -63,6 +65,8 @@ export function getProviderLogo(providerId: string) { return BaichuanProviderLogo case 'dashscope': return BailianProviderLogo + case 'modelscope': + return ModelScopeProviderLogo case 'anthropic': return AnthropicProviderLogo case 'aihubmix': @@ -295,6 +299,17 @@ export const PROVIDER_CONFIG = { models: 'https://platform.baichuan-ai.com/price' } }, + modelscope: { + api: { + url: 'https://api-inference.modelscope.cn/v1/' + }, + websites: { + official: 'https://modelscope.cn', + apiKey: 'https://modelscope.cn/my/myaccesstoken', + docs: 'https://modelscope.cn/docs/model-service/API-Inference/intro', + models: 'https://modelscope.cn/models' + } + }, dashscope: { api: { url: 'https://dashscope.aliyuncs.com/compatible-mode/v1/' diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index bd07c9e4..c501f0cd 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -481,6 +481,7 @@ "baichuan": "Baichuan", "baidu-cloud": "Baidu Cloud", "dashscope": "Alibaba Cloud", + "modelscope": "ModelScope", "deepseek": "DeepSeek", "doubao": "Volcengine", "fireworks": "Fireworks", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 35598287..cdb84b2e 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -481,6 +481,7 @@ "baichuan": "百川", "baidu-cloud": "Baidu Cloud", "dashscope": "Alibaba Cloud", + "modelscope": "ModelScope", "deepseek": "DeepSeek", "doubao": "Volcengine", "fireworks": "Fireworks", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 4d5f7e21..e69f4802 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -481,6 +481,7 @@ "baichuan": "Baichuan", "baidu-cloud": "Baidu Cloud", "dashscope": "Alibaba Cloud", + "modelscope": "ModelScope", "deepseek": "DeepSeek", "doubao": "Volcengine", "fireworks": "Fireworks", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index eb93bbaa..24123d0a 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -481,6 +481,7 @@ "baichuan": "百川", "baidu-cloud": "百度云千帆", "dashscope": "阿里云百炼", + "modelscope": "ModelScope 魔搭", "deepseek": "深度求索", "doubao": "火山引擎", "fireworks": "Fireworks", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 7001096a..4291d195 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -481,6 +481,7 @@ "baichuan": "百川", "baidu-cloud": "百度云千帆", "dashscope": "阿里雲百鍊", + "modelscope": "ModelScope 魔搭", "deepseek": "深度求索", "doubao": "火山引擎", "fireworks": "Fireworks", diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 0fa68195..d622ab13 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -424,6 +424,16 @@ const getIntegratedInitialState = () => { models: [model], isSystem: true, enabled: true + }, + { + id: 'modelscope', + name: 'ModelScope', + type: 'openai', + apiKey: '', + apiHost: 'https://api-inference.modelscope.cn/v1/', + models: SYSTEM_MODELS.modelscope, + isSystem: true, + enabled: false } ], settings: {