From 94d883b5ba591eea63ddd158eaf92a50b4c3cc55 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Wed, 15 Dec 2010 07:14:35 +0300 Subject: [PATCH] New tooltips (support delayed displaying, mana and tap symbols, styled text). --- Mage.Client/plugins/mage-card-plugin.jar | Bin 299420 -> 306003 bytes .../client/deckeditor/DeckEditorPanel.java | 9 ++- .../plugins/adapters/MageActionCallback.java | 66 ++++++++++++++---- .../src/mage/components/CardInfoPane.java | 5 +- .../src/mage/utils}/ThreadUtils.java | 12 +++- .../org/mage/card/arcane/ManaSymbols.java | 6 +- .../plugins/card/info/CardInfoPaneImpl.java | 35 ++++++---- 7 files changed, 95 insertions(+), 38 deletions(-) rename {Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane => Mage.Common/src/mage/utils}/ThreadUtils.java (67%) diff --git a/Mage.Client/plugins/mage-card-plugin.jar b/Mage.Client/plugins/mage-card-plugin.jar index 1ad58bba6e9fcb35fb922ea552cbfb950e7f135f..1f94aabff62eb7b3a57b2f478271b9c57c64b857 100644 GIT binary patch delta 29174 zcmZU)19W835-uELqKTbMY}>YNXOeVmPkJV{ZJQI@wr$(iKX>N-@2$IDuU`Gts;XVR zclSPLRqd}%dLGK`0t$kn3^>FWkpH~OxT0bZND)f8qWC`M&o_PksA6LHE%-6Xb(b8C zCIj#>AM}?TYOalE`vc){>Dl#`+-g8`sl^s)$Z$;yQZj|wVwe~(88AWqH{>)S_SVNlnCsd(aLm>WV2JRlj{d^E0AowtGm#}2DvzYP_e}|CbE&lWTAP5Bi zs|g|&_-7g>$NOhGqWt_9BoV&j0s;&KBnbRJL4fS^Ce}tyP65i@wzGm?f0*#d@1(LL z#3u@`PUUZL)>U$LfkKq#iW5uIkSZ$ZHVjiUIWEMUqxrzWhW7nJ+RFP{D<4msKht|L zG1l?pa{S`s<$agpXVDTv-p^EUTqOLn+{z+xWG^vZ;&^(|xuY;s!KJf^enlv5DL+)i z%@Lp}ZM^C-obNlcs?kGe^|?#cAloF2IuC(lk2HhojWaiY(y*5UfkVMc*efwNs#Ni< z$MlG}ku*s6kGy!Vlba=l20BX#WIxnDU!^- z#{jqoXXdXdW{=$5Zsg3zwF2ZO?m^qcso_9~-h!Qh47cm}N1hz^x;915CrWy(TF3Gi zrSw2ccj8(lUi)jT%rIhU`Vk9^?N$q;^?uZHWJ`|b1Kc+O|4mZ-{;ZYfG;0qI-G;^a z(E*ola^$snT8;gp@}kAecsD`S&vuFhxvyJ8J4%7Qlhu9GR>>aUhc`c=ZrnP0pL&2L zph@PqFU==S{nvVxOz@+ckT=Dlt8I4Mhzkd%baeTHooHTM0X(beDw?v*`~pwErpc@3 zUur(l=bHRW7G*RwWYx~&c(LaEMflZA5^5LBC@=>~m%8{4*c7|TC7`leJFB14oz8R1 zpY;}+QS6<$m;C)1i6BE{f?&OX1LwqM`wLn zVq`Kn03JAl9)$y{ARJhK@$=EY%5P49;z^toywZOJ5xX2nQeyfLYSeqWHn!Ss$f)B$ ziG|Uk9I}|#T_Cw}JsQkBZ;N+zQR;|rj9tX(3e?fo%8s4R+?V{ ztaLkzl4~pF&qm>DruODGG{g@yPQ4~IVdS;x#z7Ft1h`aHn3z+>{(OtUnqCz>oUWb> zp-0nO^S}j0S#;9X=R5-f1___h9Wdn8zV?@>wmZe#?@slLxYJw5>&DkuCpb4!3aZ*0e|JtJ@LBXj1=P2HMm!SHyyMU;$h{OA z%2x^$u}LOzh9{XEV|(oMW#j0~xk~8)(@mv2a^(Z|)Ack`NwAKYAP*^_%hcKB2JVL} zWzy#lZlX*&!n(C_#V|@aes{d$t3lAVx_AhhJ;1CUV1sYh?|sWto0ngPOFkphbqywS zjXzx&G%s4P)a=h#(}uM2|Kfi!!S3;f6bE&&U+!YPmq=$FOL=ohbI>o{3Htxv`Wn`fCZY*Zm5gs9|PLrvCz=r0hpld z$rxGU6}#w6f1fx9k_+Wh=>hUBm#?vfbb7JuSk-_ve~d<{ z)Q01ZH`w=_LuWod8-*|L8?zRq;St&O*IsTLt(UEvt(P5M=I;9=P7EMRKR3OmBi%v| z^!VAMfX`EbZe{Lk(3qKDdoPj4z4V6O%O7&kFK@TspMENSW``nasYr(*p+8lJMm;Hp zM7>-wdF%F5cwgV-I_BZtJx6DsNs(G}s2Qt<_y_E^5? zcVQ;;!n6?Q5p5k?InkME)GyRd7;&D|1RFo@nvmI=7if;* zPqnC@4pmTk=dST-R=jU}ysc+Xzhv$x&r6={YLOInwR6QtC+nbd`n}7&F1Zw$I1k#y zh>k3=F}bR0@}#mtj616;T+Fh-URxt@j{~PgU6st21_0BjX+x4Jm52{ADwSAT>Er<+ z*U7eD>I|!}+?*U#pN5g+EqM#Whbc(JI%H&j=yG~+;zz+j>G&2P5*tr`?*&JD#7be3 z&mWTy;m_njeQe6yPWEl-zeiUMFHpeYy7eM`)T~zch$mID)W^Fv<@BQNraX!|Dgs7? z6BTj4=F8+GAu>9@-XM{{gHW9*^o=QTM_q75pK|USnaimj-S*n?mPkZQJ2R7m74d2@ zlDl?NB0He$1_om*Y{2>USdhnX$9P>ia>j8GH?P}~?&LX_COO~S#1g4QWnxVYeupn< z`gVECy2~4bk0S@y%P00I7uYR?GY)j5=cuN3-(_(TFGw|KMIN1<%Tppr(_36vC^R&T ziKg-9_4>y;exR66$9?u0>`M0ZYeMQo9FJCiRh zPl_htDR2fgrFc5+D`s7fzEdj<9m4w2)Kq{M+nJy!D-z?c_$A^;h#c-bBV1sERTG?> zRa5X~vAcXP0dKLv@RdBU5+H(&fj!_6w1+NyQtj3odKuBmM{R?1)e8Jj=T@ej?0r?a)vrdeFP0 z@tGjfsy@HXE=9CoJ5K52M3;j)^#+B}$kIY@1k{=WAi!IFItb|Vte0zCluyz{jIrck z88(?1I0c`cqtzrXe9vNU@RJ)-;fQyRP3=lPug$OkMZUpmncWz>bMB-@N!uzqAII7X zA(4#;LD7*jV<}+W+x7PapP`+247ZGb1;FA}WL8s|QJqNWGMC{puvnodI#I_E+tGLm z$_iuCYo`iiD-j5;6N*9o(33L**T_&k6=rl+kMW?az}ak!fli{0|+2~9SuXqt7FU(E!656-^*Q||u}C2oT%c%?r* zxgLkmN+qD^6>`iD(JV>E8M@b*-PE~)a6aZ6#xj1HYmDli7EB4=R;nKYSx>a-i5Vjj z9yzTtDpWMtBIaj{?J~qgf<`Yr%N@tB!!%d7ZIQuC4aSk&&8CN@G!NaL)jC%%0oy0o zZJ9zl-_EHwNV_I=>eM$%7l${9GUi8LA>U%Ofw^fPV}{RgY@Z`4Pq^yamzq&PM#s-# z(_04pC?Jba+W^laA=Dxe-S&lgC)776f&2JKg!x@oGo%O%X=JW93D1&(G65N&*)k(k zu74~@G0i?~Vy{#dV&omHi+H^OcUTtw3nx8$PbfB-h_kY*%2@V8M(?{Or|5)~kWx&C zblvZ@{5IiT)9A3Q-a5KnWxPRo0*Ui5#SHT;Xa9rDNdJRW28R{kIG(0h0k!IA2PF?> z*_OI`o^(kPE9V1F;>?-rzWz!<3HvKbgTKqvWha$BzN zZJ)5GcF_bW)s$u$tU+G*BY7s)`ex zW-o=XuCdM8Rcq>ufF1SF{(3Kzf`MMuWQF52(@YRcvuSQ+4;~fsCp>q|RdLOuiJX`6 zv7>-=)#2NcoI6**HNGy=%WyB);slsR;2ZEkZD>K{UH1~J@kPAM!0vv$`J?myWKMq* zCr*Lce}x&MXx6{NuUf43Z>?KvW{Cs)x6CW^Hr-o=0|5!g{8ORf#+5jc0HZ;OAbx{_ zgQB5;`G5Tu3t|St6ucvIlMF9!wln507P??*WA&(3m>ZUQe%A zvF?^sdJNngGtFr7HrPn}*c}j`oae342WnfLe&4s6^y}}~U$fIz6`;(YkKE-1exNG;a z=+mk-ypM!YziBf8cl+(Gc^G`6%;#4K+uRX>W5PTi@eu;M3^*U9z`b`lhmT6mZ~ z2IeaU{Lh7JLbkU*g>hRTrgPho7`VRj9x$}6Jkj8KM-AQ#PV_gK2s66F@yQQfF zu!KvD($|Yi4lK9tI*gL=+ZL4bHNg*m#S3AxqUy#|uja#nhv-$8WaP7a3@n#l1vV9t zpoE@R?>O+_s3#(p1+Rdv3T3i&+cS0~$|odTqBNb50QDM}xv&}<@9&+LrZdzf zg7IppW&i=MTGQF76e*SNZqbMsJTZy`Puvw2Nt2x%K=^Z{{H^gWpfA*!iBduBEC8gXCc50x)3M*Q}!WRrd zDCl2amUPy+4j$3G&;$*4C^spl6d%H#aNMw{CcKaX?Jy0mW}RT%Em; zKaH9ID%L@^?yN(&x2U2}UigLFw@r&}VuZWdEibQ;Qp!2myJ_28fU6frZ8V$ksRx53 zuGbmLnNu!fw|z(&)Xi?}p{ZU3m+I%5VlN>baJrT2hH8!2VfVIMmk>`BOUERHrVolu zm~wTZzYU@F^JHyO`;^SNd|K0MDQ`|2*`Y8hM7 z;%TY%F$|d3RvP+&z(1NR7u)Cf^TKl`J3+gV&;!fp^Z8LCxxZVlGsfy%P`t zmRc}^9Wi4Wh`Y@k&2V7Zpr7)AVTC_Y`)ya6$;oOKt(|e|m<-{Ru$j^o{gz*-wMQt4 zLr9&&{jG!p<1NBof}i#s4hetTZO+hS_t+MKt+^|@LfH927xfGltv@%TzMxb^qX_KK z`6ZcQ8RQ2d@ei_5=~C4(nXq!jwgy!>piCIv+akS=`kW0k__{;ng5`|$5c__JYv1sV zlF%xy%AAQC%>cOM4D@bVJ78&J8`_J=Vg4^W?3+So5G*rLZ3%J0BL&&JSPw+J@sf%$rptdDzqK%2yZ=7d_F^vIaC-{sb4kpsx)GXmk#vlLXYvgR7? zo(<%_)3NUMWcT&)?G1O%QCW*@l;(4|NteDG9Zy$~Twoz=yIlLbT4$<&?D@6onwt8Q zp5r(}Bb;r3n8(x87fP%v$hD(3fs9wxYKMIP7h9T>#;T**-VE1q(YHExpej;bL^oCd z0fEmVt+z;Zl@u_nXwXf*5#1_M)TYRM5YNp$$~@p)#388Pp}dMDkv8-Adj#PAdkKXR z%9qhWktzr4Li~@1$YgxJt`}7tiU^;(ub1697cogauS*)K;=7I0%KDW?hvv=>NMxg8 zJYLF4_fJ3z%HqLL)a7X-;3_3d&Hgn7N>I#-GO ziaJE;vG0@3G9xBa|B&ehM~`V7=#V@JjAsDf>Y;TZvuBmzL-|(CHPOXC0iJiD?}F=8 z9yj=i3kYT*1U{4gY~5kq^RKNBn%iY8B9^rzW&h@@|6#TrI=3ATq$u8i8?tF8d;FHi zH#>IM*eaXUxo*?)eoipEYquynzFC>p(#f}IVisdrn54>4D^)A&H)nMaZI%`%iQvQx zh)j{;9!?kLUS^eY8ZXIL83W`Oa%DJ|rbuv)rwehfr%R=pAH+>Cn#WAA!b#qa3(sgB zSkHhtAp&x^lAIfWTB6*8=@Q(FwB&Tmhj9}uGLm8AkomXc0Us6UatV(MW|bLw?lc!w z>3VACID&vzkdYOIyf;$n7bO5a@vvLTv~jEtEf<18y%&f~v$%vF-j{1Uvr)9M7_DTQf@BIBMcVsh z1|CJ?3e9g4O4J z-Bqq^@p_DaO(mB$O(+suISc%4kP26=|6<8s;#1ea5;BHkHBFuH@@t(=V84!`7I!d^A>D7 zGvIOO$1pWl7LFS79%CE2c?~=GqtUvaN$L0DV9Q|#psdFHjgR*?BGFPRRg$Wp6dfRo zE(P^Cx08s#NgDN}p~)-=&I--ATv1K)NFZWF|CpMCIH7}M zzBr+aqiT4?6PB$hy;@{qcV1_>Hv&hyuOkJ?AU#R~s9f)OdKv3_{1$5c4RO@>?cJsT zVl`$c%BlX%7E=dSCX%-?CsWDR{&osMRa@x~u z6x^lbOHpXVF-*C+HT%p0RIX?3t{dcY|J^O>9c`S8vgFv0nd|b%4WE(Y!m?|Cci_M# zcf5DKs}4$3T=ex9a;ql2UULIsq2IW`NJRX>!?+`E2|8(@%|U7?DQN>Wt1733h5nu) z&}bu<6s-ZBmLTqsZ4f$(y2*rcx}Wt6ygQUiN`x7?C$5XAYs7~sUj!NsGSd}f@+TC z(~*wR6RLC#qFTc?|F!GqjNjLiMCwAwI$y;E^+Z#IFs^1TG~T;6iZiv#^a=Ob6!p4{ zo6}B#H;65m4tQgvi4ptCl-^gN zy4^O~BGY8sZpg7ZLkz+pd!=4r!8iT>?+AoYIbq?EQKDC&N8@32M5B<{W_zsIeR#^u zEPhR)b%A0CiNal4b)nln0e-t4JouwH02cKj+M)_wrbN~=RqOa(E;o`GI@7=so!Hyzi z4bmKQb}3^&LE+z2Hr%!9BU+{s;w`A~bK^784jW^=EQJaB&dD>t{u@#Y(m1mkEdH6v zu!5?N1}7f%DL$HaTo?&Rqq>oVxCWc@NF6bX4GU3UmFMp~fXs$`DOX+^S55dM&Il!Z zyV0p%^7sryB)$6h?^sjO^D%!In0cix7ku`mMKAU;bbQ1_wzaJYH321jjvCtD(53KG z&3-!k#{L!jwfSox6aVxz)rIAg?BL;(Fp;vI^|4a~h1oT*lLS+ARP)%YqhAX2c%X%N?Lo&xR;t?&poF^ zT3Z;JtGIq0*|!hV0aoiI?2Nhcof7MAt@Yw*(2{A*3^jdVsYJ=G%e|0N)vKO%!4gAg z1#UbAe4|+Hz!xqFl#mOEhuizjiA_vuwAk2#a#(5U)Ls5c@vUv>sXV^TUR;ELg{{{_ zE2I|Ah8~%DxT`Ykx?-(drPx&Fj_~R&l+&*TkThZd16V7B4-30Z95CPgik=qH^3lFj zr<#XReMlLg8M1TI)3;E9%m;O?@a!n_AU#(mpXIpkqd;Zmu0zd96N@i#Kcc4d?U4pK z0qRfK-9!dz`kB%r6Dr#Ux*KXQ~)= z6*ZDqpA=y42E z+eS9qQoE7cdX}!?IjyU54m`8FX9>)H){jLEsRVzx=S3N8oE~BklM{aKFv}*_goofKU!qH z3|UsrCucV9VOpi$9w!c$E2Gb;$?RgzZGN{~`z5#N^fxs3G?ewYX7@aNo7Iau?@&aY z_@-n=bDSvplxKCtTkLEu$Ug6^rtxxJ`Ay}yJ$0lM@p~*CnI|6Vg;T6;aI3yPnbR2z z(x=_u)3I)hoC86ot%Rks>l_?tl-#jn=N$sBSwCDie_Vci96kzw%I4t(`D!5m#!9f%nW}OK z8?{V#G`n)eSG5q_s{3{-L%paw=CVmJdo{{0Ylmtz7p4NCnRJb_&t>JsPrH#y!_7;biy9e7Mw@MqNt}*heBY6toHrq`ym* zj|Auz9N^@5X@4_&Zop>s_O+~l;%QLW8aNR4F$u{nXqfnd`NOgWft)!(GILpLSY4)X z*L&mo3_4<@;k+tsmA;}F#bv*y%b55R*yn9oSPZ|fN_2%^l`fyjCU4$hnQ~Eh%mYt2 zpvYTme7o^^MODT%=;Z71D^sQCFg9%u|BN%&%fdWf!P|fz%2>*0RQD|9DK;|oc-jn#C%bMbKMP$&@%r!ni$&>ydQu4wz zNnr`d=YGw?6^aLxzTjYBqsU`#y^IJbWIFzgk#Sl; zK^{cfIDrflH~n^Kq!5Nk6Y-P}u+7^Um$valiHM#&RzkY<_j_N%6JtRJ++K=vegf}w5v zbN+~KGqYIzjQ6_+b><)5dmzW%ibypVM~9WkD`fZ5-~96=2OIcD=pdK?LwzIlxI_pV?1K09XQG3k$JBB-Ng>B*rd+&+Wo zDb2pDyo|xg9O_QtkTy<1oof(J2f{<{)kpixE$#<u{^^%ug{L`L82bB~}1%{V2VFiH`XFo^>b0}fF(-Y9y zTU#(#4)*t)_$Ujq6%7{zgqAnXV1x;%4ePBsKQD0D&T&i5!r%pkWg7A`nhyqt2o$2n zn3483PH6xUc5L^sYm@z< z&HLmJyTm@xz^cuvkFg(aT&sMCYfcmGy|WaA9`V5k7FIVF44o>eHZ#^qK|2FSNf6_1`v0US@5(D~*A``>o)&5LaTKbhTc96fYvS&L%hj51! z!{fCr(k0WgG=toZo7C+EZ%1fV;sGDCch&Hs`_m8o)Pc*#DOf^-(Z!TEP$UG8CqIIZ z=wZT#D+$?-jlC$(lE}xGCzCedCP0(J_L1x8sydy|*aokE)+|=vxx`ZnE~5(Hla52dUf58SmlIs2dY< zLXPKA{S~rAnA=@)V86^d-p#d!N7k@G+%Sdd^C`Ii;6{bOXGI3qM?BSB&SyfV^% zsc?AG>sU{iyn8eDV08xQEs=T|y4-oVe|d`}+Czu~r<3(#LhJ#k()LF3Q8O%XJrnd) z1a{{;%;0(KiJ0=n;t-gX_68RR1l-8T_L&_FmwkEB%o^@A zW}aSdDx&Z&kt~m+n!*WlTY&cRJ=e?e980e)>tI`0#t!9R@=yobt~5D3zu4HwuJy!k z;)RjNc3U_)G0x!55a}5~9T;P`CXXZuPewjkgv0zr(1T)SJ zw%F{($6Tf~NO2IDehBsIWJ zy30s8At+X0L&FI$Z|8#x&Ye(nWHZ&o40VIf%kIA8H^;f@M*y=U;A+%Rk;NX$q}dQNj$wHBE-kUCay@{Kd2nsw*K4QOL3( z&P&pG*ybMk<)@Q*EwJy_?aqT?4fh42>qlhl_sHW? z>-Uj4pl1E|yc&sWslJ_IRy;%zF)@tY`R+_>u2hp4Ny%$f#B=E--e8Cw1xwI1H0rA$3Q;ZD3bHW#d=HB$4|a{VeWdSj@*XVybyx}YqdTd(SaCuV zIhV9CSI33sZyGd-BGx9f^)Y4q<3@7UEkAZtp_P__W!zM$mRnPEp1mksK{~RAziGK`o#93% zOxF3BUhCu(1zS&1e*}NMFH2RS5vE08hb~;I&*A&i=)%vH*IUgjgJR+e5jQMpVa|zm zEQ#xd{(uJex3GLBugXOyg5g&gz*xP^X=y+398wS|F<(*}*=3hmYl zWR~y1cV(J9%sP*3{-?( z6{{ZZ6dw<<$0qbhHvRYd>$l z=6om^kw0=={LFX-%yUUAJDGE$DD}8};HFLBtI$3Ue@;OuD3p4eiohn9thk_c`gW}8 zP24=&UFXaq%Soa;_r2sI&xz9c`cEmv$~lTqmh{CIlaQkH_7>C1s4-fbbq`qsE9CFB z(2D|5>P?q%gOULq@ zQHD773GnLE!a+OiT1qE9^ePT0zr(;{vX#i3*yRA!o<;p02jj;UkD5A$HT;uoSm1@=l4Q^H73cF=^`aIE24>)wn+D!C6ixC*S^PC8BgEmTr8o> zr>MhB7c8QzW7j&Zi5B@2@Nqz`Ds@trrL%akt9-YGR`4il@N$KEU0c@j3q0%gSoZt# zerCSn@~br;9jeXd+gU4b!&TMPMNU-J;7$i-oCN~(5g)_gm0?^;_*Q}Os{tiE@$d@_ z$8xSEEn~sC@DiNiI};mTT4T8)&S7FmGPgfjp$j}DQ(p@_6jSr=g2movUh&qAZ!T#+ z_*$dU=sx^pH)zHWkKvXK4&LZO2K~H9bv2!np=3Yu`hh6S9J4-!*ChCs06WeZIP9LZDXUZN+di2Q_S8@K- zUQO@VplC;lM@2joXs$AA8YGI5*4_~RmT&S-3lbPsy*~${l=gw&r)r18z+QK1EX+Mn z_SNw%M{7#?*Vr8qPL`^~i{oh{*bvlW3yxEb0QBPsFD3z?DlBy4dHY(a8aP>ILVDW# z^f1i^nzR*yG_3W+GBkxnvK4(Z()G+Tw^qBf{C*T#EABSFtl5N9li=kycO6kBSbeS~isATQtf{YTm+PdS^)g4EEl`Aut6y`9RrkRo9#E832TB=FK2i?^F9mC7+Y@=)XG8 zCe)X12Z+F-4`Oj*zFhX5F$KWY1xTU+5M@jp&T#Z`PUW;$h|j%atZNGBgz%;lZ^|$j zwhIautO29$0R?o6>d7n8GOdDEQewH=%L6m&um=G*7n*!6hDM}mFK6W>HxVUm+pE=e z>Nae)Iza3RE4MRcw|o|b=aKlbLi@|I;rr|rhL-2vN}6D!ymg`I-A&IB1v$jll>**x zdI*Ktf%8;DU3oIg7i}1M1TyzCc3pHjNp?ClCH3eWnf$NPO8l0jlXEPN!;_UX>)n}| zifHvB=S%1lI&p}xJ5Nj-t@C;N6IkiYY1uaFYQW`koOe1vpWpNXo_@GsIVrNV?NR7G z8#Jm^@FE`SIS#tccRI#{+j!pHAtmQZBYrl?`G;rN)?jU%Q?*Br+FZy_SfNh~>Yld9 z-!gm!9WI@A8Qc-lGSqMOE42d!`XUnixG6(gR>G}uCsNw@xZn zezuDDkLAXs294#6dim{4<$29PEPZpU&J!WE#9mk8J3o$C*!Kp; z!GO)IbFH}FEmq9#783Bzr4jCcHJrUkR|EC?r|TBOy=@%pC4{@(so6`~s}M&3_Wk|W z`)CzkYr*Kr`y-WdCVpbe(>89ZE7!M`Zk#%`HLOk+3u{~^X2t7r>N4M$U4V^Xp9`KP zl#LH8Dc>vdbP(6ZjM0gkN)t^Y@2$+b3l1IdYB)ret)dl&$DFFp$rgRO$iFmX2?2M9 z=e)VG@~uDj8h?J4}4$Qkv%_uu>c+i?87fIRM?ztj;OTq(>mu$1#3nqC6fCCFKFH~IGEVVuZ!`7G zzSyVRwiNGn5x^byFvD;B!Woel;y6#*^9Zu;+pLgRHC=(VnaK75FPFV~90|O0M_9NV z!>Q_jsw}_e4!@khG4Q`OuRU7#6IhE^`*fOk)ISWP`TeqS7~Xm0ed*SL#JLHbaVd1@ zHT2BC=S}F^(WK#bnSDZ-1M<>ToW~cKLO(N2Qd){bs*rHVxUYsj&Lz81DzfL5T;3aR zP(WDdTWX@Z#4afoRPvOadkfr@HnFX{9nRj5m!J{!Ad}0PR~=rQN~$(qjz3oN4ByMb z#Dmt5bEr@^dHWvRJl`j#6@2#1XIblq?)Z;@j+3v=5V=-QiG(?^BC4L@Bj0j5J%0`$ zOg+WIT0l`U3Zk;`ev$lu>>{sA15n#2wGAw@;_1)4;_!j;Q&k#h=w<=)i|_*GcW7pg z$;^2W-!jVe8$5$# zq@<2rVM*LvayJ;Eu9k%RvSzp{lGW2>hFP~9%gs&I-lfOp1$GE+s_K;I93JaPgRVR&M-7EqUz6nS#L#`M}Hp40FLs5~KNI&<^#@&gD)Ws=ZA8}!#x)`|pB3^qyN%V`|6D%{&nVlrO?OQw7&WRHc_ZG}U;wb%Hgkkh? z?S1cp@TF#9YaZ7d)afS<4sGY8-MW+pv}~u{&j}v+Tbx_)=NFK1%rjrXZV)y^MU`)p zABa=F?{#(3g_wvlx!`;EuQ+Y*b;Z)(Of3b_p>Cj$-b#b0E?vPqOj<$0p_M?j)&%P2 zFX#Eeg(xqz2_KPwdQRa7!}5u&FJSzjS}l-0?)9s~7&TeCK6W5IY>!BCYOR%AqN7j% zk30%CZKAw3>gq88*^8f6Kh@bi%fR%}dFT~05_75Wg8=A)p;0pdLtIDA0*W&&r!W=# zvMnsSCP;GFC(QG|2G)F%;n{9~#n!Wfj8+>8q<9MS#0u*H&8wR5y28$KFs|UIUUpR% zi`nx$6Rnl+Z_2>p*9#2fG}|#L#LXM9j*9odPFpyC6)X`!z5M68%T0RW=YIPq;|?uyH$l< zu*4S(m;!d718JxRHaIxPpZ{dBPK)le>m26$`M5o6rT_x2e!()VJ>>GQ9Aa6xa z#Ao65oT1sRS=?-BhiepIP3N9`DID5M7(OP$J?3+T;4$(_%R5YaUe3^ETsPS&uJ_!iC%ZS%j<9F zCo3C_-F77%fj-~15Wk7EvoKBwbQ69>!f3?Lwh4XcZq!hSC@%Wki{4`u0izcXO3DLr zi97fMM<9HSW6hKpl+Vze>FPE@FDnabE!!#1+3FIigVE*t8JnGcU!*wTKAKG_DRVV`2m20%eUmrP~ zvhgO+n}jt|E=0ZP>-hC5L zfPPML4*nEI0`Plkrb!0XW3y(@PiM17MOuy?A=}X5&(h~G0F*pcS0$nVZZi(&{GPgA zksZ13@tIQ}@&=3g1r+tDckvT<;rfD;C--;h9l;$Xc7=!c>@N))@|)9cGmrOrci`>7 zG@oK%xKBRN*Qb0_P+(d>MqnOk2JXedQwfN(dw6{K;&zPr0(U3#et2i~PWBS zHD!lD_&!0Iy@{)Gj3mzXKCCGTWLKXy2$wmk5=Yx4eP3^i{4nzN{Q%%)FNS*^x$J&@ zALW#`!%;9f_uvM+g$IUf2<|G34Qv86Sw4naNF^(LC;T>g?@(W;_C;PV^D&RaH1CaG z7~kR5Z;0;OqkJMW-##3ZeST$P;$)RFdSmhV#lH}T)|?(`+{t)`@J?wUzc7%@oC^^r zHWMF>D?5<|`!rV6r~D@B3ub~auFAu}!furG+ev_xC+j0zFVfG)eAa-GgFrh|2qpE(pLBqa4+R`574-`56cA_FP&IT3SGWxe!UvL=RFZ|aqz zow@+dvugU3QkooxVG5U%ihJBQVpDW7JJ^9QBRh^#4P~I7wNIH+|GVxm{0RBu@nwIA zX9}-(20;*Xo2-Yo-^K(~>rh!I#QDm~Qoq+S9s6SIGl_L>(jC$M7$n9Wy5M zOq@uqYuuh?8a^^s8jBdzN{CAyFBn9{Xt+4t{cWH~W?UVJ_;;U-!t|dqyI#{)tov+F z9WB1Zeik=8=}uvA-4gj%3>7}U<(6sy{BN^I6e67r343R+=!inVgC6zN4zc(f)8@@m z5~Iy_#$FZ1U6o|dj*g|~_Z!u>gxeH$E4^N$d*2IY3Ro{YH!KdUW0cJTjwXi!Ye8X- zciT=6Og)WrHy-o=iY;#8Rot8WGaDYkq?cPT0;vUM^))%GHyFi$4_+_-*c0ItEQ0`C z@#+_t^RLxvmPYcxanrdq^@tTdh-5r_`~ueuW@QLn<#AW*=7k92E$N_5$Fz2xA#I=K zZb-LjYwQFBb4N@$JU@{LJ(Xr~+oHl$2EL*~<^o&9@9VZ;$E)LQ18tTi1#Y=rKT3c{ zG;u5qo)q1uIj<-aMN+zgF1nJp&B++MXm&!1aNAvO*PJat97GQUh3qu0pRwEU@z9Wz z(1laTn#WA>Sd-oI4A-ole&*XC8duG_!!pg%&t2nJkI$5zr14%BOy^*0bdp{wO2v{b z_IVI5)zX;cZTV6aEipZ^0Wr{s`>vi4pIX#YX)yg^^XWRg#QS<}@BtH}Bd>`iZfJ7% zq}L})+jyD4Up>QJ{4`IrUCqq;#amHJLRdG6X!PP=aSlZ}@lt=Lr=V~#P*~KYC&60D zW^zFoUP^w|N?>G(;FhE{IPMKAnv#?%(rujTFWlQl?Sgl6$l2b2;w#O#rnWSUu4{5}39nL}BI9Pf z?ZxUt&Y?7qNb6~p#!8r)hPu!s^CYd~h1cHf8N*J+p@+(JC!^1d8{D?p2)t4B`_FY5 zxU&jhb^!s*WxTu)vqnV8%yyC2l!xe(TrWMAF5wGvg%eUXFYwrLV1anO0Zr_(zBo;J79$U1MpWHNiX2vL z!Q^=>rCa@$28TayOq&{ptSARD7UvQQm3h*4dCvf>Iv?#|7N)K&66XVmzc2tOL24VR zJ7@WbR`*l2?Qt$op+0Nj(bF!9dAyi}!tf6rF1dLFWkrqzj zC^p{dv1IKp-}Gt0!-9-H@i#>IK_8WzIp`i!hch@sI6* zjmktos18?XtaYidr`o#I%bfc)h1I7p80tqABmqGwpXi6H?z+zLU(C4nn@ri`H+6cI z&UMO?N!PsYl)VhA%`s`&wewfokk!947yh(y4qZ1I&&bc9#VKvms+*;L>8IN+m~at#L9OYKP5+egMkbwbSZN$sDMvx*7XUP*Td!m6iWl*j5Qy01p2NCZ|{mkgJ|%j!P4I{Ne_Iu%_4RT?t_ z(-nk$i@qJQMBi!+J@f9pLG8Vf@4Y>Is!gctpAT_CQ|{bmnmF^lo#&Cz-M*I}8b--A z4fR^t^E6zaW+a&=wF#_o;9;{*ert8l@bjK79=ceIUW^Jo8$s~sEgllL9m16mTW}KD zV5R<@h78XdN6oUb8zPbvjJBpOF7U$kkHrmHlg? zS~!II*E_X&{Qh6zOy-|JcZv9~##HDIuuk-*q*{{C|ag2Urxz^ELxRj!Tf75s(}N5s;vu zk~4zjBtfF&xF9)48AS{rphyNKDk2~%q97nqR6G?E$v`rFy*n%3dcWuY?LF%a{k~mY zRa4#5)6-Kc2+BPwwSgC6lnLfokSsDK!pWAx~F4g=R$<^}M850zCVc z0=eZ6@gwp3Aq;ZS8=`Ex?g`bQ-VdG~I=l=LK%9h-#|+@ntaCgpgw%UOoA|SN)d#wZ zo`Dds9|CRZnm=Sog-2<_A!_u99Sbp`s6+y!jUM?YLIMFdd2k(We;S*&b=k7urZQ6a10xBx(E_5B$N@fr;K+9qt zK|JWu*-?lUjV8-Q?~zFX5|VTs5)#F2N$hPaPoM<>ye%_pPzS1L@ps4&eSeBhXqF)Y z#2_y@PCZ^ME=k7$mlN)K;K0|q2amw<8`Ir{#&(>^s&{fjBU(M%9 zmHmEZR-UuWTW%HAEz)jsMN?kv28l+|KhwK~83uFRMHgB< zhd0+=&3^y>^#^6V?Kq`e+Hw7&6EE5|;w{>-W&IC%2IVYk3;JNuQ)-p{*BC7BX5~m6 z@IRtb8FsBnFgB&>P4N_4mGIM?4z8`%*+`y-agMECBQ@BRggy30wn7iV33MDo zRSV%mevk9tWFe{c&WM76T52;YWA)X*2W#{Dp?0J zwXrqP9|{DYUvt=0pYb=q8eQYfpxd+0Kt+0fcF^Qxi7LwhCEj?BxQSf*0*@ylUP`PJ zA3T~0iyqcR?t}?ee z_V!4U`7S!)hY`=~rJoN}ODp^|^-j^h%&G2IdN|+sg0@XD-Id35*RNi7wSA~U(GkN! zohoi2wI?^H;n)pVjvtzPyd}yeX-6yv2Q*o$W}*c8ls0A5&DCv>s7snsB;?Q2tcqUS zCv*{O?av{dH8!^pvMV)j7b|Nt$*9iGElu~g(ym3;!+F=W;)+AM6@o~t&!}rvePWxw zsS=ds&cBm%IjC49cTxS(y!!Y#v6G@6`v1GDT=yB>u}KLgr~4LeaSe-Q%PQa5^v&vj&9R_TpEvQAF`Vu4KMI`9 z(ZkLrKPZSUHT%NHM2BKQb{$iYOaTpdEIz}`e}fkd-MS;RAv{)`KbPDK&kPyQhRjw- zr6q+44u=&M7b#C4oT;cx5TQ4EPCqq0cYo}U%41tS6*5pzWCY7Y+JG^Ji zwN1^mSLr1_t>{{@@{3ChZ#_R_RI>Zs-lTudD`MAwuHRb6KK&KBp5DeE!_gC?+`_T& zkGY1u=p|m{K|9=~5|W%mub>exnb=OlPxsQtzAyE-Zp`8SR1fj*wI_2|=2bcQ?|fCz zNSR~SkP%KZ2^=-iZ`bb6Ru~K{Ofp%G%uPDG`Q4lPLjH;^b=yi}n|`}d?;`V3UZB|I zi(qD~hErBoBeEQ)JuugPsP`swxA?pUwbRQf*Di)tM=BrJ{*F(D>36t6TQOJq=RaH+*r@U9;aw#t~6E!zs-_;l_ zntjS1OI(L&!x3?l+<+=Ka_S^pi|YIcyy&| z#&xgE0l6|&8Nttzo^mX0Svw>>M>DQtvY*U;@Vdqn>pFVFopn8IF6gX^!$GAiBYXZh1H--@VjJJP~w%yk+2Lm?owosH|LzS3J6+X6e~iK~gz zE)NdoSO_aW<9XQctKU{5+8TPrHh0LNl|MRRon=tOync3Yn%Xb+wz|-*U}cV-er@`M{e@Z0!>_kQ%1zW+YKvHdS)v;=f%#@ zIQBHKeaBMV+DXgTu&b|jbz&sD;+W(HZ(PF*T^`ITB{{bLg3gVK7sDI0cdQMED_C!2 z-ICbgKL2`ec~u?VE_>xBzm8(8r;2oOnBu`;DgT|64|u~zMv5&1`5!KREgiq-@iVb> z=9M7tiSpE_NJD4xjHTx*M zYj{~~)FyP%$)xk$PPVV1p`L*=g|78;Ji&#pEvdc~byW0TZ)U4-Z8?d3Np;|W6jwlw z?p#HBZlu}=ue#TRss~f6n-9uVby3aUt zw?0|2tCSz(^SayN$#S~KRQ45*e;a^P*(vF5JFTVkqx-Qnd2Fi!S+hDKtLa!8mX4U} z1y{$-s4(-4ul64!^d?#?+zWa$&eS#vgiB;f7|u(W%wMVI3BBF*_5NYje(A~U3U_04 zb{6)gNpfX>JN8Dt$L)fsEanP_$<-Z)-tWqv+MRz&+*g&>%%FsI^YnKow&z!OUKvWx zDYITMRD5nWfMA1Cs@)#&9e5~GVZnRZ=h;i88QW80K0(bThrJj=XI0;~Nf#bJYbECO zd}giG$23^H&R6s2nvvDG-2Q*=Ux6!kx4BguNtUP?Xyeo4Z!(-d{lhHV#IVNrvhs_l zxk7hx!vOi%vCkp1H9^C^NP>&N&DMk_IH<>wM~xPU-D=@IK*<4ugNidOmZ^hnxdtl zfcsdIxz3!S4_QrAN9En+Hmk=&GEhGujsieiU){36)rTDA2<4GUp^)JOfhZ!Q$nqeYNtn-MSXO`lZ(ge zDzCKKS*B|0^Zs%vW=yZ7Fq19mFR0DqPLK7ywX<$!t_ZtUa%QB&IO#&3OMcmz zU3-j>Rhfrl)2npd#R8*t;YWRqLW5hwdL>%#=iZU2xuB`cMmlNJVL4NAx{Ud%nuCa0 z@RpSu_jAPi)*P25z5nCSqHIQAc59m5__U&VW|>~+T->?kPx;Ta!$Z#tY0rIZY4u*b z`ry=QrJ0C6qaHVfP;Bk8nei`~*>|$Klt~55Kfl9XRc+!w$k^W6W&6)K92jvu%08lA z*Lh6SCUh~5>ItQ3)a&czNXpnM_&h7sA`TVpEhmDOTv%PqV zK6hoG_^gUU4>aT>#lW6w%(Xuvwp~SPGx)7LR)#G#kjCkjSgxj$=B-JvS?}`e{MSEY zeDvgarwYW>=k7jvgUua!G#q^JE$2cIQ~vh>&X{g~&#h9)6w|%Sd=a;lhtCU0o-Cyt zA8E_$uGF!*Q@!>wgtR8MF{_7*pN`o^?WmK&iyM!(k}|kn2hI!XaQfd?a@lLiewDvB zX8&Lrd09)!?Ua#T!O}VL1qV#=ea14~Zp9diS6u_nDyP>S6;ord>q-)r(t8Kx9&=b{ zrZz?AY7EI|w>e{~+wWOeF(_qo%pMU_KIXtvY>+9=@M)cT%i5utQYn)2=euJvZ)10F zJP7_Ilo*X!+f}?&rn0_POkbA#e89pT+BK>=qq|#n_^zScEytkJ+~L=sU231&@XBb! zw-S)0wZXHlz&vo6&ciA+OYhga}p9xW`N5Wy+eTJdp5^RxnEgG9rep`&Q;P>rV&~#Ty4bk7C~x{| znt#MpOplFB*Gx&kO-5-w%s%;Sk9xz(*jgJYaxRvejEu z@iJy(7uk`zy)yR<^t-W7i)aopU3N&3nRgVSVs6xKXVLTO_h<>^j-sZ?lj+La&y`&9 zuyUm7l>U^A3#F}H;^C4nw*`(;cO}=|>!}FrPN;Rm7+2ZNrAcXPf68=Pit$$t3Z@!M zFBq{qE!xYLAI*CzAX?6?^3Z+3<}{6fR3@RVO|48wtJq^z+N;k}zpiP|W39~57QJQd zhLNS7JC0xM_XjoRUz~<7EFYox)bXn;Gt5lLOy@@W5w)oVN^7aSpaLTi127m(UR+Ckr0)#L2wan$&E#EslexR6h)FA--(k^T+U$K~OX`TCJ-Fg9SmpoS&+uj_h z@ub&L3BnXrybL$HGs-iXQ>33h4x}zg@w43hw*5h#+Vg~z=;m69zF13+)_vHE50oC? zU2=bsrqy;YekqUaM}TCq1R2M*6sFdIc6F+c@q)ouCzg0;tnW33CX`9=jT||2=hu?H zD-AZMT`k|I!+i7N=5wE;_LVKO)$+Bab{C`Ko@1V7uO0EE#2%RJ z8k7-Mbwyb>GelN+^XMJsp_T+u*|AxU>IdF5*1MkNsJgw%uo2bMw4pw0as*389A(m4 zq!y3CA_fy3GIAN>`QNupgc~O7%>Y&_o?kRnYi!Ox%0AKV(q(B`g%#dehu9tg&i@)AsNN* zIj@697*jWp6qU%dQ2T^BwGGInSz=^Bj3qTkiSFe|G!}-7Y#i z>dp2*(tHj%Dt26mkMes)5-S@IVDCn*UUE8S|Zxej(v3T z0o%1Rb?W!;-sgO%UsUD3W0?}xDGE7yy|${gRT)a3Dt$St9$X%K$?w;oAJ+3k^n&Pm z{iQ{2KQW`Z6t}7;yj%~C&RM#A;4tj{5uvr8?jiF_FO0m93#*t&X@85*`N9=-$Gkuq zS^WrVS%ayJq_iU!#ym{jsWuayfc(nfm^Ru3_LeC0Tlpm!<9O~_g$UPxEA6t5A z1=3(OReZ8je|-E>T~0Btxe@gOHqbG?aeptlebEYrMfKqKmhqIN+@OQKV(mI+K0C)R zw~M>l_j+#FYdzqx|K!Vcst%)Y=-JKK!YUtGO-mANua^@LZ z#ZB>~L^eeus*XK+^OxQ{dop(Bg!Ig%X?Ig8rOc)qPb8^t=iE5M%uSN# zV(1p=ZqxFvThuD<0QnJJ($>+__fDr=vT%}4GkWd9JU#wy!nnCUYiHrdit}nc>MgI% zyI5GIL~$D3IsSQ0qwk{D9waOIT3PggCuDNPiuDqYP>Ji-m%Tm~-_n@R3C z6w7(hy(ptE<4I-C%=hbM^6VpmOZ^=dV$z{q#@ z^v9GVgd+`TlC7doe~ zA>k#IjRoCw)?#38LTpTYOdD`mc zh6I;{Kuoquj8|nSW=-x*wOvr$_@Hz&1Wabtgz&k{LWk7?Va|OX~n_!3w=I$Kucv`r6#SG z2S10%`;bM7ztAWrTOmIXV)FUf6WOe>oco`dsVB4CxMK3a@nK5pylKg;VKH)E!rNrd8AJ)#*Dbc)rsnAkTUgpnq&^dbu31 zOHJ+TzwSt>+6P_dxTYd>?fj*=NSZlv_5H*B+67?+&l1Mkbxe9y{6}e5xMem^}UKbV_GDZ2_Jh~UFC09I~vax67N17MyH>aLK`LqN{s*PJR zokwqfSbR_roa8*+=|P@}hj@VnQVzqT{ilH*g? zw!J1Nm8QTy28mo@8LW*%tN_As4{9e;@eDpsUdMjLw?Eq+R$$=pVwQ$><_<@-9*?S@&kDYSuAAz$}c8q3zGN4tr z@co=Q`t=0Mm_=j@iA~4M9NCGozffmX$x~B z{cFDimAd-OjEr0|k0gH?rg#`p~2@AH%!NHF0KX9aa2x(%2 zI1q6=nC?GR0V3*4lv?;>f#(0zf|ID008(ZLi=)1>gSnw2xWB>EB6f%Zp|OYYi5L)0 zdw>*eBh3G&d`poL{(+ZU>kVul$GuDE)?(7V^V1^u(3;ag|hI1k(o|m)SY~4`+f`6A2%j z-$U_KP8Kv}I^sx+wa!F|0@!XA^uLVhyadcQO@mB4<29n0U}sw-~Lo29H2s)onRq+SnNAy zP|yMxHDGEfy3N6f5~jfiW+9Ud4Z`LOv*4ALbO!F=qW^<<|3*R8WC_MNR)L2=z!2Riuk$0EO_;*5<5Om13w)Ew{OJiQHlMb-*!dw+zi%vhBP;(@o$| zSt4g%K~~*h4ZKN2>8goH%*wxIQsYusGvj3*iYrVj0P-fm2_lXGBjlnxtb~^dl|M{y z1a5Kx!9q+D*1^dXEY#4UM0h<2{+99pZn~q3Lj($+>rx;AzmYf`677TPk>$gH^Z*3k z#Gj0ie>ZVD7^PPSW01{M0-aHhI`9$D<~s;oX(B7zuqb`xBnI(1Mu?oaW1!uUlfMxW zB;zmyFzpu*wuea2c?9x=@xQTv=zD_d-l@N6AAMsD3hst-~TwwjEI1L z@J-_~NFd;65_XUZ_HEX37`vE-r!*84gIqXLe?SMy? zaEM?b<03o4;7{=NZ5%SYf=7^F;19eiy#Ao{<0`K7Kw;hrB|a4JMkVj+8-51dObzBf zRz$92_>89`D~u2g^1~nAf#>&U`V9O4d}ENA)rpAjwEi!Cd;nnva?|4MaVNlc2J#(< z_|xBr`E&?pAi+GDK%j2RuYcjE0|~=xBMzb`M}i{2h?2J|g>;cYI}o`bg87<30G^^I zf*FvuAcEi_9Gpo12Ub2oxH_1g0Ei*x57K!8X2V;&b+5#L6Z9<=5Reu`77VcA=?GIW ztc9ok*_Z^bW<*p|_TQ3)5U^bdgYYL3x~^x%bw3Iq{tfsN*LlV9r%oFCzw2D6zD{Qj zoVr2}E=xr19Oe35M-XWaAq+FyJD|WYqe4Vy;zKRK?|Rx1O6bngV2c!KkifqnuptWn zi!(?K4$>4RhBy%BFhWzU=SK?2fo3L@BqWE3nlcpqS0%80iyg@hBb>C-Fd(#b*T3)& zVPKMiyPU=57f=oYd3DqzB+5kc2Bo(7!g%UA=Nkt1z&RQKSE>C()VFdtsuXf7oFJ8G zdlnIuX*Ws*yS31v=x_^Jks^@l4-C>JqJCAzQ7!OobEl|Oe*h=Y6?pgn5i4^qj-`Q6 zL=na+@92O$Z$P`n__x4GHDo>(RzQ4IAvUBmlHi=0NZ_1HS}3#?3FChl2;qqWrLYdJ zR11lWg8A^>yaZQjbqFnujfNQ!ifBT73q%8`Tz?zF|DX_3jVmoP+Ad{8*kWK_yh(~Q zwW%Gza4}%G9g#^@rvKtwn?MXmLkvOL?ie6%%3>R*MK}`)T~93*K;kwy$OM_P2DQ}U z2wgyWbf7N}G?hRBE=fd9(c0no$MDAK#{mHtM^r#-96`;420PM>aRCPc#Du8sH)kBx z0MWn_Vly%BXfrMF{2aJS5C=%BJ9^ejv4jBmvk#7hM3qRYpf^gzZHhw*BMGCDWIWJ~ z<@h$lfY3(~T#}E2Y=o{s0>#ihI~pQ^hB(%vx7Yd9di(N#C5S1DAh2TFso*}?qakB%*TR0PCN|l zM6^?2aip#ajL#fkK*RT)mm#6)Zvfo_(B+A|7F>-={&pFn`|ni0PWN#zFlGS+sT@(Y zD_7BKa@7#+f2th|+}!8}HgJQxIO2JUcO9;pD6&!mJUNs?@Z@X?@J7HjTtspsADST^ zL>5e$@s83+1yFM2#o`$bDRa z91@jIn84@ZN}oPJOXol-UM=5~%MXWu@)E#9N< zH~9w)2DLKgzwcgjes1%5@S^FqcY6M9Vj(3Wm(9fhzdKAB0_DJ*6921xU-W6#UpLIiTqX#E z+r0R85wMCvi|}T_g7~=6&H~V?Fb?8FVzOXyy!*zi9hDuxY2O0fj(AKe7u}|^A?sO$ zIHS)7fop{bqF*#!9s03j8VL@V9MCfqkj4$#MogYgaqD{#c!Izkqu3gi%G z%S3CeM2=iiMX6x5l^My)A@rdOIiSI5H58i3fyM9!T@Vt|rU3@|gRm!V&_x?ZMHc}+ zP@cYx1q?mVtBG%#Iu77i5=eC}xORi3BBVPPG?R1)nazc{9Kq5p(Yhj-#}Gca^{p*m zn8ZleQd?Tj_@JzxOPGhh?4J`vLh^TIj^B0hE0_e13(jhp#T5? delta 22669 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 diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java index 6ed8cc69e0..d9eef52164 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java @@ -43,11 +43,14 @@ import mage.client.util.Event; import mage.client.util.Listener; import mage.components.CardInfoPane; import mage.game.GameException; +import mage.view.CardView; import mage.view.CardsView; import javax.swing.*; import javax.swing.filechooser.FileFilter; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import java.lang.reflect.Constructor; @@ -98,7 +101,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { cardSelector.getCardsList().removeCard(card.getId()); } if (cardInfoPane instanceof CardInfoPane) { - ((CardInfoPane)cardInfoPane).setCard(card); + ((CardInfoPane)cardInfoPane).setCard(new CardView(card)); } break; } @@ -178,7 +181,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { cardInfoPane = Plugins.getInstance().getCardInfoPane(); if (cardInfoPane != null && System.getProperty("testCardInfo") != null) { - cardInfoPane.setPreferredSize(new Dimension(170,230)); + cardInfoPane.setPreferredSize(new Dimension(170,150)); cardInfoPane.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); isShowCardInfo = true; } else { @@ -456,4 +459,6 @@ class ImportFilter extends FileFilter { public String getDescription() { return "*.dec | *.mwDeck | *.txt"; } + + } \ No newline at end of file diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java index b4eb379e81..00cc13b3b7 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java @@ -1,16 +1,13 @@ package mage.client.plugins.adapters; -import java.awt.Color; -import java.awt.Image; -import java.awt.Point; +import java.awt.*; +import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.util.List; import java.util.UUID; -import javax.swing.Popup; -import javax.swing.PopupFactory; -import javax.swing.SwingUtilities; +import javax.swing.*; import mage.cards.MageCard; import mage.cards.MagePermanent; @@ -25,6 +22,8 @@ import mage.client.util.DefaultActionCallback; import mage.client.util.ImageHelper; import mage.client.util.gui.ArrowBuilder; import mage.client.util.gui.GuiDisplayUtil; +import mage.components.CardInfoPane; +import mage.utils.ThreadUtils; import mage.view.CardView; import org.jdesktop.swingx.JXPanel; @@ -32,12 +31,14 @@ import org.jdesktop.swingx.JXPanel; public class MageActionCallback implements ActionCallback { private Popup popup; + private JPopupMenu jPopupMenu; private BigCard bigCard; protected static DefaultActionCallback defaultCallback = DefaultActionCallback.getInstance(); protected static Session session = MageFrame.getSession(); private CardView popupCard; private Thread t; private int state = 0; + private JComponent cardInfoPane; public MageActionCallback() { } @@ -50,6 +51,9 @@ public class MageActionCallback implements ActionCallback { if (session == null) { session = MageFrame.getSession(); } + if (cardInfoPane == null) { + cardInfoPane = Plugins.getInstance().getCardInfoPane(); + } } @Override @@ -125,15 +129,44 @@ public class MageActionCallback implements ActionCallback { } catch (InterruptedException ie) { ie.printStackTrace(); }*/ - - PopupFactory factory = PopupFactory.getSharedInstance(); - popup = factory.getPopup(data.component, data.popupText, (int) data.locationOnScreen.getX() + data.popupOffsetX, (int) data.locationOnScreen.getY() + data.popupOffsetY + 40); - popup.show(); - // hack to get popup to resize to fit text - popup.hide(); - popup = factory.getPopup(data.component, data.popupText, (int) data.locationOnScreen.getX() + data.popupOffsetX, (int) data.locationOnScreen.getY() + data.popupOffsetY + 40); - popup.show(); - } + + if (cardInfoPane == null) { + PopupFactory factory = PopupFactory.getSharedInstance(); + popup = factory.getPopup(data.component, data.popupText, (int) data.locationOnScreen.getX() + data.popupOffsetX, (int) data.locationOnScreen.getY() + data.popupOffsetY + 40); + popup.show(); + // hack to get popup to resize to fit text + popup.hide(); + popup = factory.getPopup(data.component, data.popupText, (int) data.locationOnScreen.getX() + data.popupOffsetX, (int) data.locationOnScreen.getY() + data.popupOffsetY + 40); + popup.show(); + } else { + + ThreadUtils.threadPool2.submit(new Runnable() { + @Override + public void run() { + ThreadUtils.threadPool2.submit(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(900); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } + if (!popupCard.equals(data.card)) { + return; + } + PopupFactory factory = PopupFactory.getSharedInstance(); + ((CardInfoPane)cardInfoPane).setCard(data.card); + cardInfoPane.setSize(161, 221); + cardInfoPane.setPreferredSize(new Dimension(161, 221)); + popup = factory.getPopup(data.component, cardInfoPane, (int) data.locationOnScreen.getX() + data.popupOffsetX, (int) data.locationOnScreen.getY() + data.popupOffsetY + 40); + popup.show(); + } + }); + } + }); + + } + } @Override public void mouseMoved(MouseEvent e, TransferData data) { @@ -172,6 +205,9 @@ public class MageActionCallback implements ActionCallback { if (popup != null) { popup.hide(); } + if (jPopupMenu != null) { + jPopupMenu.setVisible(false); + } ArrowBuilder.removeAllArrows(); } diff --git a/Mage.Common/src/mage/components/CardInfoPane.java b/Mage.Common/src/mage/components/CardInfoPane.java index 19b1047ca2..ca3d269c28 100644 --- a/Mage.Common/src/mage/components/CardInfoPane.java +++ b/Mage.Common/src/mage/components/CardInfoPane.java @@ -1,6 +1,7 @@ package mage.components; import mage.cards.Card; +import mage.view.CardView; /** * Card info pane for displaying card rules. @@ -9,6 +10,6 @@ import mage.cards.Card; * @author nantuko */ public interface CardInfoPane { - public void setCard (final Card card); - public boolean isCurrentCard (Card card); + public void setCard (final CardView card); + public boolean isCurrentCard (CardView card); } diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ThreadUtils.java b/Mage.Common/src/mage/utils/ThreadUtils.java similarity index 67% rename from Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ThreadUtils.java rename to Mage.Common/src/mage/utils/ThreadUtils.java index 4df8c5a0d2..0f321f0d8a 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ThreadUtils.java +++ b/Mage.Common/src/mage/utils/ThreadUtils.java @@ -1,4 +1,4 @@ -package org.mage.card.arcane; +package mage.utils; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; @@ -13,6 +13,7 @@ import java.util.concurrent.TimeUnit; public class ThreadUtils { static public ThreadPoolExecutor threadPool; + static public ThreadPoolExecutor threadPool2; static private int threadCount; static { threadPool = new ThreadPoolExecutor(4, 4, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), new ThreadFactory() { @@ -24,6 +25,15 @@ public class ThreadUtils { } }); threadPool.prestartAllCoreThreads(); + threadPool2 = new ThreadPoolExecutor(4, 4, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), new ThreadFactory() { + public Thread newThread (Runnable runnable) { + threadCount++; + Thread thread = new Thread(runnable, "TP2" + threadCount); + thread.setDaemon(true); + return thread; + } + }); + threadPool2.prestartAllCoreThreads(); } static public void sleep (int millis) { diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java index 932e57bd15..9ca2ca45bf 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java @@ -84,10 +84,10 @@ public class ManaSymbols { static public synchronized String replaceSymbolsWithHTML (String value, boolean small) { if (small) - return replaceSymbolsPattern.matcher(value).replaceAll(""); + return replaceSymbolsPattern.matcher(value).replaceAll("$1$2"); else { - value = value.replace("{slash}", ""); - return replaceSymbolsPattern.matcher(value).replaceAll(""); + value = value.replace("{slash}", "slash"); + return replaceSymbolsPattern.matcher(value).replaceAll("$1$2"); } } } diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java index e13fd59aa9..747c84d871 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java @@ -1,11 +1,11 @@ package org.mage.plugins.card.info; import mage.Constants; -import mage.cards.Card; import mage.components.CardInfoPane; import mage.utils.CardUtil; +import mage.utils.ThreadUtils; +import mage.view.CardView; import org.mage.card.arcane.ManaSymbols; -import org.mage.card.arcane.ThreadUtils; import org.mage.card.arcane.UI; import javax.swing.*; @@ -20,15 +20,16 @@ import java.util.List; */ public class CardInfoPaneImpl extends JEditorPane implements CardInfoPane { - private Card currentCard; + private CardView currentCard; public CardInfoPaneImpl() { UI.setHTMLEditorKit(this); setEditable(false); setBackground(Color.white); + setSize(170, Integer.MAX_VALUE); } - public void setCard (final Card card) { + public void setCard (final CardView card) { if (card == null) return; if (isCurrentCard(card)) return; currentCard = card; @@ -37,7 +38,11 @@ public class CardInfoPaneImpl extends JEditorPane implements CardInfoPane { public void run () { if (!card.equals(currentCard)) return; - String castingCost = UI.getDisplayManaCost(card.getManaCost().getText()); + String manaCost = ""; + for (String m : card.getManaCost()) { + manaCost += m; + } + String castingCost = UI.getDisplayManaCost(manaCost); castingCost = ManaSymbols.replaceSymbolsWithHTML(castingCost, false); int symbolCount = 0; @@ -111,13 +116,13 @@ public class CardInfoPaneImpl extends JEditorPane implements CardInfoPane { } String pt = ""; - if (card.getCardType().contains(Constants.CardType.CREATURE)) { + if (CardUtil.isCreature(card)) { pt = card.getPower() + "/" + card.getToughness(); - } else if (card.getCardType().contains(Constants.CardType.PLANESWALKER)) { + } else if (CardUtil.isPlaneswalker(card)) { pt = card.getLoyalty().toString(); } if (pt.length() > 0) { - buffer.append("
"); + buffer.append("
"); buffer.append(""); buffer.append(""); buffer.append(pt); @@ -131,7 +136,7 @@ public class CardInfoPaneImpl extends JEditorPane implements CardInfoPane { public void run () { if (!card.equals(currentCard)) return; setText(buffer.toString()); - System.out.println(buffer.toString()); + //System.out.println(buffer.toString()); setCaretPosition(0); } }); @@ -139,24 +144,24 @@ public class CardInfoPaneImpl extends JEditorPane implements CardInfoPane { }); } - private String getTypes(Card card) { + private String getTypes(CardView card) { String types = ""; - for (String superType : card.getSupertype()) { + for (String superType : card.getSuperTypes()) { types += superType + " "; } - for (Constants.CardType cardType : card.getCardType()) { + for (Constants.CardType cardType : card.getCardTypes()) { types += cardType.toString() + " "; } - if (card.getSubtype().size() > 0) { + if (card.getSubTypes().size() > 0) { types += "- "; } - for (String subType : card.getSubtype()) { + for (String subType : card.getSubTypes()) { types += subType + " "; } return types.trim(); } - public boolean isCurrentCard (Card card) { + public boolean isCurrentCard (CardView card) { return currentCard != null && card.equals(currentCard); } }