$AE$AE&S$AEN G L8瑲!G[ $AE $AE$AE$AEA$AE$AE$AE'0$AE$AE$AE"4AC$AE$AE 'AhB$AEhB ' 1A$AE1A    ' ?$AE?  'A?E$AE$AE 'A9?E$AE$AE 'tn+A$AEn+A        '-n+A$AEn+A           'n+A$AEn+A! " # $ 'Jn+A$AEn+A% 'n+A$AEn+A& 'n+A$AEn+A' 'n+A$AEn+A( 'n+A$AEn+A ) * + , - 'n+A$AEn+A . / 0 1 2 'Sn+A$AEn+A 3 4 5 6 7 8 'Xn+A$AEn+A 9 : ; < = 'n+A$AEn+A > ? @ A B '79?E$AE9?EC D E F G H I J K L M N O 'n+A$AEn+AR S T 'n+A$AEn+AU V W X 'n+A$AEn+A Y Z [ \ ] 'n+A$AEn+A^ _ ` a '!n+A$AEn+Ab c d e f g h i j 'V n+A$AEn+Ak l m '5n+A$AEn+An o p q r s t u v w x y z 'J=n+A$AEn+A"} ~  ' n+A$AEn+A '+ n+A$AEn+A 'KeC$AEeC 'jC$AEjC '?n+A$AEn+A 'n+A$AEn+A '?B$AEB 'yn+A$AEn+A ' n+A$AEn+A 'Kn+A$AEn+A 'Xn+A$AEn+A 'gn+A$AEn+A 'n+A$AEn+A 'n+A$AEn+A 'n+A$AEn+A 'n+A$AEn+A 'Xn+A$AEn+A ' n+A$AEn+A 'Sn+A$AEn+A 'n+A$AEn+A '5n+A$AEn+A 'n+A$AEn+A ' n+A$AEn+A ' n+A$AEn+A '4n+A$AEn+A 'n+A$AEn+A 'n+A$AEn+A ' n+A$AEn+A  '0n+A$AEn+A        ' o+A$AEo+A   'o+A$AEo+A        'L o+A$AEo+A   'Fo+A$AEo+A  ! " # $ '9?E$AE9?E% & ' '39?E$AE9?E ( ) * + , - 'S9?E$AE9?E. / ' 9?E$AE9?E0 1 2 'tB$AEB3 4 5 6 7 8 9 : '-B$AEB; < = > ? @ A B C D E F 'B$AEBG H I J 'JB$AEBK 'B$AEBL 'B$AEBM 'B$AEBN 'qB$AEqB O P Q R S 'SB$AEB T U V W X Y 'XB$AEB Z [ \ ] ^ 'B$AEB _ ` a b c 'B$AEB d e f g h 'SB$AEB i j k l m n 'XB$AEB o p q r s 'B$AEB t u v w x '7?E$AE?Ey z { | } ~  'B$AEB 'B$AEB 'B$AEB 'B$AEB 'B$AEB 'V B$AEB '5B$AEB 'J=B$AEB" ' B$AEB 'KSC$AESC 'CC$AECC '?B$AEB 'B$AEB '?B$AEB 'yB$AEB ' B$AEB 'XB$AEB 'o+A$AEo+A 'B$AEB 'gB$AEB 'B$AEB 'B$AEB 'KB$AEB 'XB$AEB 'B$AEB   'XB$AEB ' B$AEB  '!B$AEB'SB$AEB'B$AEB'5B$AEB !'B$AEB"' B$AEB #$%&'' B$AEB()* 'B$AEB+,-.!'B$AEB/01"' B$AEB234#'0B$AEB56789:;<=>?@A$' B$AEBCDE%'B$AEBFGHIJKLM&'L B$AEBNOP''FB$AEBQRSTUVW('?E$AE?EXYZ)'3?E$AE?E [\]^_`*'S?E$AE?Eab+' ?E$AE?Ecde,'X k8C$AEk8Cfgh-'ِ=B$AE=BLijklmnopqrstu.'C&E$AE&En/'{nD$AEnDP0' . .. fermifoupixmapsfermiinstallclass.pypackage_gui.py packages.pypartedUtils.py ...  . .. anaconda post.sh post.sh.old . ..VERSION=lts30 SECUREFTPSERVER=linux1.fnal.gov # CHROOT="/mnt/sysimage/" RUN="chroot $CHROOT" INSTALLIMAGE="/mnt/source/" PATH=$PATH:/$CHROOT/bin:/$CHROOT/usr/bin:/$CHROOT/sbin:/$CHROOT/usr/sbin if [ -s $CHROOT/tmp/upgrade.log ] ; then METHOD=UPGRADE else METHOD=INSTALL fi mount | grep -q lts30test if [ $? -eq 0 ] ; then RELEASE=lts30test else mount | grep -q lts30rolling if [ $? -eq 0 ] ; then RELEASE=lts30rolling else RELEASE=$VERSION fi fi echo $RELEASE > /dev/tty5 mount | grep -q nfs if [ $? -ne 0 ] ; then MEDIA=CDROM else MEDIA=NFS fi export CHROOT export RUN export INSTALLIMAGE export PATH export METHOD echo "Installing Post Install RPMS" >/dev/tty5 echo "Log file in /tmp/postinstall.log" >/dev/tty5 # # Determine which workgroup we are if [ -s $CHROOT/etc/workgroup ]; then WORKGROUP=`cat $CHROOT/etc/workgroup` else WORKGROUP=`cat $CHROOT/etc/workgroup` echo $WORKGROUP >/dev/tty5 echo "CUSTOM" > $CHROOT/etc/workgroup WORKGROUP=`cat $CHROOT/etc/workgroup` fi echo "Fermi Linux $RELEASE $METHOD for $WORKGROUP via $MEDIA on `$RUN /bin/date`" > /tmp/banner grep -q "NOTICE TO USERS" $CHROOT/etc/motd if [ $? -ne 0 ] ; then cat $CHROOT/etc/motd $INSTALLIMAGE/Fermi/common/configfiles/fermibanner > /tmp/fermibanner cp /tmp/fermibanner $CHROOT/etc/motd fi if [ -s $CHROOT/etc/motd.rpmsave ] ; then grep "Fermi " $CHROOT/etc/motd.rpmsave > /tmp/fermilinux cat /tmp/banner /tmp/fermilinux | uniq > /tmp/bannerlinux cp /tmp/bannerlinux /tmp/banner fi cat /tmp/banner $CHROOT/etc/motd > /tmp/tmpbanner cp /tmp/banner $CHROOT/etc/FermiLinuxHistory cp /tmp/tmpbanner $CHROOT/etc/motd # need to rerun authconfig to fix pam system-auth $RUN /usr/sbin/authconfig --kickstart cd $CHROOT if [ -x $CHROOT/etc/$WORKGROUP/scripts/before.rpms.sh ] ; then ($RUN /etc/$WORKGROUP/scripts/before.rpms.sh > $CHROOT/etc/$WORKGROUP/before.rpms.log 2>&1 ) fi cd $CHROOT ls etc/$WORKGROUP/RPMS/*.rpm > $CHROOT/tmp/rpmfiles 2> /dev/null if [ -s $CHROOT/tmp/rpmfiles ] ; then cd $CHROOT/etc/$WORKGROUP/RPMS ( $RUN rpm -U --force --nodeps /etc/$WORKGROUP/RPMS/\*.rpm > \ $CHROOT/etc/$WORKGROUP/workgroup.rpm.log 2>&1 ) fi cd $CHROOT if [ -d $CHROOT/etc/$WORKGROUP/RPMSI ] ; then ls $CHROOT/etc/$WORKGROUP/RPMSI/*.rpm > $CHROOT/tmp/rpmfiles.i 2> /dev/null if [ -s $CHROOT/tmp/rpmfiles.i ] ; then cd $CHROOT/etc/$WORKGROUP/RPMSI ( $RUN rpm -i --force --nodeps /etc/$WORKGROUP/RPMSI/\*.rpm >> \ $CHROOT/etc/$WORKGROUP/workgroup.rpm.log 2>&1 ) fi fi $RUN touch /etc/$WORKGROUP/after.rpms.log if [ -x $CHROOT/etc/$WORKGROUP/scripts/after.rpms.nochroot.sh ] ; then $CHROOT/etc/$WORKGROUP/scripts/after.rpms.nochroot.sh >> $CHROOT/etc/$WORKGROUP/after.rpms.log 2>&1 else echo "No after.rpms.nochroot.sh found" >> $CHROOT/tmp/after.rpms.log 2>&1 fi if [ -x $CHROOT/etc/$WORKGROUP/scripts/after.rpms.sh ] ; then ($RUN /etc/$WORKGROUP/scripts/after.rpms.sh >> $CHROOT/etc/$WORKGROUP/after.rpms.log 2>&1 ) else echo "No after.rpms.sh found" >> $CHROOT/tmp/after.rpms.log 2>&1 fi cd $CHROOT if [ -x $CHROOT/etc/$WORKGROUP/scripts/final.after.rpms.sh ] ; then ($RUN /etc/$WORKGROUP/scripts/final.after.rpms.sh > $CHROOT/etc/$WORKGROUP/final.after.rpms.log 2>&1 ) fi cp /tmp/anaconda.log $CHROOT/root/anaconda.log cd VERSION=lts30 SECUREFTPSERVER=linux1.fnal.gov # CHROOT="/mnt/sysimage/" RUN="$CHROOT/usr/sbin/chroot /mnt/sysimage/" INSTALLIMAGE="/mnt/source/" PATH=$PATH:/$CHROOT/bin:/$CHROOT/usr/bin:/$CHROOT/sbin:/$CHROOT/usr/sbin if [ -s $CHROOT/tmp/upgrade.log ] ; then METHOD=UPGRADE else METHOD=INSTALL fi mount | grep -q lts30test if [ $? -eq 0 ] ; then RELEASE=lts30test else mount | grep -q lts30rolling if [ $? -eq 0 ] ; then RELEASE=lts30rolling else RELEASE=$VERSION fi fi echo $RELEASE > /dev/tty5 mount | grep -q nfs if [ $? -ne 0 ] ; then MEDIA=CDROM else MEDIA=NFS fi export CHROOT export RUN export INSTALLIMAGE export PATH export METHOD echo "Installing Post Install RPMS" >/dev/tty5 echo "Log file in /tmp/postinstall.log" >/dev/tty5 # # Determine which workgroup we are if [ -s $CHROOT/etc/workgroup ]; then WORKGROUP=`cat $CHROOT/etc/workgroup` else WORKGROUP=`cat $CHROOT/etc/workgroup` echo $WORKGROUP >/dev/tty5 echo "CUSTOM" > $CHROOT/etc/workgroup WORKGROUP=`cat $CHROOT/etc/workgroup` fi echo "Fermi Linux $RELEASE $METHOD for $WORKGROUP via $MEDIA on `$RUN /bin/date`" > /tmp/banner grep -q "NOTICE TO USERS" $CHROOT/etc/motd if [ $? -ne 0 ] ; then cat $CHROOT/etc/motd $INSTALLIMAGE/Fermi/common/configfiles/fermibanner > /tmp/fermibanner cp /tmp/fermibanner $CHROOT/etc/motd fi if [ -s $CHROOT/etc/motd.rpmsave ] ; then grep "Fermi " $CHROOT/etc/motd.rpmsave > /tmp/fermilinux cat /tmp/banner /tmp/fermilinux | uniq > /tmp/bannerlinux cp /tmp/bannerlinux /tmp/banner fi cat /tmp/banner $CHROOT/etc/motd > /tmp/tmpbanner cp /tmp/banner $CHROOT/etc/FermiLinuxHistory $CHROOT/bin/cp /tmp/tmpbanner $CHROOT/etc/motd # need to rerun authconfig to fix pam system-auth $RUN /usr/sbin/authconfig --kickstart cd $CHROOT if [ -x $CHROOT/etc/$WORKGROUP/scripts/before.rpms.sh ] ; then ($RUN /etc/$WORKGROUP/scripts/before.rpms.sh > $CHROOT/etc/$WORKGROUP/before.rpms.log 2>&1 ) fi cd $CHROOT ls etc/$WORKGROUP/RPMS/*.rpm > $CHROOT/tmp/rpmfiles 2> /dev/null if [ -s $CHROOT/tmp/rpmfiles ] ; then cd $CHROOT/etc/$WORKGROUP/RPMS /$CHROOT/bin/rpm --root $CHROOT -U --force --nodeps *.rpm >& $CHROOT/etc/$WORKGROUP/workgroup.rpm.log fi cd $CHROOT if [ -d $CHROOT/etc/$WORKGROUP/RPMSI ] ; then ls $CHROOT/etc/$WORKGROUP/RPMSI/*.rpm > $CHROOT/tmp/rpmfiles.i 2> /dev/null if [ -s $CHROOT/tmp/rpmfiles.i ] ; then cd $CHROOT/etc/$WORKGROUP/RPMSI /$CHROOT/bin/rpm --root $CHROOT -i --force --nodeps *.rpm >> $CHROOT/etc/$WORKGROUP/workgroup.rpm.log 2>&1 fi fi $CHROOT/bin/touch $CHROOT/etc/$WORKGROUP/after.rpms.log if [ -x $CHROOT/etc/$WORKGROUP/scripts/after.rpms.nochroot.sh ] ; then $CHROOT/etc/$WORKGROUP/scripts/after.rpms.nochroot.sh >> $CHROOT/etc/$WORKGROUP/after.rpms.log 2>&1 else echo "No after.rpms.nochroot.sh found" >> $CHROOT/tmp/after.rpms.log 2>&1 fi if [ -x $CHROOT/etc/$WORKGROUP/scripts/after.rpms.sh ] ; then ($RUN /etc/$WORKGROUP/scripts/after.rpms.sh >> $CHROOT/etc/$WORKGROUP/after.rpms.log 2>&1 ) else echo "No after.rpms.sh found" >> $CHROOT/tmp/after.rpms.log 2>&1 fi cd $CHROOT if [ -x $CHROOT/etc/$WORKGROUP/scripts/final.after.rpms.sh ] ; then ($RUN /etc/$WORKGROUP/scripts/final.after.rpms.sh > $CHROOT/etc/$WORKGROUP/final.after.rpms.log 2>&1 ) fi $CHROOT/bin/cp /tmp/anaconda.log $CHROOT/root/anaconda.log cd  . ..compsK astro.pngL boone.pngMboonedataserver.pngNbtev.pngObtevsimulation.pngPbtevtrigger.pngQbtevworker.pngRcdf-desktop.pngS cdf-farm.pngTcdf-server.pngUcdf.pngVcdfcafworker.pngW cdflevel3.pngXcdfoffsite.pngY cdfonline.pngZdcacheserver.png[ fnalu-interactive.png\cms-desktop.png] cms-farm.png^cms-server.png_cms.png`consoleserver.pngacpd.pngb cpdserver.pngccss.pngd d0online.pngeeag.pngffarms-console.pngg farms.pnghfarmsconsole.pngifermi-kerberos.pngj fermigenericdesktop.pngk(fermigenericdesktopoffsite.pnglfermitux-farm.pngmfermitux-farms.pngnfermiverygeneric.pngofnalubatch.pngp focus.pngq clued0-workstation.pngr$genericdesktopoffsite.pngxoaa.png . .. astro.png boone.pngboonedataserver.pngbtev.pngbtevsimulation.pngbtevtrigger.pngbtevworker.pngcdf.pngcdfcafworker.png cdflevel3.pngcdfoffsite.png cdfonline.pngdcacheserver.pngcms.pngcmsdesktop.png  cmsfarm.png! cmsserver.png" minos.png#consoleserver.png$cpd.png% cpdserver.png&css.png' custom.png( d0online.png)eag.png*farms-console.png+ farms.png,farmsconsole.png-fermi-kerberos.png. fermigenericdesktop.png/ clued0-workstation.png0(fermigenericdesktopoffsite.png1fermiverygeneric.png2fnalubatch.png3fnaluinteractive.png4 focus.png5genericfarm.png6 kerberos.png7local-printer.png8mysql-tools.png9oaa.png:openafs-client.png?rip.pngPNG  IHDR((bKGD pHYs  ~tIME ]IDATx|yy篖^"i{zZBam`Y|dMbc<vb|cs 8^b6I` ғ~k?n09S:t_]p]An%)G! O'o& S߁8{Y|_߇67+ŖEC x+tן5owoe;MZ<>Ojԏݫ^C 7Ng xg8Y@_N{"`f. 8x>OϞ k4QY|*-SuhãEb$fs97)𽸙Y'|>9g&rh/4 8hh<{Gci@CAGy69D5iEQ&掜x!O(6LzV|o"mѰd39h]th?nIFc Ie MB4I)`DMM#Ε(fDD-@Cᬛ.~rEY sQd95m5H@#jeэIqiP_"pt& rtGI+@cD}VBH?]l$B?@:t)B܄FDS!D=ёOO#ڕf tSis_4w1C]5k 0m,n|ZCM.b4/riIxfD' >ӔT>kQųR'W4 } ΋~83U@`t $ȐC9L"D?/EM ,^uΑT;x"!Cd&BaD3HvRZu 6ЊhFHarD f=V܎ߖUUyDaRvX:/U>⼎1i; GS$VhܟVj_}daz9MbD0ꯀ{tW5nJ=\۪k /-^܎WK# L\7n yjy %`96Tf\{m6¶RQfk d0I (*ɐÃ-w_hIka0cRLaM^<RZYDk~╈tգU'K,[lrk:wdŵW̝$~=rB 3?|[$NFۣ@:ZNLԺ/)lq^ס: @ʥ/ r }^\4Rɕ]>EFnMC'?\?\462&]Jg6,[sBh=Ɖ+ 4M4 (W?'h4oR_ t|7W4:ĉ-:^h9= Ār\]SL3KCM?R=oY8熀'GtKۋ[F?mluخ SutZX/53%w = !jMYY\cq1N}OM[ @Q@`ÖT_?bP) 6;7r̓Hd]GbKI OtDKct>~,1S؎$ \kw]7c/.=S#.sUUQQSJ?Z z>Y>ӌt_R&>9yC誩j:8$9pֹ'$zXIgׂ @^'~gcDc08\閆]N&)C]"yh.[秐\n!Ѧρ+.^\Y)X+5\$+RW\$K'tmR#5 0K+#Q~ 4co@+jf%Jhoao.Dm>j{t'~pAK^츮rܡM w48:f~U`sK'Ř sZ:yzqs;) x42ShѭYq>=Kq`R8 gǐ({:nJa>d2bQ3PYwT.@PYʱhMg(DM.mZƮm-(e`MӠ6 drvJyYeY,轪g9D *nާN^_ ״~18adKHR 8a(q.GS>8UP40DDQAD"y>8{K|-Rs!NN0#څh0 g;~o>C* OZשvPOEw--պxP ; A)u*}mS3$dȍG?e ,FD$\~UOr>a$~XTa<~.`e5/KgĪmji^/ <2 {;sG;h\}s;A Gs/()y[seYF g\k5suHX,sT[ݝ<\.C~d]HuR*w !KF   㜇Mb/ZqSk01-FFpVr܀Ǐ3d!/ s0)fbssifsEN)1y]>H)F`'oS!| hRG}MӠkxΥcOprm˶mt:uuhO=?<w:(Ƣ6IZBrBrN3@V.'Z`'Dco/YG䋉9hRuM0;; 6;W~YW$y;k<'F]D.ɏLk+1=fnt48h<8W܁$r @k[wN@لaJc۵3;W78 x#¬q~e8+^_;7?z  ׼h?4)sNC۲R9@eX IuMB%e\:XdYjhOCpG^q%yyH98<ԷG8V\@@V12Mn{0wkb 3)c #&ow.AT%C&5eTUB@gxD/"@H%_es;YGNS?n8134 3!)1ri/T'Lh47-Q\uɉPǿ={K惵F cΏK}]?зHF7KZn#grj4zlv.Tʓl+٣S$cԏt2 $;oy1-VBzIsK$hT̸J)9TF1l]qӍtoSo|3蓭x> <2Lӄ^vڹ>ݲ-ӉsbH6~eL>Q\.b@TR7 }Oq~KkiC'3 nmZO9(KW<:qUUѸ;zT%De7]рenqݳBb}r4o[kJ'O}kJNWue, 0y pTϣԉ[7]d 8'N_"qEi$X^D$ w4z]߸m@AupkV?rqH'O:oU \i;mxc_\ZŸ^xeJ{ydgJ~Rѷ3Pb!fSYjRA0`n: "YEZLHx 37A3F6|xa y g URüCJo|:t]}`H@y\%ƽhjZwdFmMth R~pC$z<Gb< ]JZg;߮ir`y<9$!Eܻ"A$.ϕXO6\ދDX$Gvڣ7_j4-]Y -+)QcImV~ʟ'}"?_RPMSw57"-%RB,Fsu.uSH[wq O&ͮ|uh"px"Van]vh?G9%'X2)dŻ IZ.@hiO$cKLG)i)@ Ki%3y+89c:K0HSʥ Xb$Sc{t)^2=G6͕w'׶Cb:xxEC ` AjshBya(]Jߢy|ϲ<郓(Ye4seɩ3v] 8 |qe:/^:U^PgfOu^@v}W)0mEy0mƳˎ,{-Z ŝHp8:"ѮBҝpHLM KC1|HbmN*9xHiV腴hK(yȲ|>P N+oEc,T0n '\9Oɺw˲ KjߜIvI0ln$&]m=`lbbG<2. FR"gz0$upGqg5֋05ʣBnE6 ل}Ihޫm?v8ݲ~ۢ( K a]Է2O}rsj%۶aIvoU>ё! .Ie~(T A zˇav@+{o"e]d:ȧ:ȳ_(SL5F=eᴾʮ"/G!ŀD*ᱛO77qњF}H:,_<0ެOaԚGN~IeHߛZ|绣&J2Kl42=s0>O3/(+S}WRriy}vFԕ{ȯ-y^[/-=Ss+RSY&O}I I 5 C?t%'J/B l(mw˅(C s[aT? eNYQ~}-WKtad"`hxKj2\o=_8ǛAZ&ʍ[j}nPC dIH^؇p[W} c;BhH РYN {X)0KPhޣo쿮 = {pVeh|ZĘ%,/;{Og!D`T󖌫9GX˔KeF4$]a .:&EzZpk#&ND!Ai ܺhs1HE1d1򊀎/*51ӑ|/6|*[QHzBIz; ON~% r$}2;Q~IlbUqxvD> ws{cŅ<`WB|#26;麬?m& zĔS-fs.W;`0rH# r}*a,E.*&E./^̵%H߸31҉NN b>u'p wT].?"srHP tJZB;S<щo:TcƩ>YbZ]%$sdrOHyqGMfϊģyHdIќ/169rD/aU Y8id%zWG/z(K )IENDB`PNG  IHDR$AbKGD pHYs  ~tIME6xr< IDATx|yxdWuᆬ{$vԻ{vݶmLfIHjBB dbHBdXIW:qonw뽭JJۗ;!477)( 2xޓMH @ttG2W|ckֈjKKrHUmmvJ^'```dhjUFy\mDDk~󟧧Oq˖RIɷ,0 }Ͻ08$?I?/clw\b׮;} i0"NsJqW LFfٷWUgΜ\=sf,00 uB(4B!fOafJ%j+/ Re~ffGf_//|?_MﳪjMQ4x/PrY1-˴JW('˂ V$0󾙙: J)lDXpU%f ùoff~Q,Ra\T*!:JwhZ]/ ܹYu)@F,{;J޽{M|RuuB$8B> A8vL)'eYZ**~IA0j-h8#8mk?2Srォyfܧi:ض5>D!tuu]'859+waXp J ad_ey8J9\$lũ;Nj\.+;33c&XR``YBxH>߂$o 0CUk8}z)+˲Z~ib.˲ `Y~筃$X|~fuxZx,KcȲq/ar/> OOla皚J%|_F"qAx9occsFy4Z^,]U ma޲'4 zfq( 8zP h Lƶmz<k8(65FKKyߺU)9@&'9rPmu zB@)RIð[%IH;QYّNL1M< `a,Xi?_|4mvK( ڢ9R44wA(tmQ,S&VEYJ\1eY߻RO&a,) D896nq((+u?|>fA=em@R/Ciy3"[qøp]q_yU51&'7>맧+BwZOံiS\*R.Ƌbٳ  rVni@ pzrrl=+XŠBhm aY 4ME\[~kX1kڵ@?bڦJ2"4_a@QXB!BSE$D4 GHćY̥1sF]ӴX_)b٩P.i|(yv]<9@ggHDةYY=w}6`y: {}|> K,K]LF0M~G!>gdOR o߾g}>q}j4-gX,JWLǏ?FY`E ЄHA<.'`G5wzĹmmQJZ(z9⅂Y^RUoYp=(Mᅕ\39]_** axJ)XxSQt B(bxs^ZZ|Ê2!$fqH$@ڒgsR\W7X[E$B\Ao>_.ν5p]Z.j&h4a3Ϙ .\'{{8.X,CF<ނx\rvѪUgg@<07n\BKKZ[[k4~x! ko~ oǎ@f}>cT܅e9yӧNF2`zt`9BͨT$,[Ν;/6VwݵJE𡥅^-˓hiYjAWjNܹs,+x!nSJA`a4yg:ItIJeK/Mh\Wa$)+J/FB,Ot/cc纫nz]:2d2:5;1|>cil6?>>>} l+Vj1?"GAHRLqsUF5+'珝>{Wc1kCu&3htj T,DeY&ȷCyuD]ntYSlSS?Zy?bh4_t}2 ;?_h_Q(:aPpwBT@]5׬~aȏ_!~8 /N.WrWa1M:/ucl[ZzsOϝ;7se2|sHe'lDxp]V'FFr(]t> 0,lj&8~ض5bm@d&d$Ix[\izFg+kC|'./J~ NB|;^+RT*eUAWiR&DZ8b3.y.d2|~Riݻ[AJ92$Inj_g` Vw 3]ò% hxF[Ua 4-v͖-??JtPtC#qP,\s*>tv ;w1)T,X}4kY@(ءPey *(uaY˂U%(Db<'~l.ڒ?q-h4ӧs*7=Mz!C1`Z[3t:ݸtj7x3A4po,s!LQi reJ e?::|llm?| `֮m˭XRt:]~USOg|RizeQa$|]g2B7>~-q)aٳZ[2N:L&ܿk]͂a"S5Οm)rhųgTV͒Heof8C{X,^Р*\W:`,=try0sTDb(X,_::Е/e媘/eض#m Ab:"?Rܹ*>33]QP[|)f6i:` :/011}O.WXW,jMartw_N${R`Ǫ:]Y4e9Yxsב#C!M PlTDFoeyɓou_\V:)AME鑦ٗ^9>^bmj"zN;7^wo /G:'.<pk7R)ss>۶>_ib|!^f'k{m6 gbp9*" /!Nca7~՟i}GN={8fgiE~vLÇ|fluv1 , U|9IJj;55:66sd~cKA/|?ݻwfzzcc3R0ժw]7 SSS噙MŢ̲(pp]@#|zh|NQ2?oP2@ U՚Aߍ,˩TYȑ_\oV)@oTjFb>n觔[x}UKM?2h8p]V4BSX8T`'&Vϫ?|PRTF_Mobl;uheGp1IjaHߪ,KSSs{&*֬Yc MPHlE>y Ti^'ՃaBXMM~0 G׭_vlvt?w"Z hib* Z[c8}:+922|ՀlYgN̙󝁀@f 8oWah2pWz|r8\n#{do*&w6-q~wAY>zKp/=Ǯ>y:5B y>}$9z+ |q<:(B03cJaN-$4 hjֆBۉ$# |\\il;S#YkG\4ib"Ķ'&q$(skGG; xqۦy8 Af',eoBV{澇;b13MVk qt{g/'n͚u_ڿ(X04;wq|1ﺺ³dt0M IfSSD"0-I^P | E0=U*>Bmo F=yguy8Jt:޽)=0ʲim~?KyOVooX_HN{yPHjamSXpXB΀e Xֳ*IzuO$өWssM2VAXwQՎ3d2B={$}R(:,}9.:NtS0,KV4-ۖ@ JDA{Wp1d2faUee=g\,8bW3˒,<4$ٶq4}x2=]i,wYVJ*{T?KRdƍs-˙& Q{{͓nǛSFbzZ #q%^@;ϩ*D $I:qnVϟߐV}% @QX@(5M,ou<eI? # cgf&rq(e"bϷc _H\Q6P<8!mwFŃ]|[UU,]g0pe J?/U'`r:m{G(8z݋A'BK,eFCQU xh+Eo^Q,Mnk4F%I'uzP]wEQpDiA Þ+C>rCa<#I6 zxŊSW\sυ4PrIJzͻe\.s {g\C8aY@ '.[N6zSu3h D3$ܱck84Y\ 0fۮ\FssR IDAT$[}瑗'AӴ6XxGJ taEl&9q%8Ȳ̗Jlvbتi*Ŧqn~e;JCy Enn֊,#cf?!G*!~RɆi0 !T=;- n߳G"^?7<<'ΟRqQX4-$mQj00NE48 q;% l43~H*L&Ìhs5dY~1JiTڭy'XնwpJ8t̶m~,'ggg7;QV['e1Nt|-Գm[bvb{^i,e`Y:t]e!XoY6AaN<JYlY,~iQLV4~7˲p8@{l8sNs]:>%O|MIJqb eYv>R,/j(N8tMpaY.,{ś w On2#;/x󫪲P(53 y<< .y9utQ.d($eq|͚H$?rwB6ApQכlch^?2r:T~~%rd2}z϶kiRݩ6q Ð]tzRԙp0p쬷 .R{vvV923SN-x/9myKKW\Gڲe6JulY;hhkk1  Ui2hmmMGEZGG[^rx:JfA/^yz!+5<88bY:&ðC ;fg+4Z-swoV jPzeb T+>J2Le(]]wWJ^wq"a" B!,@JEhmoŬJSEBDVjX; mn-~򓟜ikK_M@ R:$y(Zy* ), Ûo^tGGwy\ց~aeY`YDXrgƾ^N?}ΗL&3z 8NJe4d8C,7o=3<|jj`)/DևBV;U-岎X,bq٬+R>3OtuN][,\.}ƃ 6F#Wbn[OMJ.*<',`2("ذ4_;Wy睫 }}-b (|)d2ْ͖gTm[t(jOr7s^o3m_;e2f=*sVk?lpo?|6Cjժuu7 Y={|<T^֬=A>099.:J%, RF8>tt vMOjiJN ?/nIENDB`PNG  IHDR00WgAMA abKGD pHYs  d_tIME DKIDATx͙yT՝ǿᆬ^ګffSę`p3J(ehD='88EL`20M@i\h^k{!n\띪{xƭs`SL؄%&EO ܦf_zKKg@gHϯ/| xBŶ}o<*n"ҐtL4Hp(#vQ_uEF3oܑ){9 :ƀwkU~P#kNɻRJ]@рN/:bJ3ꂨ4U+1#x`m9U(w&fmo П5TAzj>A6AH%d06/P VB1+UҘ!H*D\( @2$B䝋F:Xp㿟d]ƕKtQ%U*;uQ/=1U}F [/w]0H):6PNOMo:,87YGM᭦i~\tZʕBtcΜn:>ۧe2kr W]WJWw߿*tKr 7ϲS)n/z$5|l{{k\|~q*Qso^gg^xH>&J)֎769?ݶv(H=4zϯ.] zbÆusf)i{Ӧͫ{޼^_;pN\G?R+uuݭiVwuZxY V=Ԛ§'0aE@QUb8UQ|̝;g0LݻK%OAwkkӏy3>-r5wZvmbEJyN{;J%%owahgK) )njj"k4EQ<| W(BD"z*JfRHŧכ^z-x0R..5k<3; >yrYCUI< FL&xޡ#`pp۶+ ']*p%)=\SSl˖-w}=<x2ھ[nnrA0qbs&DnnV7kQ'e@LqΊGi2.4e2B :r]vr3c\>CoM9!Z s" `μ!Qs'rA%1wz [7cWB?`ݍwmg:, Ẑ/ QQI9lEWles'OFO_/wD>_@a`.EUU3{?/Dq" ܣyK*C}DNРAEP15`K FL!8,E&ۭ&aq6!DkM#ru:(Lq ( #yd̃9-z!$\X1Tl.a{&U 8R3T?GUUDbqpA!@~(4j\e! AQU! 9 '9 H(3cGp_?CjcxŃQ"([R 0BjIH)!% p(. @Hh- )\("$PK>ņ4( qK4<7)(<(8gBu<`SrM3IWXTHXDʔBi0" .PG7wס>V0x?\PP):P.(G N%BQȏU~t?Tţ`Rr%"`+< O  (@0M Xu$77"s )(e\@H>gq?=-*\$ʒ "Xt||O{- RB`(G0A]]=e´LE&@=8B| @:ǿ^;._/B'UPiYա OZ,.$T!)6tq (8B@(t_Z{38qgѢCpu[S&tT9p[~h8*e";4xPU8Lzey`׉oaxW@H%86dr uh*4MC(Pi(sdDb+R(KA)wg}v~)M֥@2x2}H$ P, sPsB`/~B!f l BPn0/;f>aʴ Qa:a)EBut#!ڹh=mid9Eȡ?h1^UIENDB`PNG  IHDRY4ֿdlPLTE $$$***444;;;BBBLLLSSSccckkksss||| %%++33<W U"ezmJn &iBr$zRpnBrQ `R6 ]+ԗI.$gŪ.+cW_FOT}w3zf*z?pHZZ}@_#ĩ(zE,UG7R Yʹ'jWZfl'y:~nV!IENDB`PNG  IHDRd4KmlPLTE $$$***444;;;BBBLLLSSSccckkksss||| %%++33<l,cIꤛ*$Up֪1#`GI}\J !oɚ; ->,o&aB>;d do0pN~;1zg[$_ sJCrQ >Ib@j 6en,KwM );?Af˥ ) | :eVMgN:AiY]i^n] ABWe}ŰuZRvmuNe8Dr>m{rzI!8*_5-IE;C,rm/T#gZ<.w)kS]z ]TqDIN{IvxY..uû%Lpֳ @нgnk}yk^Yp\Ną8vݾJ5On O{$GNNЕG ;IENDB`PNG  IHDRY4ֿdlPLTE $$$***444;;;BBBLLLSSSccckkksss||| %%++33<OrnqZfv{Cz!v~7u]VA>5z$wZh^~X˲ 9FkP\TwȘBi"M" 0P\M"r-1Y8_ZНr299gIC*: xSDɏ=  I.`IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME 2IDATxitՕz׾}l$yb2L$3!9>̒ 'd2!8%$,Îc0lql[X%yӾY[Zݵ2^$#0eU]޽ B<&E,OHli蠻}.M&]+K/-:y8vǷyxߢ!BqcsCA)!$*ZP%oWOhm/{ys u)6ܲ\bb1,|B|zvUa73ڍ!ZtH-;bUOjm_ݷ6IIȠh~!]E7LaƄnYrvדQ-]( D%y22uiӠǿ~ʚ>  ~~@0tu^ʫ+: ;ia۱;팍L**SaعiT."ٺuk|w6^(&B> 7*1>鲛ۼ $!Pgih0B+ Pag7jt'm.}pJ_x|OnU,ݧ7#@ʳ &( (6,: !Rɖgp+P䆣](9 <|≷_]xb=l,L=PN߳BQ~nD.iuk*`cY|%%$wO_ ߧ:/O߼ՓYWv`.)i}YuznDQ,"((( A2Klnp?@Sv1<{ײ-)(Nxx^'whxH-6 ISHUH(M NcIiRePh΍&94Ɩ7+yM%Ekkk5Ī#6߷lJ>zgS)@Eqqtu1UQZlPp X;_#`=C/oĨ*C0!dӸ}k>"<Ɣf >s'!qF|ҵ `?ډhtKFLLKϏ5tm Kއx7#(h(*Hc?|=+{N\?prh~!M{a Қ(@l$H)a &]O zn]ȦޟvEŢm; BvYU>M` AdKXN{*Rd YI Ma oi#0:T(Ǫ MNƤuIw<:%!0Q G6b4)FtRԵĊ@}3/I?eB y'H~t4ybJh7\XҒh8ܶևJOn %IJck!n5٤&_#Ӛf2Nl{HSh2TQ!A A5|M[2L^T2*NLX~ӪdQ>#]:R/+F8lbXƄTTVY|h琈Y[.J k,ӉazSynmQ;D޶#"xw?$7j6ݡ0L޵yh_e Lq18r;@WP3M?n!0{p`Q$:FA /#89Έ2Dv>5c'}KMK>aܦb:8lVI B7MTM\3L E~e!̞V|)!,vZFbϝ[bAKb],nƱn:LDz T ArV.͘ɮabӓh6b(Rb(*L g0jBh fd W0s8k@Ip!>э.̐i)hаo3vE|j,`5 ,INf"㊂t!U !%yӕ vv9yq\,(iM*{zF2tTiRkrxٍUHIOdР)~NYe iބބ)nEA=&ͭzENid][^:2&ɣC8CAi:2ķvC>rOb%L$4)˔@p0H]ǻ<';{GIlB"ًH0,A^Ɔ'C'k`eddy|/ :/=s҅h@sH5%Pg)Qq( 4 K6?=#Cֺ[T~uu`g-)emWl̈&6CLarE1 3@=a8~W HL"zI>~ƒR"- ='pq.o5”&W.8V?/9Y -垕ko~opj U0q5>UDb(9ٹ|$$a)a|g؈S]4:^t%C9,Z-EJwY .3n0܌+~VP)U,l5K)"u8Iz~:+&Fł,گ^=I;[;1~EUã^x^IAMa$K}bZTM#v\iI(BAJ !j!Ky},\R4zwͅ .W5oGZ7'.`Wiw=Sz:D 0u閊eH)qxlx()yW#ͻfݗTZݷT>v!S:slzk닛z{N4s+([X?< L=D^E}}`A`ԏ"-+"Ҳǩ{w?)Ρo}{kkKʺӟ췿|=?~}xR7L=aTNvvɸo#F'N*{.Mksp_)?|?~㋇kFat=-@J n8mrRzS,.ٛkoL>w/h|2Xiƶ#'ArF"c ?|UEc^o؜~!_2uK3IENDB`PNG  IHDR00WbKGD pHYs  d_tIME6 RUIDATxipTו׋]HdXbCgLc{;T55x*g2v&ql' !8,cvYHHbѾ"Z~˝-@ a$09Us=s_? m)_VބV:ZQ사TJ0}FRg7~u|I?3 7?sNWv/hMn'n $ u5'p_/CqY*;9~߻8rWMUK&( 7rO|>_ُջ|P58!J}: ;ia۱; **c!;<߾8f-*%ص =-kr?͛"~~%U80~(!Pih0Ƅ(`09l/ԞH|덽{n-t㏾/㾬4 aWp%á@(\.c0K 8 ,!/ 2҉ 8GҴD/Yæ0w\F 0 !ñgS6óx}?ꂬltCgMŒD h}vTE݌4@QT5 ߉z/N?oB :ᮭ%'ItybJh1"ħ&RsyMO>K/ ǰo>[-IQcɴx0" GEGV1U%Pqb@MЌ\@k3@%y9L HEF{EeѤDSL'rt ѕĖ_د$-i<%v)0-m?v92yϖ6[&w#hB&Agͺ$g 0mىm"Ա Plj986!$MJZ 4r֕%BðLwa:XlVQ B7MTM[y9I&T{;Yy8dv6wcL KY;҅#.W|DpZYf“Lj_:"&Ekn8NZqv4U# iZ*.̸*sĤ'pfb(Rb(*]]5u `@5 GECh z`@!gԅ## >]*A2@SOwؓvE\J @*1>կ ,ɌFQ<BJ ++P1Ҙ?ls\_>6IH7p;0DU''de7a'47&#x"∎b9x4Uc Cq]@2:B@gzCAE 1sEf, ]ᴡHԸ(?3?৵VUc Cag j=!^cLdeeg ;ȀAsm R(i|L+nWHM?{9IQ(--\pt g EQP$ޡK'`X] уƅ92L2s3i;ƌ42]3{m3Mf-WS uZH 26 EaKDQ e4UfcMǦ?eI)Son.)\|6#6-M1 Wez F]G(g:f^zN@X&&(Σ'"9+oZ 9H)DZ BY(A@S_SbV^OS*S4om ^?{}-KLkme#XR-:_c(30gqTH-R9 &؈SXsSxEAw ATt$-ٰiCT8**nXз\Wzo? _猷EQ1MI9Ue\r>pȌIt[YdtIU`^Vm\șS,e"1H0g^/^@JIzN:#,m'}EUqc1p 7KqK?Woml8zJ6&/O,";@ŕT0-V5b(-Io|:[v¡5_䗍:%1k#xk"??iq[})aޞy_tgqtp+4 E,DJ?}AoSof7gOW] k&p^>D@_|JcG)$9+E7@w\nbm{ّQ gT9g& F{kqbLړJ?ͤĘcuG]=B̜BrKs,̦ЮZy73CjZ>>Z`˅FFt\+OfmgQ<24xم]Z!n-}6Ϊ>cN9ʋ[Xx`#7W& E_-u/j{Έڷ49g@%R#h_2+$ݚ+EOOJwсJwt=<]f]9Zheڦ'+EW _)A>Lx':+Erxjqu_2??_$ 3WvIENDB`PNG  IHDR00WgAMA abKGD pHYs  d_tIME RA7IDATxřytu}%=Œ-/`lma1$ IfmNۜ&mI&mzH8 a/62’wYӓޢeƄ=;o93;|Ŝl/ُvrmŗƒښD ө+$7/eU%eKc:w=ޚѩovw, 8[=˻deQRSfW ~ FPG7t5͇*J'83G1ǘa:6iPƍ}P_}Gp42 plOEQQ˴؝vfB t >7)D0?;|>*r|ɇwoIJH^yűc}!,C:.d7 MSP4F8o X:L Mq29MS?{`V~gџy_b]+ڍoԏX)/0MPPlXunEA(*@JAk?{uC;RQ!7|Dx=xu,LX|gr?ka3Y( # .oo|bثsU,\ͣ&ggqك%EDˊAZYug0ڏ(XEvIi<1!h ٗ;Όv$΁'^TV؎o]C7z6l$.-Q$\^Bp`Ji* U]XRcbaRePh\B,ln4 {ws͖ke%=\PPCX/kn;|u[s|Qs:>D#CGp 0WYڼ٠jߎh 2.rK!"G~{7-(4,̥uWּqXׇPxUdEEN25]3 Y)  #ä(-p|Cӏγ9zGwboC {+EQ>Cz~:6 >8qƱu%5ŴmF? zR7=i#TwBK?/&>DJ&<| EvwgUMBcW*LF{PUgIIfw p_ٶӳEw**ĤLZN%N|K<`}jY~ySaS$e9 sf|^KSi+EHAX?nIcweּ 4RqrZwLH xN0I|N&K{<1%.,4YDkk LOJ|uǬ VSxS'ۚ+ɭdu?A ھ&>wfHSiTڡ>S++O$dY|aܡc:GD<6+\([覉i.jqQXU"{ocJ_<1nn' C25.̈i)hĤRGSL4/p:ހT$/;YE?bzxYUCH BAa0mG WQ/^iDuǁ)%^d 30lWcɽ_A>X l ӂR2b6hpٜ3=X67viCU5) ^G3NkOUy[sljўQl!R5<,~!R@4Yjsٵf|=ȰAϩ^P T r3;/ x6FQ=H-18q Yhzӳ:)S8#a8i: Xl)ȭc M<I)cNXj:[fH+q2_KykGƾ.h6)*1jL?պLE?2ȝ@AԚӄZﺛn@w7_1)U*l!vP#)FcTex oKsOo=?hqS>RMZQln[$05l'Nr,o>D$AJH)$<}WB*iQER5fǦX(gxf)%Bbbb iiz&t۝WܾN6u%dp㜅 !mx܈D*ZXP4 EYE'nGY]_e 4LN5@8AiƛJŲ%߿ͷކar׮]j;S\Rigz  U@QL9,$25:@ҒсpL,BML?p& %ff21ajJ+Xzy-aUWr螜LEW ={ٮ._ĩcTüz>XSSǢ(`4,=zw8^2S9̳ۜν Y|oomHsy96w^7m$e#DIpX 0grM, ?@bKTiu;1QL3U*eÌ7<߿ܾsI yqzVߍ CX\ѡ12`r|>;m]^MxŲ,b5Op`xS rmruWo%d+Y/?}dyZcc_Lb+-c9[h 1ǨN|`b~0u&Yr(i,]_@eejd S力WѰg|3QtB0a`bIII!z%@kK ׬[  f&;]ceu#D0̽0|-eH!= lg3DB!TCv(XօjR $lēBb4%fv#dzzظ8+шBUGCPѨ~#!{OP;n^F.[cJXuAPRSY.3a3wB1>ƓQQWL~aP B|_ !"p(#GFp]\5ezJ/oqwW'+ʳ&^u=11lddpiyh$`&ϙeH)qxl-)%O1ٝAMtvuQU CQw+0_[n!??Md.А_tukܖ;܇=}OTN7t (Ӂriz"FFpźEzN*Eu%f0럥7I&o^ uD]]WŹjfcΝtvvDXBő_1?(/|鷭kMm 2R(\RHl=j"XWYB2_#2"'7eHsǙߥȉNQJf~lv{ >>!iy[\wCg{Х+f[O4v."jFuΙNT22Rߪ[^֐~kwնn3%6 _PW'Nm6RSS?Luu5>(۷oMRR@pz_k{%5r7[[ZF[KfC*M77)YI4 dtdd$h\b z>kk'ѓ lD23xgaǎ(wjlVʴKܑ}TTdo-h>Zf:r{CUy%3=]lBNm[$r·VQشPr'cc]oӚ YrRǬ_t3 Һ5LMt7tڝlPon׮c_{8Tt}sm IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME $"IDATxy\Gu444IŖd,6vplBB`!'bLX-8,[P,ےlF4fgzz}Ւ?Z`Wu{*;pT׿~鿸r N;4@5bu[=Gy^򭝯.&|╱?m'N]6< xxko\ϡҼLSdž,(sn 51 pdojIZ/gl{;֑ʲ&X-\҄\72c[6ipg7爐eW -wX(Z;:F`lJeBk}~BX%KB`SlmַaCy ^ڷwqvh3g4g~gIcYy/KH|?ӊ,˯ U5Ó,urǟ[ϩkY̎Du.ZFَmkd),BkMKg3Sī(sdy0`9-s@ ݄InVvlFSC+ ~O !{];}7Su,oo’Nr7c0Jm , h8!s188xI"=kns]!>x-=޵7]ˋO@1[l }yCCS2,p g}ÏQ tď6!W,D-PI*?'ƒ@|4ug/ʕ}=,D2 $3Ʀ8T)C0<ڔL(~*3O&K0=9 V,˦@? mH'o|=ʟwNgVw\H }B4U u&1 vBtBm_G;Ȓ˻JW7/}=D*qµK@Xb1*Q+h!(- -8=0m q~^Yk ,.Y cd3=s&ۖM݇N'E<ή/|ږȀek!mj'_d-q裏u( c&N"fw.] 3كGYrz&d>>LubtTDׄuΝ'4qHݷjUG5|eӅΚJv>sl :mrv={*Ztw 0Bj Uj98vAitu2(&Y{y4Exj&'l"(i4oOǥ.;ubdpX]aWHclI>$8 P}V?s#DY>MΩ׼z,_U˓UμsR4ub5&[pnakM."# e(thtdb&d &j#e1Wwh6lP-X+ r(#08cbkYt۷8lHxo0ϋ*Bڧ#Mbǣt,[H8e^FJ,#^#0\]ãReVpY#/QQ(v'(Wc1~Q` S? LM7_Pʦ:xcT&AZ6}b@̟ ~ *R3D ґs# 7HWa)i&0 PZcXDZ]JS=Bʬ@'-6Ԓ,yGdla  IW 2BcL(ƒoeaᮽMC{3 R ?PDa1ض+ƽ@[[3a?SDAEwDre%Smdwץ]fѲ e ݓYcGbC8¶0X?C.cˢ7]#=Ne#|koyg2`=E1wFX3t`;0oIkXskƽ|Hy ˲n+Um`Ԋư?]˩fBA@tW@`0 Fss0Lgǃ7헬bK:yJޮ%FAk1`ilee[[nSR*^-zaRh^j^܊2P>=rrȆ#lz_>H\>TRZHQ* < FK(z~ RS+R"Y~m45XIN!,0_c4ig0#| 7ٵY1PT |1|fƃBc1C)JIh1033C2 _ I.+{e53[|̭v}ӝy…bR0إIGhio`?h˯`]B+EkK#--RI4Y uA]TEs̤3isa!UV̶%FTUI)` >^HF!`֬^0TԒHr64p#c1c/I@*^˲ Ar٦oZ=Xv/եjJ & 'SUcYrt @ =&A)m88BYql'D4rlB 7k~Hk.st˼@REJ ՗q|1:2We ]v6R\r%%2QJr1ihlqd" Rv8؝ޛoڛm߻ ,^wۮl#)٠,dkr~/  1|% h HW,"OKW_Bss#(m)̹ {a߽xٚex⛏<gD*,Zŗ.L&HN7֤#/=<__ `Z z6}l{7|]l~q"YFj\Ω!vx˲QJQ?bEp|o,@(b]ࣤϒl2LRUy>5 $P>RޅWO}]ݧ͍w̶OKK'5 z6[f(I X九2xUW3PUU5{ h~0|x;=ӛ1o|knb1X}'ήc =|iǗlPNݽ,[M<`J2_Jo;n%oun[|Y7z;=82PH`)H`[6ʀ8ũ3;pvL@IMؽ?}ݽȽcuK._JSGP7o Y $!v RPMcB< m;N!ѺDk#Jh<1:Qguߑ~GFg$SzP^'-s%ZŶ "Cfj{S E)^<" l`4b!(&ELLGW,ͤ3dfX _A.F㺂H(L[qeƈƢkX!2p@J2' &3>2PBX|CؠT)"iG]Z>r/knqK2T)e4,ᠤGXĴP?B ,ۿr,mS娬f|b fff&^ZO._ٺ v}g_yK ]u ׭"c1  31> yBH&c iSrӓ3uc_q]x6,h9Dp$B1#0lt&LRV^Nb=IENDB`PNG  IHDR00WgAMA abKGD pHYs  d_tIME 2n\IDATxři\yu}zfzfhFF8B, ,Nlĉ񇼎q✘ % !2Bb m4B;={ЃyΩݷg_w!ssɊC'{-X92x+hoobpC'mǦuo_=='\o'Q>ybGZ?;SsLO(9_O(إ\{DGSCMr`} w٥]uN_w=K9rp NUMR2:u3r2?DM|:cc} .xG:q_O֏{/6Էгk⸒|d#m6rGLɑ) *B\7XL"c/5goZ:|#]wM> ^Tx^~/D0(l1۱Rr ޽Lo48ωoZooknٟAtavVglMۣL0 R\J^&΃2h]2gLܲv}`M]k}?C۶y3lۉ)4o{/H Z mhX,⠴EleZ =kA+Ċsc Bc2'WqO|Goottt|zllX/+?|뵼ċsE\Zw ^75Eq]Xe\U%yT8̐Z&}BJ.U~?#w?Ymvilsnt}' {*ikWx\L6)^˦@ RLc ѓI:ty{bc 1ڣ8xH"şpћzw3y6Zj:)uI*_au2X&["t(~W5c3Djw(5Mu96v<4Y~g+RB= 'pq;jZU2Z(&\Zat@M -&|nMѕO6s&Y[a+3jywU|Mt|響Hc2Rwۯ~?`/}<鉲}̋,'2T,Ҟٙdۙ15Wɥ38DHu9vQ)nwWX.'s@cf߬eQ>UկkSU; )‘Ӳy;SB:Μ&H W^ƥU*~#5p8g+XeZD=>W58TXS\#QUX0]xz۶) ;[ЛX2!P(Yn}z K$]46%\ , OL4VQ(4QPխd t*Oj6FִZ0мYH1?so{Y|тD"v$5iŸhoobv)8tq $;:A,&LIvS8}%\^[pf[H* Upٷcm1kc(O`hE}S䜿XU@Rܸ?rbI&LWE532K̏30>bo?ů%Ub+ߏm.G gڑ:aXׯ0CɊҵJFkJ"p0@=TJpJf ?>42?p-M-xT@S]B!6gp{op3hIPObIISbHlj%.*Js]CLOOտ* `v2?3Ɇs(GS<`,^tuНw! A4wnE+_) >? 9o׾SIڤߓ`J}T6|C/7u[Q."Vw[J%Aj!&T-$]j^xz/؋Q9Wa n_\)z Lp8L}C5Z60R(Da Dy{ϖ|l[|s̎>?9ώ5^j0L7R"j8MQKu2vd,Sxh`KAvkh R%RiJEUQBR9Ha9W072s>-wF{](?0P|LkQ{Ź$:I UR1O..TsLON2;31c H ѸRow<5iکx︎ د5i1-eu\4B a pei"]eq],?Huh*UHqHPZ9?g]wo@_K"\֏f| G@,בThF*E2"\ESS Џc!r5B]\W:ϓ3?wčc;Fǂ]܏#ϠtJtbnb@8 r4PU tm衩-J6/*檎 XG*IX"NI$Sd2Y Ee=yǶ);#x"[Ӳp8cK[Y%`\&L1qbR*ϪX@Ǐw<ū3]k G%%F2\.hjl m&)Kr9ҙ/9W>yM{l:SⳋqMk Z  l z57o,_446Z)tJd'J IumyPFJR.q'ӛ]|0mxxl0`Yc'H&Ҁ̑WٲuΞh4r&,˃.ZB~@{*$dcҕ}^*!橮que9wufWVRo|^R(Ri4Qx|>,"`~~& "JHW[|vM+ҕ %!QTa2;3Gk*)Ѫ+])aޭ􄂡(T 0]B+$1 bKK "Hw$c#]"OK),.Γ/YZXɩ|~?Ris7D)`+|J"JiC+L&[CJI<*"B5E)98,*nP>|ѩ)V]18MuM- K>fPJdqdB){J(& Bað‰X򕮵?.~m:arW_J aXwPkiy} "nIENDB`PNG  IHDRvdS pHYs  tIME  HyJ( IDATx}wՕ9RyF(g`1`c loژƬf(" ei$hrꞞ=$~o>ͨԹ~lD`| 4|!ho A[}[9 E Li0M @9ᏲH+GMc̟|HwCEӦU\|bQ4}O'F 8?ޏe{v|L зꊪ_ѤOmZm#e8#J(j1~B@<@tvE׿~]@:<>j->'ݯ7S^e OV!e^6עhU _ O:+W`Rej\dzi>j8(G_$o"c< cȐċCBSO^4)$NڴI:pUUje3{w+*:ѱݜjxBB߱˖1&\b"k\̓Ϸ' 0d$@L d+mW_ (Έ #XC ('~w+W$ZЅ͞W,v,co^b̍7~lN β&7FMӓ1` 1"@`W/zԔU<X;9_VsM9KsUlf"^*J[c~%wAqb1zk:S}aY@,!"ʍ@@, ǹ=ݽ]]9֣f"ӓZ=tœWNpd站2zC@;`҄#Ir Q&ҩS>X>t/=lS+_  XVC; RN@Lc9#xSSiP H Do_= =-IM1y{QT`?\'#r DDBp)3 t\(zFok:<#fp@$z8 !L3|`ފ3" )#^!/־iCu׻+Dt Bp2љ!@rzBLpNrFt ȬX hxD쩧b Gɋ1B)c|O3qpݽݲ͝;f{CLL 裉8Mu,N>,@.* Y͊ew@rA1:6ht = w}{pk9Mb,yr& ޶7xI ,P.‘ AT8%wÏh8 ^/]V`\ ad< *o k An7y_y (i <-D(xyiEt&cy|{4XlZ= h>"O;-U\ !BmcZ0awV˞p8mݳ@kȦR@RXTU֧~USX*U)JE kҀȬ!K 7> 39DȘhmwj\3fLbL᧞΢=guw,}>TU  ΑG.$1FDn6͛S'@ Xܴʄh왁iS*.ZxHEdy&DiYFt8ZD3f3[SHm(ngw\󃻧=%KtWPQ"B^ܶMy@|x 40DΩ25eѹPE{+֛jʖu<(ڜNn HY `h3չ0=Ri}n!-g5[MYka}w^3/;6IU \tqc8|J"Ϗ$\Ǟ>ꫮd{Ei pmcuG7f#""c1@+!&e_b&wM4Mujj|*&h…rtzWd!Ғ3HgZ?oYwwߴ٧HUE$yO,\`w "ms,Lx{^w8;>c ca׫,8$tx>8p){ ƌ ?'誟dٽ<م[i#S$߷'?A=ZM%) BE"%K۽̛ok_WUd2mǗ|ǝ-#dB,ƮD|+}pCd]_!3 3ҫ$hlTI)2# &}v 2+.0 %HPl;޸1us6ͪ[`?d9g󈮷Lf"l%8I97,4r"=F-Y#l|L3HwƖ- hX"o|sqI񐻄Xt l }k׊ H@<6pxO2e TU߼>eӒ^JcLq:k|oq1(D΃ǜՂ|lMB"0@@\ !hgjvW=u<{n9L@%쳔3l4/a!"V]z!Ɋc{{;y,l'jum2_/.Ģz }Ø*+'_G^xEF`BPrR:5@@ -͸HA.ucZ d=aFE灜3WIuyM Ct㫪G,{@ujeeG‰~[ ]ay=`KKKOOOii)S4M; >;{mtuqxm(+_ ec̛* G`s57"8)E VK/WnX zڶ}`WPoTKtiS{w_~kbd%l.+2eʔ%K̞=;+ *Cp6cCJȀ{5Bp7\ekϼILN}l 㦭a9u)u5eKJ#+G /J{B"Kj̒e FTwH۷nc>b֊)oi??wΜ˲[kCImar`}e[;רk_6p J{kWT}K #꛰c_)-qQ$U՗ ~m?3k [="T,W74"#,W1s}Pvz;;;>7mK=yΜZSE*L㦥exz%VJ"b@Ǭmo֗?pDb'>g/KZtPcH>SByM{=,P%gO])KBQ}Θ?%g̙woub UVͤslH(5^ML}[%&ҢٿXtz\s|ⷞ߰~HAD]"\ [E^|M 4x 0أ#gәĉY+;%c|M.r!w1]ݵٳ'_]YLre;wb×9t?@ʱ~7E%G͏b Ŵ Aޟ<{~c󦣺T+/&k-~wѓuuu&MἸ>ΘT<siLUcbܤPi:ybJ-wB+TuY;eahJRǻRV2M7W~Abcg_@gvlNɟy8^oto$?_x"#bRqG tY12|E%.0κS LRϬ]mmPJxU λMߥiEE:} Py㗾WS7 Aȑ-G;ԚuO,z{S3êa'w~̵VC殻*76~^Fˆ}>4wGtD ZϔS@M"/=>;hXzO:X _1o2fwqC S;ټdzT Si#5wmnْ8_pxC&wOzꕆzms=:n&F6vӸSnDH%Eͩ쁽R~U8Ko;MỾmqmÛ@~[?i+yup00k}9hqH*~}o~81SwĬ%4jL g9#0a3YO12`DL@"ܬvwM͝{7KÍ `8?D`qCUR)mͺyc!a d8==$ @%1Zq%9\4uރ'~%=[.3$XS._x][>c5PYlMP8x;EӞx&4M Hf 0yq #1GB$.(h 56".2S2+W!L 86#{d4q٥5g\NFbǪwYJ?٥W} ݭzBCytnS :v4Llq,ۀzh'BJxSV@@d4BT?q>Lvr_TkHDF'zj<_QRqD m^{0kѡvqH$UR||8_SȎPSrPҴ"m8IS-̍mȺy2 aۧȣ`^o u*Mֶsڣj0Ph`R{Sݿ;"bo|u|[֡Pً<z?,J64> 9䴮; GM"(  , _v 1\J8,ΘgD?eߞ= #x2 @t~ "ˮ>u,=8vるj&-miSEu qr[knu ҘzM"7`49\| #3fdNc1Ibc}VeTx*@弤VcmMwv,%XugH_3XշhZ@ HJ@^yq 2fz2e(XY4! '?Q]Ysy`(XNY CDh#:n: @NRk[Ҵz 9d և1eϷmݪpe1-ZeKpAT9MZ5Bqo!pԵ~Cy@i FitD BR GyM 9CΠ`!utebq#V{cY3:?w4A&χ6t߱'d$\Xv@2yp8G$qDSOS2 4Qs?{ξVI3UH(7 M mN CGB`.d=mO ENsl֣3iI'MSR8 kU9gO4fyo4^aUmQԴ A%5]n7SE%!߶wM] GE ]Y|K/<}za5Gr YOVbg$ISFXUeeC'w`1ԣoQ?(.1Uq%"E%bpl{-_u~jeB8Y$y4G:ZzaL"ϐIi{S҉$V_ ) J049֖gVWzB\b612CgeDfO$BQV$H@)k1vss;oVW86]RIB7YyƏ/$*PlU}ztn_6n|!|Kο}g5ftiyIFAs1t&O I `iS|b@R^_p5D4PLz#*ˑ(L xC䀀(Edf~z:瞳.K_Sҩ]6J)?yi"QQ*e"q^q>ujBUÝ~xo-X&QИIwdw1B?#*%D͙. dΉ#K={jؤ Ŭ$r(DbA(RHٹ0Bji2lEc8.^k֘atf2]w]$ 6A$qXlSO e%mz׿QZ "MMܙyq pH& ̃i›S$wB,x#ByBcqЯ ed?`xu!G.R؆W&)l~,|(E@urjػG+,9sNI!?Ug:qo6;U?5xjk[='땙  XqK%K{g::"+Vz[i]o~?-*)t'yFD@=)-MT\?+KXV D pŸk?!8ߧuS J *mmS24-?\ 1x噦E`dV_o˖Ͽ {ʦy䫯>mvvYDNm?7Êl'dYA>#_>c.8"<PG=TdWUj̎:X6/;̴F) J>|'.0B/bX,Vb#[$C5kNkO"hٵt}*Ub6z}Ɗ`Ē%GS\=d7.p4sMI@*+ʼ;0GTs; +DŽ.Fp1 %FppF+qJ88l22"d,\y}M<.1cOv~m3zӊb1憈%I*Y7Su__O $w8:AP Q edMGus\O)O8P{T8T؈(7NbR(({UF*d2+k:> B!ߕW O>)l ҙk뎽:9cѢzzKЋ>nC:myqu9=|g~I$$[jّ!Eran.-#CLݻfhJ<*TȠ()S<=ëټ[TȋPТE:;9DUY /]6Zug?!)Еw] zuB@M0WN:z{M"HۻD?xp-oJ/N_{|*xJ7|%}hIyP("dt7}߉G<رgL?MU=Qrp(Ȳ#?%?H ,?ʝ (xɘ͐Av6$P R(yu~$"詤C|$32 C^U}PQ20&ӧ9WҮ={'M/V# Df?0h/)ݜNr偀,KD@E0$G" >""لB ˒ uyr{ \7řd tyڀ*x!By'焘L:D(JǑ8GH_@lT)=vW@nXVd@ b1h/N:W+9V%e@d \ر^tc,POr@njN!zɪPvk!$;@4.s uKR>cHGB~h~ yDG1?ƍ;眞]IAwdua|12qĭ@әoqxrom4w.cc< 7ḿ\>HE{zMt>86"IDՕڞ6LE T*-~`.DD,Kg*p0OK7<53ÝÇ[6>箸\fR7E|s QpIgd&!TR,MZ^Wyx0TAXa ju5d 1T̗NWi p|!0:If?@GK}$c_c//)|t`EEYT4ছoJR K%D8+yZ=?NdXލPj;gE$"6oN]>} LXzϏޯ4x}w|wn0AFHhp(C!G.OhxabN?OǛKη:#qIO}E<ΐ3-Kq1s.\x٧X').yd*q|cُ~/߳4Yg?z*G!|b8};wK>5o^$NvɂRwygݺo3τNzyRa~l'?TUIENDB`PNG  IHDR0/\gAMA aPLTEﵭﭭcc{RJRJZRcRB19)9!{kcRRBB)9!cZsckRZBZBR9J1{csZB!B!ƽZBsRR9J!ƽJR)Z!kc!Z1k)ֽsZs9c)c!s!ν{!c1ƽ!ƽ)cc1!ƜcsΜB1!ޥ֌ck1ΥJRޭ9!ֽ{){1)޵9RƵRƵJ1Δ{k1ZB{J{ZsBZBsR{ƥJJBJRcs)R!J!RJsƵc1cR{1ccJƥJ1΄skB΄)!sJ99!ZJ1)ޥZ!R{{BkZR{B!sZc{9JsZRBs眽ޔ{k9s{s1kޔΌJc)c眭csk9s1kޜΔƌc{RkBZks{sk{Zk9JsBZޜ{ZkRccsJZ9J1B{BR!c)9{ZckZc9B{!)kR֜ss{BJsksck%"tRNS@fbKGDH pHYs  ~tIME &IDATxTsUzm&1&%u &)du(]l*xITPnU+)&H,M:q 3Œ/33ӎsP~gg{}Yӯ#߮[v>>vM#<Ádžh1ziO+YM JæVu*7n($ :;V˖ \AWYɛkwN6lZ%^Ω"C;w5)"ء[H!|jFxi!YQIݽTWO `bvLx 4#QwgQko'i !9<xI^7W%=mXʋHNʅx>a28L3=_o(M&?ȿb/Z/>^# gB @7Ndz<7?qKuVh.u88ɑU/Yx}Mb rbY,K/SppoxJϡez X+=3p=C {-%m4C4 郃/;- ] %R߰Ĩa޹Z0?V]d_,q4Xm/`֥ꭔ^{#p*G%= :=[̪pE D63/_j]`LaקNy_+>?r۶ U啕U >_K[kG0ԕd޹;Z4}mz[tXeBV_Ryӱ/ޠSIp s.xuh7 % 3߄_L("cpt>˴pTg=6888'ĭⴐ!]n @mIENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME ,̧6BIDATx՚[ly]Ф4#c[vFc/: "6im&U.FH!m`"+"^$@[)(ӮQ]0­8lj"J4|s!;;;?_J^It0,%Fb u@PMi8`8 ˇ/ 2] rw#"ŦlCqbE1UkpG!~RS1PL ίf5 +~85J-uz*״p Kϣ.CPN&`Y (0k ־ V\<_(E밗% 엶B}$T_1<6"?Cmxe7&TzV\zisaqJ"[nP(( .½ȁ85Y<,āf&puTJpƂK+XsN4N{=w~QUdE, &:`VWZ8gV]*eLĤmwk{F&{*R?жdvMj@ؑx =)4O=K_^ 4yo?T&1w=`>xu`L@ATχz<<;h$ElkRoTK@S(eė*(J]_.SGXdPdB,{2q\y/$EUyd3IA'J 6+Y1o=Afh3Y2U3of%3inueW Sk=D~kꄦ/ҦyH/l%9س_Y ,T+|:U{9j%,UT2 8{/4*0z"ss,O:. % yeP]乕%fg.C֮_tnmr:я<)By:UfN-\'K-6WKy}2a؋C&kX4ĢiٸZ~v'kK(iZCl`J!Y2W+dqЁEGPLq]*8?V3/- ( $MH$IS% 4$~O b8!hrч ǎC +}cA'+RyiG"'K|KU$)QD1($qH%qH+l$!@Z-"hCwu y|Wp0_O_7¬RK)Sd5}\p~#ot0l I)Y_gWڄaNO>g^͞n>}]2"(%Ψ*<˲Q,\S3~I>wvE;ӴoXhn]oѱ(O."@t=0 su%9Ewig29u7$qB;j102:q8Ot@V_}7^{0V@.'S0$bFJH~$YF2YUU.UgtWDDP<ƄQ ȳI';VkdwLY!ʂ)aTT/\!mH-¸M?Έ#MR cNISHV V@:|,5MkqG!_Wx A/ FԔGaگ rl%![߹0aghSO=}cK#(L7dW(P4󘺁RykxbaN `;tH,׸h-uJE v(۴5m$IJ̓3*6Zj Sm :ȥ9(Z([55 粝qQp2>=?a}GHq24rCl!(""]@K -6w]~=v֍j \R(1)6FG]Ejײ=#3#a"40u9e77䏪9/c+&\0lt0DlE 9DB |u(fϐ)(>j JHe.vmY,˴NVp0%@Uf`vlr<=̟'Oi:iMZ.fw،( 3g-&/=!(>Hi:%E1<8:R OXϡO,,W" 3}!_zq4 Mc44"4 $!"4 A爓8 inM~ϓ<[a3mvv>KQpKsd`=ȤY0>Xۯ_";y&naDAlnla& ۏᰳ+;z_\fkJZ3 |S8b{p=P@W4LEdPP2K,T氍C6Z-C/+?]6&>M;~Ň柫/1(?XY% {% Ti k r鞞*ᯫ-~H㈂d!5Ȑbddabi4y ^ <~⃬f_|[5 OP] k < gD\T@!^Fy~ow >iśobQ(-IQQ+%!%Zi$77sc{{]#IC^y~r& qCǾ{sH5Ps3@q g i>~(#ق}>_Wр|!ϡi֝ v'# S$"G~#G;=ssǟ󄂫34'}b`P^wv33M S*|w  _yβM]Dz|/ #IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME '2V^5.IDATx՚}py?;ٿ_+pka19S DdžN$j6L&&J;M4- d$q2VS(GS!.A- `kYhY']{kҗLgov} %l1oix4a*Xa04K7UE3IȜmH쳐<5X<446Bm!~2Yy6G >x9Ϻdv9Нq5ȥ_nPmB@6E8:o68.~Y,D[ 8ܓd%cAL]xGMYLT~ J]tjLeP4$>x?ӄtza_eQv[`ӚT:Gݎq wXNCPsyTo'9%D:R^zrm >*E`2Jx(%ss\&aAOvpJG*QS擷T /҉bU/t-Og>zb@}A&mY % _8ZTOp* Af xЕ,{$$UМvL)0BV7d dd0Y7QTKo97HgE"M /o:QKtw`N7)W a¦^]CPdĢOZ86@_AIFU) V;,;c33ispe+JL@/'qiRjlJfY餗^Y{a("NCɃDVs zKb@M ijϾJt vK \ɁRgfh(TCtto79Nư؝fl2K.ԋBt^,9~Hg-q z2{Τ a\87ўxWәe֮1رc`x;Sϯ}B%fX45c K= {tQǦu!%r~M(0[bQ{{Qk<dw~[rUP"Y%ّbW`h.)Bg8W/z/g0'_૏xd#P(H8E:;8`XA܊ˊj%e+/+@4Tl}o Ҟe'ƸoK lnF^5SԽRǟdjGv!LPyyV Pm@n@)! MT2d$:H؃첏b:_x7׿׏<0W>5XNfj!BSk\2\vARP)9a/0*ᵰINbnv㮡}7qdͼJygeM{{;y\}ܓ +ΏȦ-LPWB>κh+X'lt%:#J" JP {DSHJ Q VNI k*鷸$˜Q(( nݕ9}֬Y+W ;e팎RLC)$` KYs~K7i 3+3 DvLoewHhyLw@! ʄ˦PUYug7|K@qQ% R,x"+V7J=IR72{.as{\I5qS1uTg0 nFd-,1P-a!+.&>Fŵv$eΜyN*  yqIFG/ =a.ur@:=T̜Q %JG,ҹ4u܏tሉT63:)<;,ʧq^?[o?iLMMQSSCX$P, X亍M&xwդ`m-YWFP>PfQ|GXԡ^!: b =Trjw7ڨD)EXP(P,*Ja1\~%V5rG]Q١|bZ]*U,ڽikEz1;Q}L;4c U <q_=ȫ?~)ņ *EF/^d||r:@)^9^z$)J%֝w~fd&?;B[a`X7jvc$uvØ0?O20`9;-ׇaM< +#FxϑM6JN-[naڵ|ygEuZ Ll:vpJ)IJi ]8`N V})Lx*h:6~S.:ّ7XKXuɧ*>L0kȾ((dDa4(|*D+F!S4L8 PVhBZ*CO adV273li\G>w9~JQNyz./mwxqo8?|߸FDaͮ'낡0D0d?})T(+Wf{ $s'NQ_#ϸ5'Nbܾ>ŋ/ȵ?%E劫mwsMV5REd=yy.=c㸂oMC-}@R&|jk)0Ɏr0==MSYZg?X,rs_/qߥzfuC=M{+$ 5=9,y`늈*OZ dEPV S)?UQnz(bu\r}2[رJ)>jkk?D?'^>֭[yn_/${2Z-CUd$ bDw`)詔^ .(d|2z(G~|޼&.=BAr355E0dU(ʾ̶ϰ<~>͟޽̹q+)QX. P 5EV65۳ eby ῔JoϢN-wka_g7X{n}ɽ~_):r{.g^9s/|nOqE^i&򄬜9n1T`CYh@P[fPBx~E /v\r~zhlp:NNۿ䱣|KGǸFg|n!kʾ.aBf*=q&mic*( XE04г! BҰбA@EO(0a -| -*RKq~U1QkpIG0a-_b[1R6u.A,P{qPsJ={,裢KL}Cc7|;Uڂ"p30fz@`uS4z7 e|@g@zUk@e2/5Mv5zlKT ɲٳd1n?hw)F)[q`l,SoFL;R7}AO)-Yv%hJc{>i_|wѬD9[R6W/]ˡbWiܚa̵ƭnn^o|_{xF߮@3@4fM,\}F^pQڗbC#\7gΐ?T w޽æ|Oq ƹF@i}CвLasYo3ZfTy!u( 9m t(aC? \$x!:a@'i5qA|0A*|FkXwUДP5fL4w":TU~/cr)ܻsg!ɑqEq>aCGt:QĦ{k8T b㠊H:J1Eܥ+Wo+̊26 5Oٛ)c6SNJFspt?<achd8p"`:v8 7N'udpEQVi9MD9UI#b(.8U0Jm)WSBm g*5Μ5K˰AЁ0NgdDgh(G@}$|˜t늸)@ c6Md }!62x0Q6\F&.DPsbf/`j2bP"/T/ M,ڽ`qQpwyIB|~`}y0" C0"B[R D4R:bJk+bCi늠WkӪFW(yC0aD1"[)>ёaԐB$sÈ(   r,@)=M|xU23c-J=rnѸ,t~p8N:a'ɑ#: x8a"!uu., ZMlic`"P,A Egas3`x!{@vVJ^WA߿ :Dqȑ!uN:Aqin!D1q8J94<, txR %ŕZCW .Zü:ɶ0*5260h&ڸ`)/zFOS:OY8"C!#y'O$c($;t#~2]&\>x_S EdRP2J,La})z^GVHK|0~ODADQLŜ9u\>'ry67VZ: ^(8k(U(Fadmk-riOzlTegg㭛ƑIB0 ,Nx) /Nb໌c}3–6a ̮1ɾMy듟> cMXu]ex R4*G'y6 }lWi TY{^g޾J)ZL#Jq74)=I_E0IENDB`PNG  IHDR@?PbKGD pHYs  ~tIME 7%!} IDATx͛y]}?ݷ?q(RFI-+[^jˉ%bE) ]E:86 [q;J#ˎg$J$}}YLx"KY6/pqϝsνo}g?dIYZ'9 3!L"fD4vTWEI'$ b VDLFkPJHcSO-X^^yIrIIDH"=̡ыAh݊ E!qHm9y؀`LQW{OĤiR \I^%c΍??Cʼvo7_.5 @ҪYp?|MvoVr1x)Lhb?Incv^IX~eO 3OOLa!@[dF :M2'}"шq0Fa~>ˏ߿[ |x.ҁԒc<}yg_|'y3ECX_@_n"G= ^_>]BT+HHBˑǹX"3}I0зTzQH6rL?kX|ǟ( %8 N49zO߿{,1G0%!rX0|.sw#P!=+8xf$ !FƖ``qF@ k^*J]nk7wN1NpcL%H"Q^_ ,//GMqSgwD9TTuDAfڭڗ[R $Yʲ В$W q à0a a  IS &-5Bj n ̦`]qLfk#җ5d!EJrB&F~xR k8" D;W FkڌP6%D(BJ C9 pq  ̰Fv,cjR` E$F:`Գ|ev/݈W= wﺍ7\!pM c]BZcO T HCDB85%^#snpq#)$XK!FK͊ؐ "8)\pj%̿ʏCC&cYL'@:AQd2VҺ5Վ^/|J@L')Jc{TqJ(֨* ^%`s(B %~';)9'3X d\}ՐVN^cF9Xj<*مJ:/I|`K)*ϘëuzUG7x[ Y>M X ,% us@J~p%ßj1+Y_^.S6Mtn\Z"Xg52vf+%J¤TTASD:…9k]Lx]ڞcvPsA6sz3RbǪYg@UcķġK/@QVR"vz`zanO<DZ%@zL y ܹp;Xq'(x;Z9y|/yZ5 &Z1crN|dA:sT(#uء+"pEJEx1V"jn>pB$TFEβ6t4LЎn^{S{rujy  >!!xSYEMf v.>4bx!L)B q7.pH+Ȝ%cޘeLQy|ݜdʘ# O4B DZ p$B 8RxrFa@QZ511M;|SsV<笋t#o}92Q 0rΝBεE E)' +,@uhAַt8BN+8CU5.i*fXu(XMY_cc}HgX5aG|w%2G5lR5= އapnq9b:S JFl !S6@0,"X!6ƷFKMO;r%nϳώS1y}g^?ҥST]Bdub,ʭ_%Y *;aX^B;y.UͶ[MJ>G\O+I^9#\Y"1ġ(=N(\ѐqލK;az.%{Ei$ .>M1ʩU+H};1]: *`vXN+Qv+f Ƴ{fހ{ozIsC0ksW8~nG rD 81e^vCx8Gs G:xEa{i;nuMz#$6]DZMVѶ`&q4H@! + bO]Btik20K dw~p3 #?@!!P!+ :n'sd!넡es߾5?n6&ZeH*e]TS8OT&,LϾp j:A%F0&/tD9VjhJM9y󗘮 tCݤfÝ=Փt1H-h` eH*&@˜-ja5%ÄSQ|$[wo}F#|Hau JWBҥQ )~x7޻nDz0zK U$ n. Qx%.!kL2VA$P@h -(Y2U( ȗ%T䉯Gv-4ڷal?P %ZX_UbIxoˇ)DXhHg|ž4kx6I^u 7˷,%k! –%G*Z{Y?u'y@ށTJd+/aNRQ~^wuCCݾVa.A)DG!N8L390t! !%6+/=Ƕ~߆Z~uH&Ƥ*&h27Y;ƅNO,U0N(F@IX0 "G;?O|O瑏~=~8mPW)O plHSxQcDIYJ#O2=x ,:rMoO'3sS5RM 34ӌչ;!"Ux7ƕ8PR8!/|gãFJi.1.JJ*.عmMoxNy0&-AY^<α q0z-*<'K>U~4Bbm ]iUx{׮6_p2#JAH9p$OQdRQ cs8M/~א y¹Ms۷KyP!w7^MmzW;>)*VI'1 Hopu=IDATQuZD$ ,^d0̑lCMVimCO,};;#JG,)<2Д’{lF%HhU[\A1^{:񂐈.'"P7$y"3I(JD !!Nl$ql6.3;30?W'JNv}U]U_B$B@)=YLOOöm@tz,C~ hgB)$I!1Bʼ~zE~T !f,YA@Auu5^z%TWW/8u];e' EV $Jo>ߤCCCx6 j-nE-\! y`u!{p]\VB9T l9':_nPJyE1O: fvQh-$YA)W^ݳwC]Pᚚ ?pK5i6-Zqлi,}wy1ItY&]y7>>СC2 %R Yގ[nƍ*7~;K*h4> n70Qsss&矉ibffW\eYB{g6^(!d1b1!a466qȲh4Ç'EG(0 l۶@Ws|'b2Z&I"!PeE ޽; C)߯]vضغuY^۳e˖dss3FFF`6݋'NWR "|B4B#PPX\m[xӨ-\G/yf2@%3Lbxv*{gCpQl$kG$饀 !\.(d7$!e\1 !` !`۶/|PX,Ƙ^ٶ ?+ ew` i omۖ4-0꺮weYR)\~.\ƍq}|2ݻM6̙3~ReBi2Դ2ǟ)lnݔMȲ;vU%!eVs;w&ѣGu۶!@ui>ChV` ,8N»"!D0}λY"8}vKIF<i{Gi>_$I^Җ'=Y8vxDžaAJ躎d,ɂyQU"0J|tnnf9n=c333 ŋ'UUԯH8pΝCgg?|~cʕhkk\\CCC%}n?#(>JIT lëvŋ3cgg'(bEs (w)vEuuuPUޫ{!2h>ttt<_j]8ߖ?k1P 㿗;qga||nQSdRoBe\r %7|#s5i(sضL&L&۶( 4Mifsβ+x뭷BH_iJ)"T?066K%_l+˥ LIENDB`PNG  IHDR|<FbKGD pHYs  ~tIME " ~ IDATxw%YzN_~'RrÐKrRV Z%X6  &d8 EAئi АHQw N0_tss9u.ޭ{oݪSp=]"PV#Wv! iUToH)UW̞gZ @943+cRJiԢ(T[[[jooOez""uttD9t:`flll`8𐫪(:u1EėeD>c<3s˲d{YDX)VJ /7, J)ZRJR @Y⽏{{@APosV^;~*q4Yk&3+"{eQZS̬RZ)h"I<53~sNu]2(Rd5Pu{f$I<qSIxV쫪p*`k-k"*MRFZk @RJ39NA"|oHL<8}$H`4Aj",%DDVZkW9bfU{eIh*ZMD6hf6XommtJk1Xc R{`0h1^knY;Ǿ*&"oc@>"DkZ+QJ֚(T7q=6Hr6Ƙ$IuUU{o44MMQtXPi|NH)c Ps{x$IsY`E3{_Uwyffj{u$X)%""c8-n6 h$@ +`9xox h"qmD?Ih$P۝*J3k"Z2F)eloolҝNc"ZZ+s;;;nXxkZWeY:c[[[wJ)W/9缈[koF9㪪8Z90I (q/Ҁ(pTsB-uu4h8AsoiZX1+RJ3nO1Ves9$Ib,eYf ijΝ>뎎UeeQ`0(<<˲*ue n4M9MSQJqUU<[Ŷ`[dy73^h>2os ;NGmFY{ FݪNDQ"x~oy'eY&J&eYD(^MӧS;bPJWJ$1U%ԩ(\9ϋ,meUUUz tQ2Ϲ( Dv6rގ,".pw (q@0KcG#WGW+ȹD0Y" \mtx \j@i=MX褣tϋRܸZ+f\[kښWf3ĶhۓE.F'c)nۿYq,*-FPWr$uNZ'}jnHd2Ii6{h/AD{_8AD‚* n۶{d걄RJc3kk|85ZeVJ9NDߙ"T]Xd$jmBv4J!:.F&TEQc=53,Z/0ƀ"µb3e1<{wὗMb>AiP%0fOL EΎ*|-a$#mo<j:% @''l5zTNͱL7/xڱ3 ,E$@҈x?0맿Aw R7{sIg|pWc[ ZTȲ , {YOw+<gw7a`q.O JN'MyttDADZ[x'{|>tl=~~*'=s:rpM̏ewwnqʧ8&֚^o7oĝϞo~LM67܍ENI8N-==6G8uvxO_BTH.1T'ΈH3,*M)C$IbkmJX+Wv#HdoIIa/nL&0@g{R`,|ìz "E7?G' ]H%"Xޕyt҇6מ> o_)޹cnM@A/_OG& K/(oW|/x2,_s@bjC (OKqލ>zUUI: Xk'=OlӴz~=#˸7v*t](<ws X,׾qxQUx={m=V`R rUUp#3'/M;\|=rx0L$I@-?8 [pa07\zݯv.t:b{{?{Sp6vAo\Һ}cUW:"<[uU.X 4Zt,z~|1&/"5wAhQ`?s{m\&ʤN)D@u$H>3n=Www|秵t@D$ u{=I^ 0Ɛ1<,p8Duæ 2EVon{po]EUnm?2۷h6uZ I,ʲDQ hˤ2jäAZ7?=[z_|3/"I=/' t۾ GQUs4nYPv)j,%tr5~ZL6/Sӭ)DCƥ3-EH*Q3ӧptM`CQ5(RŊQ2׊)pWk7.rNs6IF#i4|~; v2%Qr2ږ"N6[;ၻzt͆~O^Ό. a|7DdjU>rbϋo^ 'Pt2ƓZ=mlmmakk ndGo[@z X@5n]2 X__׾5it̕6b1 к'?Ie(1CQg7&C"ŌX4BYI3 1N/xwϔ{mtNʴM%ۡ&a :6xYdgA RvNMҦb 2p+LC8~ܘܩ->Vʲ̬ :7e, I@];-26Xz+ڶoqy$)t:, i7o4ʼnB)%EʮIS]'G9.\2c82}}βL3sttd'˲-wyn~kkkxmLgG 2C IUXĚҹIy9bwwo.]fFXk-b ʲpDC)O U,T pnbtُxv:L&{`G]-obGn^RDxp0̄G?dǎ@W[:JY$DwZ+NGݮdYV'W5x<6j`0pZgi>a<ckk EQ( t7vbb Fd2qnJ%"X[[|>ǵkr썩UNQ9H#ZIiZPB9*˒Z,34MMeNkʲty;"ʒ x뭷p/_JQQT%RX)}u=l9}||}TU7n *^ot|>kmgg[^Cr]U(˒,$IZ4DBc,\6ryt7qe C CX̏w?d{o'Oe`P Z[SCYuRKzNX[J?T!jZKZ oOD佧,)s繋]&^cW/k1~:.]~}6F~eQee:>g~foon ؃&ݜW<_4MITy(ycX se /^$J)z!>kW:VfBR !l^Ń5s J6U t0/O=z(Rp΅f1Á(C@;E9eI! ""c YkaiLXk$/Z4Mig{ ~#}=<Ӳw ٿyexk+kDe~0~\w ǁP), m0XXT(o KPBFVppp4M1F#ܺu zv}&'39<<Čv+&I)icqA9OHk@)nt59%G(eZ׫'Ν;oawoo{xx ->GQc=epek[̑Ͷ>;Y?ۺsnlmX>xUׁc{bm#NOIDATPTK8'ڂ!ŋxAU0%rY. lnnb=u8<1쏾ln>{W322mct EKsZk[ŁzU҂rbzWxHB@K)IJJiSW;"8"v"} 9ֶ^tz O=F9ЬjudUJ)6boϴmkhu?kp6[k?z$kNop옓n&Y?qX2& ʲ@j}|fCYY,3'p8]Eԃ„YVJSw<;/~+IJSZ0$"|Zc2`cc‚zT"R`x\*?갯'"!Q*f6HרX쬭\r+rNMP[k,K[TI*=,)as܌$TI~`X@DN)$%䋅r 4q =sJoq2!ҮE0F6YV}ӷ󓟾䳏?y#SAS:ӧqt:iDH]"\W0s!uuI1WR4_։p“e =h[â)=TX`DXEc s;Ob#J=+U^gOO+_/~_I +Xb+ Q 2D|CDI[f#c|I Hv`l!P/esZ;w`6tP/¡i {Kľp hp :u bV@X#/6WC7D0s'"sFqp){G#H* *y x#"<~u:g`_Dޔ]v?3?2yR9UdIv~&pe¾ z)" 3AZQ~0=5}^[ӥJW #ɬD@pu?xS̡qNLjLӹBƳW`{ׯtKNE6yM4mMt{ hH;JÙLScnb @B+R`綜LM\j Q:ɓ}^/ WI% <67h\"b{|bU^+- B(Ѳ^ʲdE1S"uHbXXج5~ YA&cQ+I`*U[Uv1DG'?Uqq Dzf<zZ$\D<%IU`Yjezҏ;7˿%{+X ~+Iu2Cf` .󣧼sT9gzѬv\+*Kb:"&3@-j>63T"Q4ꇨzktb:6mL'SHhM\>@f4:ٽ[˳Lݣ:v6/L2ZB+PygW/QhSsWt` 7g^No燮);K6Rie1!@ei\ue8XZnh 2lm7<ow6^O2z|Ջ.{G>W#O==|#(qm^e3gpox ]UU j3Ri^ @9uR>6M'991|1u׿қ~byε^;qæ!KϢ)?~^gFͅ%99<<=)y%VV[}<')f ,DD2b;{k~Oϒޣ{:]Hӹ.N%,&:Qb2]VDT<)ޅtΎ޼?ߛϯO1ǒtܹs.} ZTUQG76{)\l "Fg-wM2Fٳg{w5$$.tzxGR xx뱟M?:( 5 Ϊ59mb\!Vf(bPL@Ō¡,KiHI#UPv6^|vNlk;ɫ)]EPJf4u`V=_\Q"4QۆS,WhvI$ ryM3ѫO8KP +q5$\ϼ/MY@ZNYDH/g\5#:ZIA&R8?s)B` T^VM+(V}kOha"(^kndu! B::\;Ig#HBn{ | MD eb6wG?/qj8@~ &pBDR~O){eHQ, "eE{d 6iDC+dր}aQZ2ڠeVAT޹RT6?OMKVT9.*Z 2f7]FH4j\%, 0YXDLLd}tEu_^E- X 4Wke6i #֧C/PCtbQՆl$RJͤ#k ra6V|XɶdG(Baa;֚U䈨rU̾FmEpFQ:tKQ`CK294!͐Yڴ[ ƖjXAQΔxR7q-ìagZۀ#uUm[ IZ,GTѤmUL<*E{3m ?Tպ*7kʞ.o. Q&ǺbEmץKk#D-նj@o jQ}ˆ}rpl>cCd(1RSi6"A$僷o)|$,zpiu-;gODi_@S @^qn{k{£xCI.Luq8qzeZaNHcilvQQT Q ʊnJV?ECBZQ`Kb= 5_?h-p{"2BR=.NBRB;_WƉ(#ggXKc(T5"6 :h6Z&%2 G>)rV>yNO KLn4:~aQKr'@trĴq`'hlqں ,c[{=$:XnIתϫ=չh?r"}ܷ. `D.lZ4Jim\A{*<4/S["IENDB`PNG  IHDR|<FbKGD pHYs  ~tIME 3][& IDATxyyR޻h  nII(."MYIeGxrI'g|4l%I9L˶d--GlR$sAAhUս?nuus ~ :g(=oψ;301 J7$"B2 ,YPJ)0HPJ !dfOHe966&VVVDǢZ "dr FFFh4$(rR1jN)es8vguN)7f3 !,p9Z9鞡H7>k{;j3 0aז" `3E:y $`fQDDZk$!֒sN>J)ᜓB)$ `09Y4ƈJBJ)a!"R,D[kZ MDV"s&ISvRJGDhrΉ l6Rr4 !ZGƘ@{ИۍGzk )bX"3LD$9`RX'@5I)RXk1s"TXkRJA IVj%)R)%sjɱ1tVH)R*W+K#"[]ٴJ)+RJ"sg$l"ZkVJYf&9fvXJ,tRJ@Xk9Iˤ_CHQK i78]2Ξ1?Gp>W~v;QrI"7H: 9G"۴֤ ktRA$IViI"Ra(Z&[ 0^J) gur !A`Xc)BY-3[McsI)Z !VI'`K1l%: ͮz:2ha7' ʛTw|_%@x{ nnD'9'Za$9VBi֖SnW&I"hkR H)8R !qb1j[PŹ=vlc\$.SߩqfvD`q[|aK䀟)o3 ^ ._"$D @fKo{EOߕM&'$ \&PJ81Fc$ TTq+VJi: C5 j VI)wBZ"jլ s.adtt4Z((L$mYk;nZyKq18;fNKQțl'K6C za^{i+~p΂ك2!=fڞ{B{Iv{_@J)DR3岎X3sR77zbbD/* @:$RIswDI$ QJ%^/+J2 ($I Jl֘dDJ EQ{^m 2}ol Sv.vK?1tbع:2V lkIy j=>R)A TE8֥Rrq@)!tEAtRV9U.WdJ)T9g1{LVR*(zǃ  q'2)J& ll9. C! !\$@l/96 6Ӄl<(yjgfw{g^]YЙ47yK:R"Ko[EsޭRV$I`08AR 8(Bj5l{ Վn4  !L$ Ø"u455>"z(caa$Im;^:"z."!S^J. vk8f6t'2{d٤盆f9νpjjy% MD:73ttx6QDz!DW^8Ux3Ŵ9TT JR()EXV8C)e 1ajeJ2*x=\.G~ooN30ƨZj08k ЖJ% nDZs1Rϼh=x9Qs޹W&fN&EŶ%}7j@][x@SYQ@Dav B' AHJËR ZHk Ip0藄aV+q*ʥRjť{kZ&J*tI7>^3ͦ jcrxxHceSqArlv]v9I8˝ xrq'Dvafq6yUٳxT ga4)V̬H3s@D!3a~."EMS'(/M*P9m A\.jհAihQNSZWHp>Ik4G `x.U˺ʠVվR`0Zk944I4nfjAz-f&c[~"Heҏu)'Fv{cjx PPb0<,^ڷYZR "v8 fQWƎ3]!R9'Jk{ߘ6$RR"!0;]q>3 *ZqmrBƇEXj\BJQEؒ^O:̑_^ КzRp21=ollÇÇ"<6:Zkz]) 8=?PxdK7.\ticQ!=A6tqԾG.7y O?],]ێ IRw ]n]}` $I`!֧n;N7ݪmA ۖ{%fgp k+?RC7Ί`||fxh/yX?"T5ll=vibw3exQʋnK։IC0c` qpQQ40"lܼ\;vMz2rZmMS6v۝:>ɕ]E)fF2X/'Q[%q,@#JO HeҪR 80= 6lo={g>$I0>>f+d=ֱi((X*h0VZjD,t#ja@\<.VԌaw(&&*(PǸAe};6 튐%=<KT^SjulPH 64h׺[<3~~iGΏ B#vD@)pm5wgRR\QTV9)RB)EJ *Jh4ra ; b-c}e%$I֖eI xGnq\n:]ưQF(y B2?~B/-W<@8z&Չ?<>tÇLyx(pJ'rE82|[8sNvZXkc@!0DT!cl5,^Reꡫ2h3sn^@D4B!@)5{C *-WʦRRdv0]XXB8066^$E 6hlM[gall V v<0}H7_|@Z$Iq;>1t]h?3[k]$6ߍ697cyf2%&W^󓇿C2v82Lq>53!>qd y:QUA{n Ϲs:9=O dX(xaۘyԃs4%!c"(}"Irц+"R ]xv}F{ﴻIRJ[)7PT%@ | )OW\P 8ڐRbxxO?40Djj=!+<9FRx1̊ z}2Kψy*+R2nMMF0et:8]9t[Z=?ij/R9al)/5T "atyTtTQ""p!@w$9kk=1U T*𐙘1CC19-FAlpA\;V;0\X]u4 O$R459Dp$I9ǽS2J666R9! )='́sM_kAa(._7CaVղR?>~s'oˠC!E]_*yX7waC3/(Ps|rrkk, "+0B@sd*+ޜ4lVoâѨ Pj0ٳ׬_52VWW1VRhs=9,Ql+;='Ob||qpwژT*Ã?"2-rP dDŽxߎfAwq0[hӎ̨`_xWqA8Ur'.i69)%gyTq#AeXf|[h\F;K 'yg}nV /SRDVF$IjwJoxRMLхݤUy4#"֚2W*.JirVKZ-tu6]{ZE(bciȤ췤跀0ٱ5nJa\!">}CCCz| Hh 㜳J&'"  v)%.^"֊0t iEۥK>Z^QI,2aa.\Ilnn"c45)jpd;HbxXc-j7044Cg±vieý8mf, "4J)aR0dzn'JJ%Z-S]weLOOW^:JzQEIǖl5imr||p333hZ8}4~ -ԭ]$h X[[R [[[9jL!gΦIw6aO,n?2 !v_?;X|+D"/ ztB34ɛ2A cXk -k<$LI)ZkaBk11z= PJ%#4q`` M^̙3G>_X]0Vᐢ(FZQʜ$B |iȭ-!I]2 {JuRc]ckmbb?T  cJ.ΛDsβsYH\"3RDž h4h4믣۬V^EWgʾf&ԼG-/o򯳲$bf*Teexx r9KsP7f֤DD9R4 `00ˤZZ`(QY)UJY"sss8x ^,,,k:ȕJ%)?;&; 6* N8gᤪ*%V \o0jʃ("k(`0@`0rǰE,pwY2~״XƑ[[|-alll@J8n52\p{'&#yI^c~~>o;Pkxk4aFfhI)Ev~Y5s6-`=qcOfM n6.$jv(oPPNR Jܫf0R!cμ\㘍18Zqֻ :#"gɺ:n1 022It#mֺ^,7;Z)CDԏh4p)jvf߽Pz,MD#((IR)dc t\^UZi3!AL O4%U CJ~cL&R_E <@.`nfTE^5 !`ʛ JgR=(QdAǔAD"5R ff5g`gGNk0 ib| yw jWkg%x,RW_;Nr!ъ0]}2{qb ȸl2#Vv 8v,qz| d2!,#X__GhZX]]Eĵk ,V{}⎓zT* AJi Ðk_Jecc j<DQ S .\.]LoM]D9 IDATW{xC <:4OW]fK_`4in2²ˠRl=&14=6k-6|C,^j"3%ϼKX%ߨ ph!Ԥ6Au:0m("fN={BH2C:g12 @ZMDlevqyTUO4~w~k&(OJN) w:\5v.C@$R$Rypᱱ=Y|6yq޶}l,DRN8s:W/)AX IuySh͗W6¹iDQ  Xⶣ69LIk-&*Jʬ`+2*B(lPcX󘙙q _[MtcY+&")j A֚6Rᣛ0_0 9'$qDǸtXXXH#lk B#uZ&.4pVvM&˼zlllXñ(,HwE+*RQRnql5Z yld! UTt*cBdqfV8m9-*MO)眤f]fId1(B$ؿ?qyh.E{67I70L8cavYX㜳HI)Er0IFޕ%"j5z%8#w`;Y?;e9",8 $`jzz2~)D"lܡ tlߋEё[ #!*]R8[{v EAsVRJ-9¤dBDٔ:qj5p$*bPb"a R%䒄""gNA1FH)u4I.|E_9of^@h&IB9Z !6e=O?vn[Y>Kn "uT7]kv`H)SIan}N'J}ov8j[Yգ#tc]X;lL[x;-T1 06['+F9v(Xӝ/~-0}Ybv +X|+4<%\g+" 2]S#%7NAwD^յX&e0$|iTiOݩ#E 6y_;Fӎ#Focډvk_)\~333x⣏ן;7ުPC&[*Wߙ:vu;HL5g a:!윴p۫DdVMe1V NӲ 9X9""J\*@V)gN F %ưp Sv{y133xDG_w0oB5># Uy-=GJ !N)|,7NA9pE,*{}p7XJIZ ;JϼLdד?2Gj'"H2'\8*:*/ycz2OZa߾}N=sA-9יq曷K > Y2c '&tje҉Gۋl=p֊-{(g:n[M'K5k  ځvpMp%+kc89t(mϛΊ1xv6@9g`G_|}{*brr?W/*co*}cJAedKjگ-?xV5cPzxQ-- 4TfFF|EYSuҥ QΡ{۫t`G!/c8sH*("ӿuq "j9j+O.K]o>Қxyj7pjr{%a$))yRWou'޿?N8~o_~=}TzGۉ|w_>td_fk EQ^GJR#_`{$YkN̈Jպsftۇ|n$-w_66^BEg8Zq63|t~DwXeR5⋩:3`Hh$@Bjo+++ڂ\8rյ2]>z++;g ,;k7fzm | I$5H~g˓$T@B`ktLJ)cnAX_, lβs6*N޿6n갋lVNE[[/M5`BJwN=s2h4y@DoK䤚] Y&=l/S*6F^uXRsɛ{_Gjm_CCC{_?7-66wBrsoZݫ3.?7| qĉ`;+OupK ;'lҪGg.m-aii gΜH)9G.~xX/ AЕ|; /ot#i}3͘s7FT^P2;zk.Sr+"wѤ02s]vܽ:ݜӶ ;ɷ̹oFOc70 G7IZ}_m j ymvCn ȃ婻|$ YJty6n^lw'k zE=Soߌx84t<}1 L ǽrx^ʪ{.^kNMp_|#??=gg^}!w-م Aa ݱ\o.pCs4և=pߝlڃrj_S>Ι&΄7, eD6_[tzfs}G@)clxX_zm3x]II722"^|E54[8'pfCp87k/_O][FFFpƙr?>pCs~pqsk3l] ߫( {}reÇرc9[<|[:2<::={EJA\9vVX:R& >3s·' h~SY҃ړ/DaxvC{б6_}3<:Q{ "#8"H3ν4ˣ14$HPBW}8Y<;#V_QoL7MoJ÷ їzGK%zd c쬞c>4qW(|htvy-[k|<qrn醟bfSXh7Wgc8nύp}= 6{Kb wk8 ߉{_t&>OĦ>5c^_>>[X\g?C2c{8 -["NfXf~y]?R` D9<$*Ķ~!MIP"ɅȑCڙ[=zCO|K,;v_z{L8|+|KkSMa'Jsмpfggl0lw?ߏ74::jatDB;_Fo]6ͳ$T2:_#&[+BW{גdnueHWt(rxgfvfNCyܹ-% 2v04}Z#fIo4|twNNԶ;{'DyYZo]|muu6m]N]V;+m|' \x6o6GJT…D{N['?x+kWN}_r? xjr~fj /p6ø嶻֖6^9o7nm,:u _{=K/ ,w׾,t㵻=\΀p=x֯~W3W̅{ELXO;Ii[=X; wqm&l/KSE3d5ŊkDD>(Ŀhёڑ?vssssssʏ:1ȍrƒNOCD=7n?ohhw'+Ņ7 $gJ_",}ݺq BVn:PJBLcn޽һb!L~ 7܀oyˡ'_ϣl[>U"Vp,cw`3Oxe Ŷ΋狳PC](tx4@J wk{k@s7O~xOGFi}wsK?O:{?'3KU=xgߛu\z }gRd9tQ]f{[4փWިҳ= v_Anyfk-st;:GFbqʖ;,_h]vNG; f~4<wn3nvڙ6i{"p栃RQOX+W.L,f'D ypu}dg~xQ"dm˧kG%UVK teLے.n};oqNɱ_i^CgdDM&z{d8g_~`tW zǏG7b>6O=n]4S:R1?O>$o};b&=0ov4O<ϞtIb_Ї>/W6O?oɻ`vıZ4 l5+i_S¿ U':J/}񡻟//?:77fj/ث//W>Zyjvv?yO+~G{{?.?PqmC?H}Z<|S9;/}wf[[wSE^<_Js9gJ~/S9 U d_o=r{>+ܬ>}c˟v7y_o%|w@l/mտczal_O}Eh J/?CnsKnN ?/h;zgSɩ$3GyɏA^oJPepG=яW>~+=p}s{~"BbO<H㧮N/f b݅@m7杤)ʌ<ȥ́=,C-ώo,\Yz)*@x콿coyga|l_~%Co=qΗ/q13zqxpn>lv|7[/^cMuh;Q*0 )Xy~_ 5#/bIENDB`PNG  IHDRY(uVbKGD pHYs  d_tIMEaIDATxyEu?{[^{gaAȸ hDL4bhrb≉%'q9!:*r-*Tf{o~^={noݺ[U+:@SOˀux1|鯀W%(z[ljTAֺ]/-x)k,K0lo\0e@ֽXOu8bYض-R `]ՄcV\,T*u @RV% ö@9wfa(Am۝nB`sl+*.m۽ӱ@D/`Q$?Fv=V,f``@|y0u^~-qm+?̵)㺮J%)˝`#x&Ň ,PJ$ Ity cqƐ)eq4޾'/p,HY2GAD?n1Z뮵iR3',#cR,,,t[[+=-@{-Yh4,kq:v6 C,K(N`x9tthZaz滜\C DZ-@O=:lm䶜_<)O𱀍k|IIzCVk csn/X-V'Xvfnc:AN>mM뺝a6k8PpΣ~Z=O֗JyYGE=0Wstv?<)𴖪mZMJZ-K°S\a-@tc7J}@'uǑ@kPHhY2\**s󧘬QL>XL8^.KMkqAGkXTD%Eۑ- eɦ0x*%˒s] `4/Y7ԴdY)%!H_(#0o^M{ HJl}v9ђc+vVZl/eSzϓ+Ȁ/g1!;Y[s٪[l"Yﺲ- eXkgi-O+o`ˁ>ˢdېeiM&8>g1SsCt`Ps]$IEO)Z"႙^ 7-Ԧ"xi:ql$IWmSm=Pk*jQ 1%-0N>M4p F *6@kʶ$acrz:AM/J1:H!Tfej6+r'0v#*똰n2 OeeT&NVVLΒ& q08hRF(Iy&|.\P,6>&N)3Y<zjů51mӯ59aZcg[-Z-ET8h6RL% JQ<,EZ40y&E!%iZV~/y<'=eL(+J8XIBui8? 'pbrN a XD2f 2l)XRdiJI5oCPIS&8$<gk.:&'30#Aㄲ>@)3IBͶt]*BI,BIO$]9 |S< L~T RiZ k%BŲPw5cv>JF&4_+1 2l$OS&y&DxH5Ef@B"aH;#ex |?̉0 5>0e.%b}e8hYt8e cjE*eJ=bKizZ' 0#"" (EPR+'.7b6/`F' <ff3V`k`+El2<8ED),&z*1;q=IM5wbnG140[0d <&0(¨SoO)<a˿^{E scq̄vaDkeDi#RU,o#YH)_]ž ];o`->=w0p`@}G?!Ꭹ))e󅂮lJ4 rY0,)q̰VȂ(4 oVhY (2ƣ'vy*fg >L=N41ՕJm!,b?88+Ewt sFs٦W5|N7Mk4خ5Irq|W fMTscq)u e$&i=N~p&KH<z;&S/+bۢ$γ5Wgq%ǘS0Ͽ 8DNϣ*KLITlj)@&\V{)KI};=,,FgnYvl8^hk?I䣏r:~ ͘ cp xi„$_&}'0rMy 6 34p L+,e}sI1o=Czs sRz{`O}K 'OLwHˁٔf0+]Jկ+5&X}wvGL/?s]hNO R;zx<{A>y6RV80/<3m_n\Ʃ#6vOWs1wh ey>nQ o&v#Ô]5:wLz'xË}^{qd9\i- qIB0ar1geXҊ?Ctuږf> A'ؓ(8pU5ߞZ1Qz2qA>&t[+ diNGVccUCYIENDB`PNG  IHDR00WbKGDC pHYs  tIME,t IDATx՚lgz?3;Ǝ 6N &4 K+AO)DR*Ҟt4UI{6Ji \QИ`% vk5`oNlp^լ;}ww _Ӽ~K,WUUHUUXz`7;6|_t),cِ$d2I8+ne3_UUU@uuL&fp|ɥFihhp`ZJ /vaaN0u3WVz^֮]Kuu5NDAA$ &'' b1dYFe1LD)/F&'4455|x^t]GE$Il6Ÿ|2b1V+,t:x<3*#cυ ņ,ΊŘf-O=ǎX,$Id2jp8p\3*(#/\B ˩VFVɨyY]@Eph4jl8iB/12%r "fiUCD]GDMPU`0,vY(Kƣ2^5S6jn͛eTUE4DQT?MNRX嫮9x$RⲢdUDcuBۼ,oª5k`QessTu, ^y_v";{Kj@ MO6AV ,:: ::΅J/tTMG@dzOй# L ̧ylf jd5 UP5cN1L8>x?͛ }>m "iB*咕?MEzQ?~Mww7x<ΓO>{vhnn^x-4Sk&Q$ (YU9Q'?L&balٹs'nUUbLNN299IyyFcjhNk`||d2nG$TU7rE"tuuq{1mvc g# JF3瀜v;VH$®]8z(ìZ Gmm-@In4tlQftvvDr/RQQ (ɓ'w$=XF͇P6UUq8:tÿދ;j_@ϯ4:jg]בDqMyy9H4K(+ /?-eee-/k֬ȑ#v!]q-eJ2,$ vE<9ٹc[u=W>I`]wOuWnabL]B˦d2zX8A:6% @~UU%H`Z$ipEoh6ٲW$w,+++kFAAtR]2),4XA4v:::سg,$.ݘ.jfitt:ͥKf(DQi𣣣8qݻw >EϷ|2ldeeqYnd? g-bii9TQun7,Q]x<9s2Eall`0H(… ȲL*"J144DUu-{}յXl @{{“$EAef3Hdؗbiɉqm~FG- L׭[G:L&ٳg ŖL&C4l6/W,21Y*2D7b1vҏ0 =ˇfF|g#t'p8$h4Jkk+\wXÝWr^HgÌ9qߧt}***ܹjE!G45vg3{65X'?Ƃdl9m9p#"9rm]c=5Tޱ*DL&OO\ʴf<ӞJ*"366F2$LI ǭϟa1a1<ǃa޻V_8Nqy q.BD~opwP^} xhM\.TU%JZDQ@("?^O?X,f}ӧhzaXy5X%t{p=BE /v΋L"KRRRbWbMNgWdwaS|[0/(ιDfW:Onq#m[H`ah?rk-}?8J"9uSYl-=][wέy  p@O8ު:xS_ۊ8M Sz9;/~:^5s9lmkWsCh2!v&pnNYߴr7]:=vq'b:ܳ w)nX/-IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME #'_IDATxX[l\GrΞ؎cg')vZ5T%"E -V+DP/&/m_qQUU"%+R$@QCm|݋w9g.<86e3|?ְ5a kXr:英sqzmKߘ]U<;\TU1 '4>)-sF*cNyOJ>J ]'jyR=t_ ۢز)ԮɁ?S_[A-g9h=]-l&M-ҚۯOOB SHJ@ئnAORcÃvD\|>qWJDLm-?Xz>f3dvJ%PTMl6b*:544')MeSv2IB|\.,)JiB)X__DUB,۪ UcଲrEL&|>eYoW% L8pgˍH"vA}XB~]fcY F] `0X} .ءUu($ؚb<=S/ xgؽuq B],RreZq1'$JʇPs;ZcC҇3Ĭ‰3%'f 47lVB4{;hm\<&{i_*`'!fUŨ!&k F=>rOKطo&~# Ls["nBdklZi4j)P, F@9' NDcF;1>mx wu4~-6p/cG'EhbGI ϗ@k$ࡿ֏w0<<,o| ,h y 5>Á/8#~BOرcs]&04.#8[?~WX8FSSl}ȑ#|[nt]h:FXRjUhD"n5Bs7L.щRH$rɲg^0 N>S.u]C4 x<Bzzz~W ۷Z'alƳwwwp2J}P( q8΅ΚURR >+ dexgaqzq$o1ƇΞp6WM@l^$ o: l%VÃfZ2s:P  BABm"0 '| ڤ~sJcUgd5z??g R#(.q 2_y5LYk&&ܰ 0:b/B6ۄJ982K7_$1_ 4/RPR#=[@Y@H@x J@ )0-(i K(hFs79 Enz48ư 0}Y&Rys xa7 )ǔCcXi":8"+vT)?'^i)\ >Y#"@uN ??X] 5ܑg? CC*a:".b S."脮 Zah1ӔC&g#?Әf!dوDЬh%P ,9=ҹ43LQz(TMGrr*XiL)XW)%EHA푂Oo)b / 5Tb6v4Ny\Y׃2lxNS. evg7vÃQ4徧!. &"C|a9+& w<H`Tr}U$} psO(͗YfĜ-Д:YJ@Ry/S ˶fuE8/M$"ZxTXm3 r9q|X$x䈟JҚP(p= PNA-N[o}"~%xYs䠸j"NÈsvE+{#{3YA;\^ETT5C&TzX&c]֊eJ/<L7>6,C3R8P>oItQ=Ü&1uR}f[N>*<>8~]3rqqΪ`=fv֣V9m@buPeP !5pJ%՝Չ{AsKj'!x?>깐JNkY9 h]pqldE #=5C_]xwC'o4qIwYxIW㱚 U?͞sLq}|tk3[}5̕6@AQ}!W'&O:#rq"M1v %4z{naQC җ>R$4}zh0Qs,aC+|H3l4NLڑWo9`u"t|gٴ0ŵ7gZg5@:~8W3kdĜ!lw^c,RϮdi L敱WXUtQw6dm/AHrUR;vvf2ԨQBG,0it rԈ&[5 #9,Ȇg{.:1;r0~;4Rx_mǛ0Ugs_Ī%j;\ jy$&KFK/IENDB`PNG  IHDR00WbKGD pHYs  #utIME2]IDATxytTU?oE FQMAE28?6:tF=8LPqYuDdOa !!;N:#tFf'u;nUݪU[WڻwHIIAQ$IBedYFW>N`0(сf.zɤ A~7v<~}0ٲ'NY9z(f9DeEa7Ij׹{JRt_ 6\SL&BgPg˦Rx^qYOz8 \.Xbyyl(>lMz=^ii&U]ף9?#ф`h02vK"Bf͚e&|̺\YV%YVwb{^ rdp%%R0FRSЅ@\~t]G,Xu={BlڴA[[띍&NZV5MN Bu$'#ɈVʓu& jꠜ2cF\u8<@Q(id2=Vc @5!t F!VkR-d%mGJOY} B'(<ܼ)IŞF.$&B`yN'<9@R^F$i3gܹs1ɶmعs:Ԡr[-vO0lu ERx^4]C`&M 3z}oʉ'hii!==.]EG/~qk~,X&;%oRRUkBeaK`0ӊ{c~\.TUU Koր,%]h!HC2!vrrraTUE4!IB(sۤ22~ UBAlv3*QetM_9KD $a2\ dggGi?-Yu]' 2dQ^pP(f`0EDx`P($yaYTEQfJYmQQ}Yo~lW$d¡0)ӛG*xFuꨬĉb00&dH KC KN>R^^~PдGynˍ/69fΜ-sII6,V҅E?d:]EPC]].1b8fGKK 6%.ڼ]H0`xZq66ijrn޼YHӧ`[vfe/:z8@yy9MI0n8~dY6$IDuj/_kFJJ.Yh2މn%1)}jbM~8;Wz=cǎiv9'gMK/}_Qal,amA߾Q_eʐB9~86TD,~t/G9[ Y]᥶o>=W}0uZZZ'Z9KNxWxBRwg~>cƌaȑL6sń`Ŋ:t$l6,st^5ofs$Il6#114bmk!w<'kkl {׾9gΝ\UUYxq#*lsd[.pkni9p/vǠ d'Jrr2ʇ~HMM ,r[0L> +|>BN>M}}D,d- rSҫ@ PEh… HɺE+>bś`a7ϗ` 5-%Kt:ɡ?]ө(Ann6$q8u#Fk֬AUU r9 W/DKm\nnUԫcMI8t̙3Y3?5FLb?OL$RQEIVW8|!fvI'8r8<:[ 1fwyz2 yKrߧWȑ5m4ƍǘ1ch~3M;Ψ( `0HQQ1}RY+ShR46$$ deg=3]9rF%~OVݞ>p@  yUUs l?b^zGӤd"' s8 C$ց(Jvލϩ9+FT/ѣ\i7qϢ5|3gE3d{n̝;G<w[sl)//ejNQٳyl̯6nܤ~M~=@@_f\ -o.$I)))b֭ᒨ>O~KЧM}]޺[[[ 耾tRF|>}z\\>$%e_}hjjBx6sƘ;-7[ EV:;4i))Qc2gʔ)t̢Jrr2B'O`0駟)333gy駩nG%Z6׵ci\j³9DoE͎j6l#<,-21{IJJKKKc)++-*bJKo`0PV.{BohFRǢ!Kb lځbLNNN BpZ[[v;3fLG4غeKA*lݺuŻn*qjJ00N@XB%!H,!z6l`Ŭ{qF#G1O%t^}UfChJH]zH-[^j' EiC{hn> :#g1Ϯ}Liz?<,"1:y,$%%!I-lc~٘؍e [,fxlw,yy3>TK$^hR\~sK̇TEy&w¬4͐zܻӽiB%;x`\>h] ` _Uϙ3֭; U[87V&SUk:zqdt3X*7\wxa}}l)ڻCFPy{ SxKa_#/YKRmN2Q Ǝ݈s Ic<4QoƄ# ֮]u/\#j.zpUAط=ljտ=.lݻwۆMKJҌF}ҿJϪ;(?~62]!ر=kLYB2T6p³+gi8N[z:{OjIMMEUۣϹ3!%|<[{ޓ)yv*rQC/ 45Ě5e|i>z*5=( 3{)C|\iӼ 5?p:HۣQ vOզ`+|Gfb0ihhMMM -aO5k5:}owϺI$e$k[Ý- Iydr–ܗFN1W׿vi'{7ouFJƍǎ#9IENDB`PNG  IHDR00WbKGD pHYs  tIME .IDATx͚{xT?9gf2L23\'! 1`&BADVZZXS.ږgu-E4ADIL[.C.3I~#ҵg}{~> { Ă @@R:?#!{.D`^}N,bWhmmL'x s].ߌ.$9N?HNN=$ q(;T[~ss;]NȺ, ̋$_~@sOkh+BXrHJJꓸbA..]*PĔN1Xt'|r---_K.-WǏa6b#a3[U >|D"bQ__/\.@{5 c%I۷ohgO&O0'I/ER\{3y!D""77W C3 |~˕)/ef~Zp<6;'g'yy.:eEEEt]hTb? ղ%ԑf/rCw\A'zuT]$}pF[yyܯȴ~>=ceQFYa̘1\Yft:{XYW\qExx@4;I f׳\{͵mjE 0L׋s|)//J<ع 8q"-'_~;Cbb"6lSRRumA=Xli(,zԄ٬֡ǚq-i&q^L4~^2h Q[[+bժUBUvG_usRQLg,gSIyK}r^)Q_ܮCUZZS@iiOƍǚ5kn &`4Xx1ӧOgǎb14MCCIx<466\m1{ߌ"QWC r^o#61ˊt7 3?]iŝwɒ%Ke/^ۻl6n.B2l6 N'(Z;Ў9! %\6h0)ރ﷝X '&o0SzdͽwQHߕ{(… DBB}FYYVy{4`0uY8'ӾDB{:o ~ߔZ"uM=HJk;P.B& dێvMVAab?Og'tH!L#7HLf8jHn&e& 42!p_y l>AdO`\x~$ifslz6u?&5G$r%^xv''))Lc#LqgB+5_ (Lkf%dT x{nSƻ~ ,nY.>#`WsPSc;d6)N',3\6~#`lݺd>@L[_+p ]ǔY??'Lnn.&LogA{bl( &h·00e܈)ƞ&mttttfuvseh\lrss1|.Aç^0bv;֭#5- gZ.C%;;Gyp8$I9U.˸er]yZA; ыk/+\+&9E(gޭ|?l6t] Ӯֵd̙TVVŁ@羣 Z[[D"Hz7-aw@~,Ԁ:e^H@c\2󩏜;х f y߳._Kw uzm!1ъ?( A B|i$!b8Q+ KBL&ƫ|6j>mo:ƌ 0a#pƶyM3g/`m̽:us(![8,!pۘpg3;ZXmM&U4}A74).y ;Nt M1&$XhA kL44uyi:)58O14?0!16ğ|ȼJ˰E ;x5}XGIݰ6󣆎r % 8ouGηDN W뢧Jgt'4#4ʉ&3d#!/?S~%bGH?_}cc`_[cA bdF~Z=KcȨq:&wX>᷿/|ɱ&ofRZSҮ_%/sY^IENDB`PNG  IHDR00WbKGD pHYs  #utIME2]IDATxytTU?oE FQMAE28?6:tF=8LPqYuDdOa !!;N:#tFf'u;nUݪU[WڻwHIIAQ$IBedYFW>N`0(сf.zɤ A~7v<~}0ٲ'NY9z(f9DeEa7Ij׹{JRt_ 6\SL&BgPg˦Rx^qYOz8 \.Xbyyl(>lMz=^ii&U]ף9?#ф`h02vK"Bf͚e&|̺\YV%YVwb{^ rdp%%R0FRSЅ@\~t]G,Xu={BlڴA[[띍&NZV5MN Bu$'#ɈVʓu& jꠜ2cF\u8<@Q(id2=Vc @5!t F!VkR-d%mGJOY} B'(<ܼ)IŞF.$&B`yN'<9@R^F$i3gܹs1ɶmعs:Ԡr[-vO0lu ERx^4]C`&M 3z}oʉ'hii!==.]EG/~qk~,X&;%oRRUkBeaK`0ӊ{c~\.TUU Koր,%]h!HC2!vrrraTUE4!IB(sۤ22~ UBAlv3*QetM_9KD $a2\ dggGi?-Yu]' 2dQ^pP(f`0EDx`P($yaYTEQfJYmQQ}Yo~lW$d¡0)ӛG*xFuꨬĉb00&dH KC KN>R^^~PдGynˍ/69fΜ-sII6,V҅E?d:]EPC]].1b8fGKK 6%.ڼ]H0`xZq66ijrn޼YHӧ`[vfe/:z8@yy9MI0n8~dY6$IDuj/_kFJJ.Yh2މn%1)}jbM~8;Wz=cǎiv9'gMK/}_Qal,amA߾Q_eʐB9~86TD,~t/G9[ Y]᥶o>=W}0uZZZ'Z9KNxWxBRwg~>cƌaȑL6sń`Ŋ:t$l6,st^5ofs$Il6#114bmk!w<'kkl {׾9gΝ\UUYxq#*lsd[.pkni9p/vǠ d'Jrr2ʇ~HMM ,r[0L> +|>BN>M}}D,d- rSҫ@ PEh… HɺE+>bś`a7ϗ` 5-%Kt:ɡ?]ө(Ann6$q8u#Fk֬AUU r9 W/DKm\nnUԫcMI8t̙3Y3?5FLb?OL$RQEIVW8|!fvI'8r8<:[ 1fwyz2 yKrߧWȑ5m4ƍǘ1ch~3M;Ψ( `0HQQ1}RY+ShR46$$ deg=3]9rF%~OVݞ>p@  yUUs l?b^zGӤd"' s8 C$ց(Jvލϩ9+FT/ѣ\i7qϢ5|3gE3d{n̝;G<w[sl)//ejNQٳyl̯6nܤ~M~=@@_f\ -o.$I)))b֭ᒨ>O~KЧM}]޺[[[ 耾tRF|>}z\\>$%e_}hjjBx6sƘ;-7[ EV:;4i))Qc2gʔ)t̢Jrr2B'O`0駟)333gy駩nG%Z6׵ci\j³9DoE͎j6l#<,-21{IJJKKKc)++-*bJKo`0PV.{BohFRǢ!Kb lځbLNNN BpZ[[v;3fLG4غeKA*lݺuŻn*qjJ00N@XB%!H,!z6l`Ŭ{qF#G1O%t^}UfChJH]zH-[^j' EiC{hn> :#g1Ϯ}Liz?<,"1:y,$%%!I-lc~٘؍e [,fxlw,yy3>TK$^hR\~sK̇TEy&w¬4͐zܻӽiB%;x`\>h] ` _Uϙ3֭; U[87V&SUk:zqdt3X*7\wxa}}l)ڻCFPy{ SxKa_#/YKRmN2Q Ǝ݈s Ic<4QoƄ# ֮]u/\#j.zpUAط=ljտ=.lݻwۆMKJҌF}ҿJϪ;(?~62]!ر=kLYB2T6p³+gi8N[z:{OjIMMEUۣϹ3!%|<[{ޓ)yv*rQC/ 45Ě5e|i>z*5=( 3{)C|\iӼ 5?p:HۣQ vOզ`+|Gfb0ihhMMM -aO5k5:}owϺI$e$k[Ý- Iydr–ܗFN1W׿vi'{7ouFJƍǎ#9IENDB`PNG  IHDRF0U XbKGD pHYs  #utIME+6IDATxZNJNJ T hpx&b>YMVYOp".D!T$x.vv\t?ɊssbaaA8sWbLlF|&Cbgm9 qY2#h7c"PVt]E5C4<}4}ii ~lL@Uا(Jdz~:3xq]w*dg|c QEI ˗AL*0zjH?sAzMZwww#nn0<;Z  kRv1s(0BMei_TDyeYR䥲R)jT?"W "!fHzc+B =F(Jooo#NWZۨtMD Y@(MU*.nK+sye)xqm& *{z,œd{:j;Ӂh4 MP\]R ]h6a( e *!L ֻwM  Xƽ$MS ף(e_ۖV '0¤Z ۓ$`Xzh_X0ϫUz=P*7KN #&*A .:|ټѐ#()k"B@1pO_;18-meq]`0Ơzi>i`%Q?> djT7w3y1E 97=K6 ll:?E=َ#`sLlnJ9gg}q1#? -7*aླ=?=:c|?&RM4???iIj^ǝ`wt:{/ݸ]巶oX̉yŖLj @D uF錰1Fuc!9`*Y 7R8 9⹀&|AaOfx| {h!~g\A錬#"nwD^8<^Q>xfjXdU Vp޲"׆ٻ?nO.dcAB6ʲL.Kq+$'ZRLo,KM({5|KVדdJ ;;z g`N+jjiiBF#:toN<=̪IdW Wqp㨵n7m۶ˉ/R__DYÒ9>X~=E˗=JzZTg`3+fwd#iXtH׮],J{`S{ɲL тR$Bߨڴ-ž={fD2L^Qܸd5MLQm`DxaYY|BtRNN<&{#tv=Ӿgڵk|NE?V+FFF``Z1::XWe^@ 8.&# 6-Fc) eKQi```J/ڴi-\Psssx2MuHl6FFCH=q}}t}Q}}=effjyQ}}=1m~?t ْ"p$KD7lؠHxOM 8*޽ 'bfIDiŋǏ+G]"\b8u)./G)SAȲ-[nƍq)Go2}g4ђF4``έ (Bt:yftvvO<:(* 972C#===qs=GJO>$Ҿ}l>G6E,iP"颹F*#1رc15aሙ%?xɆe]) 1ThYYY ttzu3uwRK>}^7$ͷb ZcpYhD/. s M T?*Ay;0]oD6pKkXt)Fϫ/_k 7;y F_ ,:`tj[5} o}x;p]e%϶x\Q+zc`zaxW-/>؏'`S-E?=:V/V,"MoXu py&'z!^߿S5x|à-Z ^oO^ V Kq`$hßCȿ>={=._>OEJ.7R=]#/[=!^⼌8 [?gnPt(TIENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME #'_IDATxX[l\GrΞ؎cg')vZ5T%"E -V+DP/&/m_qQUU"%+R$@QCm|݋w9g.<86e3|?ְ5a kXr:英sqzmKߘ]U<;\TU1 '4>)-sF*cNyOJ>J ]'jyR=t_ ۢز)ԮɁ?S_[A-g9h=]-l&M-ҚۯOOB SHJ@ئnAORcÃvD\|>qWJDLm-?Xz>f3dvJ%PTMl6b*:544')MeSv2IB|\.,)JiB)X__DUB,۪ UcଲrEL&|>eYoW% L8pgˍH"vA}XB~]fcY F] `0X} .ءUu($ؚb<=S/ xgؽuq B],RreZq1'$JʇPs;ZcC҇3Ĭ‰3%'f 47lVB4{;hm\<&{i_*`'!fUŨ!&k F=>rOKطo&~# Ls["nBdklZi4j)P, F@9' NDcF;1>mx wu4~-6p/cG'EhbGI ϗ@k$ࡿ֏w0<<,o| ,h y 5>Á/8#~BOرcs]&04.#8[?~WX8FSSl}ȑ#|[nt]h:FXRjUhD"n5Bs7L.щRH$rɲg^0 N>S.u]C4 x<Bzzz~W ۷Z'alƳwwwp2J}P( q8΅ΚURR >+ dexgaqzq$o1ƇΞp6WM@l^$ o: l%VÃfZ2s:P  BABm"0 '| ڤ~sJcUgd5z??g R#(.q 2_y5LYk&&ܰ 0:b/B6ۄJ982K7_$1_ 4/RPR#=[@Y@H@x J@ )0-(i K(hFs79 2|׌BU*%&XQ'֏2?Z/uŰg-f@mߧ,*4\Ɗ'+6H%,Vu2`>PX/T+7xLZoߎb +9603o 4ai]KtD+"*؎D?X5gu K6/XRӰb*`W6B J#,2#d(wOW5 >Ux;|NLp˲F3w>%*洶+>t@Xǁ %.MKq}>{xw@wkY*ʟѹyR?O}ʽd5>OS{mq3v5 DcjZVh)P@x"bT,HucWnzA@ ]sT0[ݻwOl [4zmXC<"jDl˂eL0L , L@iBMk7)!֊\F-#|zP](Um_.s\`鷟7Da>B2eF0D4 R A*0f՘ }gR#P<9W++vHCoۍ/z 9G T@Jh)]̊yUA2] Z8V4& "rʦw4NHޑ0#l?BW i6dRR($ *#8B`%>~P1PB@ hs̞L`cm҈g"6S5Mn!xi7%LBpE܌Zv/>|+a͊I}~~6Zr3h D%wK PB.)s:C}a[|(/y?e\,Cu$Dcq$$$ ~~yU2^+[Rig>QKQ92EDUx"4RT WAwPTU G@ivЖO+mh%K-hD"FGG]}SO=ŪUXz5n>l&barG9b)-6bQ(#Q*2'AȺFJBD)B>*-EL&tpvmؼ@g. _ࡇRUk===H)innfѢEBi>ϰ-=8U5 Bf#E*%5l4Kuɕ̋Hɱ9P(<^P>^>G_C >j%`(ޅ,8sޓ~ׄBT%Z_yHH rr r.Z,*3:8';ue 7'+m6V\!8hmXeUDd_:@jY/OҎ9p!/8=d#< @+#ABIr&rD.otM.3r=z982-(PZa&~v|Te bbhAiR?jZXjqqF>tMV`ݺu*?22B*4MHXE8[͛7hկ~rZnvnai&x_-R}6q [?DK p:PN~g qjp$V)$nI[{R_~D[uVjjj{Y7>c0tc*/u˼W}+HOї=hmcG$j#ض#m J{ScJ)ٷoߔg^{5|M˦Mp]wJi}v9"_hPWWǖ-[x9z(7|37xvgرc!R]:c $[Re + ڈ GׇGi@y9 .T؛2hv'4:;;Hy䑉O}S;߲.AߎV"nGR8ሴ2f ˎ7XT5Ê9s|n.N ̸!)tPޔ\Ɏ;YP(Lt%\DEńx0+jPDۃ^?l̡KEc䚑Ja(#47T77M6$=&% ]/=3q$>o<}r8p(yϰJͥg}2v%S]S3<<̜.EU5,Fжt]ܮvCBvXuxƅ# L]WtW^BFry=C \T ;v}u?YV[Y\/~v/՗=i0`^S eJtAy eZ Ղ#"6f*dFΐ-,Ae{W!cb];h];SUpn#@wcS}YZ);ibG_\cOƪ[I‹H4`TG)R#%DI.Df|/?:bXT~zJ}?in sdj0~?!a^kTyxp%qJhQJFJ 1 dd-88&SO1Ih0z7A};p?0c.x6шI}L-p'K3xlj}جS}q̭ªwU HR!BXdksW)7?˷9GGsٝ=~R.uy"Dy)$xZ"VH(ePRR,9J N,g=t<i-oO`wgE00zy7 ν MLvAK?Ґhm ,'% _ iGQEyp=WL'M RW/ŷ 1W8gb#+j9 @ǡQ2hJ!=d,)<{<'([~sgǯ`A{v\h9<~*GaaDXM3򓀅 $xq'!߃ ח>wv>XfBbH&i-aq젹?M&nqx)O` =eVД^?е1wlu9']#3|`ጜ7WF([}Y?eIENDB`PNG  IHDR00WbKGD pHYs  ~tIME- UIDATx]O0i  K,!υH`hYd Phi{^zfRflvЇ4Y߳(Pd}O@Y{Ä#לNd2`<~PCRbXX5rZBtf4ɹJl@k=Q,^("^>;x\ϖr  据Zy~y1{4M[ooo~IjՌlr c|ֺ8̒BQ詔2vAD,!GH)eYZz(Q1fo!cGnTJ )=˲õ2q9Tu/|N`6ȹ}݅f_V0H!^__1.O?1fRX.{yy2Gh$ }=h4EH97 /2 "2dY6֭*v5777&BjQ/YFjVJ)Q=tu@W]ROF;dYJ^ ;c ZƘ El^:}o%6I*|1+te-Ȫ zNy=3I0ֽ]}C9 "h:VZ.ʲ 8ө ù~e$.é/\N')7oPB \__[<8C$nd^yeM撝,z(CF{IENDB`PNG  IHDRw4HbKGDC pHYs  ~tIME.jÞ4IDATx[{\y}]0 QU$d*j--سIJ𚇌0BDPؖ!&M*ZA"{&0ڞ8̽w̆lIG3sw tE]tE]t@Z4.a ` <@a;1.< 5i Wrq7 )g\򥭄nM%탻'h^~V(9 W>n~fC. o]3 y+|LJ2G-la~9Zj#ʗNq0 I2&Ra%](p47D"*PDDNC ): W@4(^6VxΠ$ N^{:ݎf~" +%"kO4(\54jPx PPnʩdL+>,JR d҅M4//T&m7,AmL7u`M HK vk:Q43tX0(R3'04T!~|.3],-HX :#YMh `y۩8ehSM,S qK259Ӊ`;ZAWf`AEx1/G05CPy/ A/ C;[mICL$̦H?lot$L&ß4p;=6cuܡ}ӒtoDoO?/SC,y/HgH9Ip jo?0΋M]dƑ xti@e4Ƈt|ha=4FG:@RДIUz-#,a2kc\CC.LWWH"9Apu >ZY8QO9jZFa@| meC3ifL]X-Xglq% bvAl_ ICqCk\73o `h54S,c/>/)XF6H+|H',d ݋ej5_bo\VF$24!v:/pB,] iHFhxK0;,g)A+<;= I˄T+- kktԡmpzy___8?:owYKiTƅׇ /<o಺78jR_&!{(d0 (dZ2AFQY+ y Dth֣K8LxzWg̿?]ܰAF2 s@ب>>xK`Va^zͧz5} ~m 0(YKىgFLBT/Q$V.c~^rikrO\;ո?ώd/%$#:1?6$ʤEh;U5/uxBbv %R26B6 yab.5:Ǟ;?}ȇ}*_B>_ƱsQڐ;LJ #wJ1w,]Rz83.o` w7j%fݱ岝:y 4VosySە**4&J<{ww Odޟɓ_}ݟbth|[R>p.Qxp޺+%{Ml+јaG>[ޞbrXTQ*وȮsE8Ugzc' UBg`N/TRCc_ܙJ͞(fQ_/W(T~^X+?Շ$QS;67w4reX=ۀ }(ӭU-< H| Ax@l3:Khp]G(%3e۝yp[_fYR?h@MP;^,a|3zjܡ1 r_YӍUl\TdZlQ V;_JJ ,#{@kAʗjdȗ\6@?`ത~ hsr`#@ 1Fwbgof?d; X^q] +=^ _U 袋.袋6X"7GƶH0 |2r"75BQsS3*#||' ` ?L f C  ţ߯ sB&GsSgw5< ~zj]nj IoK P d8E5) od ,.0#cSw<759+e[yӹӒݒ bўER֡4/IqڦwZ&.K=C;Ġ$gsS4ߛ!d5Y@m^Xey&FQ=#cқX&z)X¥{@NfM=9tA(hGkI"fDnj24C5V !\4hfK=@rekplWjoMGεDiJ{AO~/,՛ޕ͙MMNFC&&wE j׵o]tE]tE]tE]tEmIENDB`PNG  IHDRw4HbKGDC pHYs  ~tIME-'L#IDATx[yy@"v9pS)8xWWR&!ApڎsP1HV` s¥,]W@#0v VAؕ 8夒蜝tϼ9V̯{} 1C 1C qR i E(@H (! Bև6OB9@yCԡ|wB/}zl)Cw~߸ JN)/M[nhا$PȰ7woF(R0͓ lo@ߢk?O<P'GR@π!iLq0#N)C `U@塂IB|B" z:P@ jPA} JAB/Bx(d>xehZlJ) 啡|wAYPsc6W BI9@AU( p P~a8I(Ɂ H ~ Kf}FIT~-TLv'~M9`!T@g7p0P~} 7@pƦ['A肬W|a?eo`BoPS\zӋ*QH:}@6~M9@풵ec G ʤ8K0>m[3ic.0%lSl?z|EmZ8à"gp!`r6F~D)ئLZ0S8p, �Y `0yߥ8cK!:`R 4lJskEldi rFXn dG꜋\QWbO>&mX❛|`:`rLX9nZbv$cw#@wV9Hƪlf=>؏m,8wSwO:\M)l~Uƪ,(++*ۀc 8fIȚ580Hp-eI4[;lG9bpd#/}m峦*ƈmLdo= @:@VМMUV9V~uc#c '\)L**S c 8+(5);dpCSG6mƒ)8,˂)xlceC0,ڦdiaG `sA>3a 3}%t a ϙss\wWY2ڕ >m)8E+-XjM7?ʇh6_)F6 o`|gJxFn5e$bLцeL{׮|By3YBƶr\T;=`9s "}Bˏddsi6thdzߗƈō`  7Y|tt4^l۝rIaqBǓp2S`UƆc~n"-hLO: 90~A'XKiL~U#DAT^isաW*$kPHAu||M51Y0E j}b֍H n"RNm>+M^a̢ Ƨi A![hrѥ2AAQ Y+y5h:Htцnm: A ~|q-~eI@{b(AzK. =TxsY"G.tӹ?-Rݰ_W0}|/f7|l. Sp'"^*-OKC:Ĵm:\ $@*' #ܶ/ܵL5D Q(F&^;~RzeRY[>O@uFH4P/G4ci4B ii2=u#-ZD0pihfxM>2SyҠǯ/eCiyXc&3a\,S }\sCV!DOl\P`עZڂK%1#&P?-wu) ws\_#d4EfyT:]w}sƵnԺugB &p:DL sR-a,!]WciÏ5HjD|HdcxA2HPe Ds҂KOeԐD/"TAr,$5oNXsGc:#4GF|Zbb8/OǙ 眦޷ƪbDTfKf.-pc#cP -txi8Hz4hԴus/+*hF;{̸@ hm6N>Frn3Y;0H]ޛƐY5S i=z2+I_Xڿ0X#~lKYu> 0H|_U=+uu nS!AirV jB)C׾WځxRCG|xhmfˊKx^Q|?EJsku~w})~uk VܱUr;7:[ ?DIfގKocgk?OOІn R)r.QdpMfoZuh^}ڧ{U.מ.WjT\T*.42%&zz݃0$Z_.UpTLا-t_6o^\ek.(:DP_3K^?Xěחݬ?mCjCpU?)t[', XR/.MqF'C]3dگ]lhׯΚ\?|©RC vX/OLw'M^QuH.RJLls#T1BQ! @0B*R0 ܸ{Oɚȸ!8'7W8 ܱ\pd]:޷ٯ~&H}qxyS*R.U]J)0JQ/&HۄT*eMA(a $ ή`p )n|]7 @TwfmYB J`]|߈jvAE)?^иE*&`)%P!jZ ~B)@0 W4U JHB:dr9l| j1c$2?GQü;gHS0>rx'宄ۥG+!b![.F|m8?6F`1wHA'uh綧}0;UxOkoV.Nv:@lêwyΦ&: p饧EG:vHgkwO!ѱa +R; lKi*X ,h*:g ea"].pP`{0@N77tnikz2pͦFW,W4l:)B-֫ո tzz*"$1ӛ ÈgbnV櫓P,ǦNݗhB>חo90vb o ?Y>2y22.Qf\o6㢶^m6~X kX=1KD/Q+nGrzE߾}(?;1kllݮi^֞U'Vg5àP)c'wk~?3m?7}=#KHD\ܦ_caS3㥚4#PR7,::qzhH.3h#Ј`K)RƞH]&voJSc&z%m+sHr2 TȝEʪhz~dY|[sl65P7xZO/~~c Vr6 sO= I~{f/~;m(HyϺeiOd'&'Fx^4MGխ'NMm5$QjvнI0TذВg>6aM02bm `N}QH{'.9H*Kw"I"(!疶keWn:174ўJhՀ=LDu #:H9jZe۳lR1O&Jn;-Q43P.Ləɟs.dFZ4ۊ$]lX>OJ౧aP%ڔ@(zv Mn/Ge -KaP, X& Dj]k 2ER l&7Qq&VJN'Wt%C=&*ܾ{׾[}-rWiz*f Bp=p{|xE oニOMsp|L΅grҘFD^/֌Wt`87)"-먙n 'c4榦DчX3He7-Fm\L>]{hi[G[ėg7~]+4FtYa T͠*LE:/(M-<F@PyfR.l0Xv@)pvXy}؂j>шlyY `+ӗSViѶ:7oj%w#{8"EaGV5XP)V6 +(2%a1XOm[ij`D 9R~7OPP51gD[#X,XiZ 'j ް<-m'-!NY9hSsLX4syC=D7n]Kǎs̚B{(B/#Wpd Ej*!W)bnR>Ag{ۚZP%L^!,7w;߳}uXi@z2S!J%ZȒKb<}$ OqMMс o!gX5SlYjQYQja#jnV{a `y|#㔒|ï+$Xir- Y6t$8g zumyw]=Ƣ৿gR2S[AMxs̿C?A^3i`cQe6QR[^L>1IW[/~##(<D}!HG[3Z/ճ1Ո%h$kr|ɤ_OD]gBlf6#ބ[躀h؉JqmȖubMUx`NrCp迟ub=Bؔt!/|t!&ʡxћJo?59Hd:|df~.ULNbZn.&gB !KqPx O&3ĩA??zau|g9ImCNO(-p~xt0hv,Ԓvy#[ۇzmIs5RNQ('3L$A5muRā_i$AfOlU{oVx.Mg(ii~UB+& m#A jMR*T([ZtuۈcZX@`myT+ST!O/cc^7ȭ;"Cwoy㔦]xi:(8T+IPvqۦjCZ%v`rlX-%@tMt-wóc>-Aࣝ[;/u-z~U\;($$͢Ӱۦ/f98 TU`r-n~_UҲz ziQJ,;>)W=^U‚3Q8% $Ӕkӟml|8swH{RH844o;ki|cU"WcIM̶q\t8+#R`٫G][Co?x- A1mlgKW5yRj8e^jZʛ5!m0Mïk64MD~˽Fi6m}n_ ք4 Dӹ]z8L2!+!,&%@BP֊*VXOl]*^ X,*F )K&ɬw{9d. >AO>s?==vNjrsA0W1^|6[иZc:àg竆,ǯwļ/^ !=H|19˗)y1?/o2)q f2{}}QZ:Łv}4'; :#;/Q/Im:6\H[GCz'S:kA>3|uS 񇫮(p\UUH%H$OG(pFy[mI@8F]E0ƐqƁ4Ο?1Du{f%1vfĺub Bs/`ʕX%:kio7 ЃLxJe{t/}rPJSdUW׳4DUfPe bЁ'|8y, l1Φ8L0G2Qk^ 1`캲8>9>|804}FeP Šw`Z!"͛gώo2/+(rV7%!jE"*>=v4^p(<.|q@0!b)><& .[oGbF?ȳx h@E PUBYZM&WEqx%[,X,zBcn--$<U 222Y%Bp- ++ 10ƠvqI)E<ǨhcɊYV:\͓+S 2.խS`[32BQgֵ9FEÑL"XT@0(ati.a|m+܉xiuH\ }=KJvHQ}2,0_T9`X-Xt^P~|WxGnn.E$IE 31Xj,m4wSZ#@)Cyy9qS]Ҧw$} F%ڪj@9B b s:QnqD(;햸јzr=N`0 Ǝ.IBAo[gE9uY[`ЧO$''w Vx Pbhj$vjRzAv@O9j4L&s7W `@8xPǎ-f~ hlRJH嗰X,>|x-5Gw~#Dؔ;٫+QQ y,X@ٳ+`YP_}kׯ,ÇcA:u*&M9sŋBڊkرp8`jl6id%)O0d|dg)3fh8{h4/= WWS3ύ?v{Mfg$%lBv]wh4ʂ 1b`0TZVVF8bv| zZPOf3yfddЕ/@+fN/lAyoz) C4EMǼ9}ň,evL sGUnաAIA]HIIArr2DQ-[P__ގ'@ӡr.\4߿H1;wn/rZC!\js4s>q(>9>~ ."//_ԡC֘SF+ RI&C7ܽ|"NsLף<,YnǦѫiwFQY4Xb1i&E/P(Ģ(|l߾}œN'۵ks[X}}=D"4|s̡-JM( Btٲe]j$I/ 6PHK/kCmnn 0jJx!NDΥLEm!L t^ǠAPQQL 6 fɝV̚UQGOzzZ4… +VOvGpF1 Ɗ.?ǭ{OUw/~ p~`؈%終"vmظqv*AlFQQƎ(b?w4ⳈD"6L p1tM婷Ӆ#4BƑ=fnwOg ''Gk+u B!,^XSk`qPUnv:D^OIf۶m|>Oç<țdBU#c#~۷'OaEz_GYDXVBI@wT0xSq:ueKdm}/\GArOaw}矪IJ_B/NS%Vl6`0 #tSa#`XPέđ/!AӦMRpO 䪘>0ؼy3g 9PXfTjպw4aW9{`\_OgVSCU&jw~BXbO_Hc8pSA &pƝ{h.]*xs8&JۦnWOO\[FkA> Cn2C RaEIm*ꔅ{o "viFl}wJe8@d1}J3˲.ZL=X;@BkD{0baL6Cvŭ{HHx{gVZ`om?:6>46R|R Pm9,{4:xo㈆U})gnw IENDB`PNG  IHDRF /bKGD pHYs  ~tIME9IDATxq _a=  ǰQuI{n.K؜Ehwyc8/Y{) c<#g(Gέ֘gN҅R4 0GJњ-k1Vۨ"8eS!ɡC)1غ2uJ$:rdRk xBV H|fHMзݍՀE%3g;- ,l/,84VD6wprADLhREIC:?@%X뉉 #+WK$@'EN[@ +ѣ^bc$brR{މ'ɓS'A0`c2+&ӄ"Ad^ܹsu0"KYײDd$\"IɆ"N?H. :2H-@*kkIaF%5&F41^Ѩ&D$I!wlzR&yꕭ#b.K R5/{$iXHGyfor)FJI0ٱQM:ٿޏ@ʎC5-IENDB`PNG  IHDRQ+TgAMABO pHYs  tIME cw#tEXtSoftwareQuickTime 6.0.2 (Mac OS X){AIDATh噽jQy>yZck!gu^{o]?9֨ f#Fmh`2bf+zLc̭gѷɆT>>d\4:-zfLS?h;{f9Oij2庀?L3$мͤtApәp)-r>t߃ ? ]dЧb4w|2?榔^gw!Xt뇼_̭sk9:K2p kV+=\` (`B0E"`3Ȉ{ߵ~z(3s]л%DtW:jήޞkKF>R l[v^G/s"önkAEn$ɘ{μ+x=;/9/,<]:"$ڮ)ݦFX |Rbp3X%8")P/2¿\qV3\ {6e bd 9.-C9NX/o)8t %#1;\9g:=?NL('+ QU|F*  BU\0t3T"" _*9B=p m*0)T(ATMfv28 *V)٢H[ŗԙ]!W3** A|E|͟XUkBqCu(D\Pm Ԇk*C{B֩P W` GP*tfQA$P^%9ή4'S0ЙΞt1T(UxTH:GU{cm*Wv?;X ԗōܽX9Bw~2BQ. wu漣VV GEܯC-;Agg?#'v4Lfk=+WP\N>_b~9!JHšB+֗cu2 wcaM~U(YS-WV oY)t,gT8z3[.Τ>x!Ů*02шJT#љ_]>❻˖kV;"h.ׅd䭹LCۮH̓A$%oqաPǢO,Flo({9Z T>eр|gePiHDUST1mgʗ ]:tgG޻=VTEUF>,=Ǣ_¹:o)9f~bKƫGc,) +Vg\ΊtZygЛIs tf@i*p(f2T3FԆigy?;m9 ?n}i o jy@},AD-=GonHћ-%[k5Y;:jLe L^L L#A`J Sח°yּL[0tn`K8K՟WN~q9? `oGMf ƨ@g:CTeJS.j:BZ5#o~B1 ;•g"0efbLau53?,Kdea{ R"O{vޜPOLw[ȻO8mՆ9[JnG1f5z3 8ǶdKBg*E\g+Un>y,z6Ⱥvs8$-"u j":6=[3O yWcs~l}MgkɜFmDt< `YP@L8rO}P$yQ$:0S_B/u:I֤)sLEQd@O(Rܗu̙݃<~Ӧ7t`K""`B\ `bm.%.977w3-*2j#*s@\%t侍Wq&qp&[RmLgp®SVݨ Bڟ8Dj{; B8!ƥV~k7ngy.ɞ13R;#X \ dL 8Bָ'1$P 3𞈈AkF@T^Yv٥Rpp!g O<<$ ԝEZ!3Gp(ĦU#JA@<{v)b.WS}@%d_e*8$g3˚' !`C"{p Nr:1%9¦<}<37VF`LǠ~Ǖp]o= 5ڜ8j%#@#~ @Y@T {[q-$HpHpBC 31xH*B?@.ثxV2ALq%\1Xt{SֺG# Zb7t @W=UIv#'*:Z\^!NzJΝZO)- OGGj;痄J"/ @Zn>=Du ;YCC+k AhT "u`@x  5N KU)5P^g(J'>"y#r΢,v O uKR pQkķcI-wYQ? GWWX&%#f1Ҍn<GUxU:xX] G ` h u<De$@Xn2iK^5}7˫&f ȵNǪԎvRe1>" UxDn8IUj/=k @uqLVlДhE 1/7v+)nۂT +PL$5e"==_&Z?eo eE<7u[eid,)r,2 \oFrlЎh$+"t;F&pGHty"z߱mfYqo-l~ץ66ؔMk*+"hk5ld*{h9pfoapAX  _՞J|f';+H3<|Zi_jeYVơv;3pr0'f&sg8?\B@+(568Gv؆h49a=\4q,oy޹ZSzG4%F?xrr"EԚmd* 0hMy뾧s{}y:9]zzfKTp Īs.8Br`nrǶ_{[9z1XF!A&wϾ\f&BlB?yk$ 4Z6}M6X2ULP'5{r3щ!$s%*XFq dǾήE*Z|7yȫƸ]Vʆ. n:g{!n--g; MκCI5jM06\vgmKB3o~7/ꂻun}@2T=zsG@ߺF?{?;C&w0A@[}x~~O |c:7le00 f$ERi0;/qY\ILYkcRrQxy x>4*I=:=TkZy˟&"䃈:НK#Rĵ՛Y~|kהv1ƲuWgRwf՘5kݙA"*^`0}ֶK韑aBj)EZfG9'E5w)+Dס9!DqL!at:C`XID?(2wrc.o5W+<˕Z{S$fSDN6@dOk@g򱡡fg{gPRAJYI\uT#%1R08 =rpmsT !EW2Fu޽[:۔iE0;z5zOQ cKjts@Lrα CZJ 1<Ɓ}x(k_˙X JUιmyYiYeMPzFQ%<q] +,Z\0}`S{g0<6 )0:ɞ~ w<^>\5V:A\"2%5FM!# lR]U_6ysX|^,Qaģˇ7jwF貨J.q8oAySXiinB,KYc9nQkPoomog MZ n1TvZ^'> BGꖋ7'?ꌿ ~<1(K\YV{RR HX=C;1\PD#飻]nW>uYxa%^;:+rgқn͗/EYhv`˵FOkr.BR\ Oyw ڧL [a½pME'|588<1۵H)8gP}z:8h[}yRk,2H:)q%lpG{=1"C 0ƈ !9?.KVvE Zm~ۏ1}pBJB)Tyg.̒ٚt,fmf`D{58Kq{|3i٤qSeN[8Β qfEiJ ws @Z~ !1@ bGPAB㊴xNgt)-?R! %Q Hq_'(FP6IENDB`PNG  IHDRF0U XbKGD pHYs  ~tIME/mIDATxMlE3aWm vU!\z&6\$.UzRmqE-X7,Fzm !. P a(R3ֻci6vK#gy<¿-ɤR*;w\0 PJZ1j#@vd29"MF˲z )eGmHWEtZommuFmXʼn'Blie0y@yաǘfyM3p< )3XGq2B3gA3l!lv:uTtHcׇIgsse iQ - máǘe %!pڌ:pݪ/f{3S]uw} cjȪTBw !Zk2ݲq<٪C \3TBjL]8u._,//;++^E#D6ۥqc^G., oڨV"&cT ..B&m^zeNܼI¶Ic}1_~!H`}9 qwP11:ֈW^Aݻ!X'g-? zP@F+"lֱ0R13s!Yի%"G&( kע Qݹ\X@LLo&;;;]progress_first.png@sdss.pngA server.pngB sidet.pngC theory.pngDupsupdbootstrap.pngEworkstation.pngFyum.pngG fermigrid.pngHgenericserver.pngImysql-server.pngJpostgresql-server.pngPNG  IHDRF /bKGD pHYs  d_tIME,(,7IDATxWm0 |##Dݣڣ y?в불C{&Ē)h2tϗ#qiI[ϖeE-ߝ28{ϞsJ 笚!}:]1W.` R&9;D8^tƯi0giRYIH)68%&>e[>A{X |=Zx^>,+8GV|>6 :NWQ)Ak_; }uKAW_zKVN/~, IK)H?:IENDB`PNG  IHDR$bKGD pHYs  d_tIMEܸIDATx[ipy}=3{ A 3 ,J"iAXN*)Yr]/W9q였)Ns [J":N-ZC"H H̒ !,vwˏٙ p9vY2>j){b-b-b-^V[o` @i0X<+#ns<& 28p"8ٺ~#'1-C`maLJuS]w;DO^wy.e$' +!` (+ F <'h"( brŀBt͗~1C=Op$3  c ZNs.%Gz齗NemTД]9cf7^ 4 Nd|]7aNE*q;(l@(J@ܡDR@a":\ lj#IGm[!uM0ʿQʲڑ dxtCƈ{ YŌWGXPcު.n+{$kNyyvC].@h6$ܬD2:`oy 1Qp뙜~yV2KnxƅƩܐ .٦D_5!k@T@`=GIX߈1uJ@lWZ"Hs6HJۯ8aI $pfrYR2T*CT >* drDnyXh\%*ʌe@#$"NڇV@yݘ㖎RY"HQGc @/v66̌eFQC#?7l$ Y^ٞϦfҾ3q ~;-2 7wYuCpެӵc.@z§&/^-c].lŭU* *Թ* KDҘ.y|mOň/DE $ց[~!wOIJ.Y=)˭ԬK: |&w ̌?oŘUO:,+D>Y*A{6v|K SB#D;үd)f%zj_%((nzP=8GT%ZxuMrՒ,V)K.TQ01aOAܺKyշe`5'`6yGՄl=*糉$ 5%5Ë l5o ?H8wSJQsgо+j1wf(w_J.1;+Lh.!Nx&fYiw=\w,yH쀧O9^42FpC)[\w٧QR> n7Eo,+㒼[%~$E3 89LbA/{z|@El}Fxc;gzn]pϞF-ESоo0/EED֦}/ H96-O;<2\Ff0]rYi 0V=Q((P ;qζP}U[q!*C"o'Fn=qp*eR4vqrX3%Gc,bUYXS{R$4fs{P5׮nfz죩O$)#:S|U-,pG&7_,l}N  0 \J$/럸slElCRFs}yP}O4tl8PΦmKC;PeAD\wᓦ!i>Rx@2 ^)inMIrk;0CY&5g\ +e>uΗb{b3(UXC_e~Iu!tf6/졗mJtS o~~f x!e2OlGw5&~oJlAoNٸny=L>qrg"+ )3cjhL1I Ɣ k$Vǎ K]^4+M;mgNȡ{W _ȮGkꮑeCLg4/IA'_HW2N9W3ˬT69X17trO_ݯE&WʺZGZonkn?ؼ!`xyc`t݀RHKC"54THLZ";r B`DBjpkr@tiM $o@Ʉ`)j.\\)?0„$5e^/e57!- =ދ9X<=]>';yfԡccsݱ[V!)P(\/P>6~9#OiGŪdn?~|)&:7ǪV6Q^+*I-i Wʘ䬖Ξ'=dLT(:gk?"e#38sc^_=cT!9Թ*tjYRÌ@ _!y ɾ GLPuK$w)kY+o<h ËURY!Dg qweJY$V˻6׸WAm}ӷ@ Iv"gLV7&/NmIG=^{(r_@In5g' ؊ )mcޘx:sl޸la&DXܛtw87cgv"('ܮѓQ"x3Ocunx r^txLjZ`,Lj LwmDfJE#B,byg۝B%^NۅVSJMȺhsO"NBў@wY[P$x;$~afIq@~Vr#'qG6|VSIWo<92+ԃ?)I hȊ@d<3%Y>>%ƹA) ڇzvB>7CmJ[we3O}hpo{ӱߪö5+9;_D28Dz1!Hf<² -kuJRʷ =Y6\Z$8IFqэ )yBB (STH@EWVXg3J &Hvo}N՛-Pk~) 7Wňܺixe*l}LJڴ?08e+$ D}I9ne /d]`\#y\{!Z1x.ܴak( 19遧dã _J"sGNbQK$Bũ5+#i"/3J+55>>2xiꋵ|! ymT?ms pֽ,JC %"ʉewWmϞ>|`783d}gʢ^ۮ0yr@N9.㾗H,;䧈I+Ug9y&أ!ʞtn_zW@f֔!ޱ?gagwvA}P[͙Ҷs R&)m+,DmɹOe-"=p .ccAHwT+kO:Rר/ neLS~8eF% mǺ2V^j7G~49qB)`%C#Ul'5kOF9QX:7 "-YZB9Qc,99}:go 6í@::NjCh1sI61)sLsxp@j1]fé1UنnTsݵm= J Nꡑ\`Lvd2eE~{HҎ=`4%*¾y*%3yomc( 9tO]r(9yrk>pD\KT&+SwpK[_ LܙGc, ""I)]@$d%t ֞VbYp3f8nýj"(]Gs&sQs\9}KN~t61-e/޵C{Ś=C#1EZ,0PƹC+ReGϓ!%I)ry窒y=O5{&\nIKw|{ ٤$O33>YyICLMIw=ĥЋB BIi!_ɬ8V'˂,"_zYIKxPž:.ݭW#1_~]YѺs 8ތj\p!o{Q3,=[ޮ~t@ 0ë?~I5{ODޱ @Z|EIENDB`PNG  IHDR/~!bKGD pHYs  ~tIME @XS$ ]IDATxAH[%"@LC!lt-bt!؋poE{)o)ҾE[/}b]ڊ ݈}H!^ 5pgKj#Ms\6*T[M0 idn+WFFGW;lQVފ{`[ [9~oi'1cKBeKV* V2F&,̭P* [Lf{E{Ma˻Ko(iDZCVWSH3u4kk_0e سIO/>ǹ1m\[E|Xb!X=eLO!gaM:nbf6TyaFXZ*0D~yxnɺc/u=EjmH32rX[)a\ ׭`it% [YU[|<6kݾQBM#=9u㾬;C|ywȖ;B+! lғgST7TiޗVEJaVn_SkhW02b"I[٬lȊ>Z.+7=9`Iigf3¡}6}@3%߷Q/3\|_= 7|X#~:O<Жb (Ӭ̱ YXBsȹKhGa!ɘSzؙ #ZН <{ɒ\6K ^ X"lz?=J{fH[tYhy8# r;/_2`"#`LɌV`_{I]'g% ĭՐR\T?eTU `*;Fk?ahthM;64Wƕf0^CFVU&@ijɝ>fG)ZPZ fȬVpDaEv"Ų@[sF˵]`šA* LiEYF!Zev"iV`bqaX#é%"[/iF(2L+,T=Dϓ[5Gb+fX2eݕSAdI /GG,>BF7̌/%fImÖ?5Zq%䚏jc ʌj>ck=.# |4jfkw"l^UجR`4,-tiȂc6\hN}.*6jX".fJ`ǥGCVA67!_ҖVFRB"FyP6tc Ze&rj}ظ GHM_}Mpn v)en>6 6WUKHeF!?B+ o:hb8ѳːaLr? 'NzzJusCr?'2x\ C+DG2D2K{%t,D1yuSq+MS=d@+! H1$VV,M,,lGW;adX7*V/_61:7`t`6ɵS wn|FW( e>S-,E"HL.(E dUq; )ʶ[G<a2FޛD?nY8H&[4Wk Ȧdf;uz(5 q%d9(F2]+* ʻ:88+_dL4# nϭb<~۞d6,\t6D[ aY¿7ҥιWo&HYgf36sq%SqNʆv $΋mm<>DyP(}5Ÿ2s^oD/Rr0s<~l;j9^*CeH=f Z^݌5 KvF`<`p@ᣪ=pe@wUc]*J׈0 :/5z$sQ׶|G׶7K ϢRB .K VK#V 9xf .R\_FosTJ} %8.Nv}|"?O~^<싒H{B%Y д-' d2N/t`a9^ڜudž1X)WlR?B k#ʴYWf/H<}0 -x^V*c iStLPM1sH(.ne&u MJq(Yˋq<vXPAl+2їroiAv)B%2rN %jٓt&oC+/15X_yٯ0H7* "Qh)RȁуL3"}qEf8dcP(QH=_`$~H`NX %c?sQr?}V?LocyP(#lEXAw䁲m/Hq/ګqu M& 02ەkXT@YraIͤ 5uN(J` l ZlUm ݜÏV-/Q)L``uJNʠ5++O5t|^nBS(asp (H?h(Hr`@*t(06'I2'hbPmĉJECIMbCRF*\} 7MJAIA؉hXAhgO'J=fHKu@vﲢ}agZzC{oN?eT;+m'{G? I=Pv" >)H8iR;2Hw l`b Ш iLS4jd?V7bӁ"'¯8FE͌>ŗDjJey { [szF9ck,,/~5 p49?S+="*@W+<$/fɐ2H#?))K={>{|-n7H"W ET!BG5B, }vkZp}GQjG7Ny("kSd2ydee$%%02݀s܋~iQbҕ?B?GJ،Nh0oLOы':),,$r.cǒGIvM233])cHs ^`;J(D=,=fw9'6l Fl2jC.2~xr!:Ot zV ^J(YqPዋ;/nV+ټy3Ke=Cדl6oOAr$L[zG,؎BIf%1v!|:]ؓb 4tdŤ8Nŏ?H:23S! g_WF/`,@<:xy^/ERY /V*dns dժUdذaG.]JJJJf#|IDDąr*Ĝg(1p[{- n*g=zFx =]/^sG|yr _[_)\3 C.\HV+os:lٲ{$///Afdffyw}444Z~֬YӵSw(ܡT\"~8_q͊s=5lz}cNIf%6?Ə т.t:aX؈b8qը0 #//h4b஻{wEh:\E_c\s;۰ބnWxxkSy:Ys2b} Ϲ5&7ѳW|?GJ@7{Ztő-P>CCC4hPSV a ?0lirfz[c`[n R\Xݮky=dGק&m yBA֮]4a 5| QT]SY9RDa/[<yل]l"66tl.>Nq Di!q \!i\" 6MD^C6fO1n5K;.ks!eς#:::hn)#999]貟C޷v`=r E;\M%D6\#nfyZ4mٮEpC\F~U`0 yǤˠ{{]Ϸ0Ŋy-ĈK۵m~\r}13x|Aõ*^aRdٶmQW$W/<>6GPB\$sYQHS -@?W 1rȐ!bHA̝;W/Gn[ u8/&AO~+>"5}e.s|̧:{ *J !j?4M7ppo.C wcNyJp![ {;x_p}5{W;)-|[ fTBa1d֬Y#fćT-gB& 9Io5!].ܫ3bk!/AgN!їay Y%7.IP=#G /Xeee=^ᅬt شi>( T5`\yxw{i;7՗&$""sGLY|/E i׊UuͽU.4O92 N4) @V^ý^?&&>}Bw:`VtOw5,6I/b^b+0Ҏoq|xoNؼi3 CT*nEr Ma*MckA/_Qnxޭ`"|/~(BO+x7 a8ndޑ?1X&N^Z@II :FIƐ.cYŘ$ >p}鋼Ý~k`uEA˻}}ju`rΜ9X,^߯lwL67nէ cƌ-"xqap s~ u3Pu #H]˙-*č2DY`$4lprrr}L :UU 4 (wË7#s4fmVϒMXVP7J皃 .C k.6:۾ Z ʘ I&AI='a\.ԩSm6'MW(YSm<<Ÿ)2Up=;Jܸw } I"׭[0 ;vx3>zV "[B.cرRG1p@`>s/k}R()2 a ĺ"*|p aHL!^,WIIP\DQM/6)??QQQ!C7߄nd<EEE>Czz:.]^{kgܹ#tRacΝO4i k- Qd/Ңi2d'11sO?ZGR!>>* C aEEEܖj(((>wizP(xkV wn.fI^/\ٌ>6l`Ĉ*&Fii)jw}erL<ٯDFF2N ~q\S (0x{dE05a8-N_lܸ>`@&D&[o=\zStRkZ֞y>#>>]kаCaDLB]WFZ 3bDs%''Za\k֬ Xh٠AHkkk׮]Kd24yZFb#Gr=^Z?[\%F+6̶>[,OwK"##ZV김FUzߎk ( JsZ' b@ px^*5TYDKXRgy'O$#F&xoU z9jHs{p[e7o}{Qf֯.eۤFPʼnKBIQQq:9v2e { pQQwQC1~.+bƍXr% *tj38a.s FIo} C5<]˭=]5E5E}M- 33^{-SSS1n8L0~cbcc?wuvލ}ѣ5VCCV_>/PxZE^pz9|f|S{KW/GVr?#Q]TNQ}|nׁg{/FPx 6 bbbD7!b:111ht:ƫL&Cff&d2<`&`ࢹwQ]-1"* v٠ N;2dQׯ_'x׹ 666mfϞA0a;""";6[TB.foҷrG;Wz_7,<_[Es\"L]a&MQZZ*Q]LtDJJ y'yE,8wߑ)SRz2`Sg\ _J7툂t]R߀XSOncv;~m|رcoC徰B: K˴݋pEuc}!MTJ_`޼yhiiy`ӦMx nrP—`"ALdv :jJq:.%,}v$HnZVֺ|]Xbxw XܵU[[]g:",4M@vܠ`&iC06ǧjs A}!E###4ijL%Gh4bcܹ>}:sxb9s|xꩧ0 8`T*pB{hu}a)z(!?/Pɒ\? {:ѺAT*߿KELL }ǩ "NW9N^LokCee%G3uTXj%\BewRwW J!V‚ |&?Q{qPZZ{f\״l8|0RRRp󪪪h"M4 sO\---tY@ki'%"#| b  6tsO.gJ 5!۷oJݻws[`9!$::ZpRƼyؽ?~$''dq1'ia<|P5#BݻwGkM@6looz@Akk+L&Sȓ2hmme$ &/sx$_M&/4M85j*M!fڵkC2NI 1??\aaZ[x%tge_D!x\ֆ~{f[dfY[`0:qM22H`P[WK"Hr\~GꫯzN%]7 \͛7w4"\PP@ZZZֻtn{ ^o݅ .E5l޲ƲG($==ݬ/@k4RYY) 6}A 4_o _"R{5Bߏ5557oBA"r pT ci;bG[Gܵ*`}K~uO=v7ػ׿ʳgA3M `k~Km)B +V/6[ФRl߾MMMxeܵ^-Kg@mmmhf;ˮ}Wǿ^ SQF8aԷKP3(~ť1$N2B+%FAqOxX9Zf^ڎIO݀=SBf3^],n*ğFv:A{Zje ŵ͛7:ȁomsX~Z9{#ZP(`Zd@ֵ\ 掼?CvE8y$oXwp'0gB-cz |Cb=~ЯRZZYI-7<}C0p5Mekk+N}X5isGt"suMP( AN\buadݮQg"܌_SSyrk 0Fw\yb,t: xst1 L.?ީ'P6=$L&Ss9½ϟ.k,-d2ꖠPzDiqE"XZ-11@A}G]jBw׎GpB\>Š|_~ƹͽ]X4}Gih5IFѣ]ߴiZ[[7V%Եbi娦BLD3X=B -[/Y,sxadLh/(6hii ߿+c_qШ1A9k| |;hhh-[6B}[r51[dajn[BwS0]#ڪU0gr1|9v1Icr|zt2U 6\Y,οQs)NG\`ۊ#P܉rWDQCG?<[_Ev"np %h/ŀT941",Yri"?@z= dpj%o4oH+W +6`J qޗʰm5cYflDȹwvVt< #|BpF;"uh-]++^Bqmx"jG;w,ƭ## -ڏힹ' 2g_~6B`ub<*J8!_-sFX &P%| n*8 ⷹ|iooNjšMqcL @Tx֓פ}輟e:S)JX!B@v}ݲm@tBoJ.^l\f"hIf dQl~*Rkӧ1$bV S.>y~hRW#)J7YJBZ]u'Nz9>X`#S &j`]7{N ^ZvM qxg5!ZٴN7pX6-S B AY5RT=|@7w%h9qVCk1 pE>> oi <ͭO&LĚWpdjˀE4]wͼNNGТS0N-_M q^=B<' 4CX6P+ 8_ax⦟02[uhn/5#3~WzZ--ZM1boBx}簹ʆY }@7IhwjTa=\hioa2K=(٢>1ow~[ : ˦L!~Gh DG0e'i @淾E{y aEORO?_]\~h7POpWrm傂*(JK#TEMW?M#$ʪSQ<5M2 3鮀5s ZΞ^Z[-m4\aTbF/+iU5 %Kj^mo"fN|ϕ).|<ӮR Wބ/ƛvRH{ڴh7ԠT|)ބ>a#l mne|V-4ikF^mvv ]qc^ÕR Gca8gzK;A{\@T: "~YAz '05(LLToBS 4h68:,-L5 mjhR;0qIlYk8JYahPE„j#>KS(ފ_"| Nmlgh8 TUMvs@ 04 t-m~?Pu)tPN6]^;*TK;8\ewwJP$(;^_sj hGQ]Cv6j%hd*XkC]^8]kЌ01⬑Azk&f&@l,mPI%$Ce lB\bҝ+TrC;jwGj:eZCn  7a2j&JaxVhn;Ya ņXf;f$֣):3-y="3v4 NV'eɢ B 6aP%b+^u6+sZ}n5`q}<gM7C{U *Fu婯)ھG,[ӯyHɞҪЍb?+ P(V"$!C8qvFqf3!5p~`~y&t3BPBIxpɲ)[ChiR̆Bo}2'g:$gY_(0G~"$2')3x/pwX1$qύR)J%65q/ϻ!F!>l98p ㊂hiiASSΜ9Ǐرc0!Lp1, A %X,Maz0w`6]fڵ vvݑNNg7\/3媎Dζ=+P(p `nv(;]>8Nvv8"@̈FhRW"ֿ#ց﨨l`瑈Jg':  Er$*eʷMr].T!ZeX@ۿ#eka32ŕrƾ#X'$v&KFP( BP( BP( BP( BP( BP( BP( B]xIENDB`PNG  IHDRR* ] 7bKGD pHYs  ~tIME'.?IDATxZ{lמ3~8n$$ /RHQhTzҊVuUԊۭ.+{ ڪnhՂ*CۖBx$MpCP<N]i?i$xw~ !u1j4)J<׮]-e˨`5Ǚ̾H,C>q(J,Z eټ!d2 ۍ~ T*ֆw}J&zD"jh48 xnܸDee% <ݱc/_"(J0 #4b npG @{{;Ffc T /^˲PT8.C|<+**022k׮cccGYYٔ$ W^Acc#8C(V 8 z!d2 Qq]B!h4yfΝ;tn޼ ٌ_~ Պ~n, Qq aj#`,! fΝ;F2˲\èÍ7Ve[ҕ. X ۯ] (**0LOkZ,]0 1T*TWWeY֒6f9r^mVB߿Wŋ駟͛(d5H$XnTT===yZGJYQQTTA>;wVtuuȖt\.zIzQt:N'&&&ܟ/ N:88Hzߏ z0 ?ܾ}LF\!Bf}v@SSUTh4FEq! B(H&Bќ|x"xǦM AiII I֬YC֬Y3#[, ٴi֮]+0p8=l"3g+WÊ+CRAնtT '555x<^ tvtvv"JMR QgJ+W$[lG}N,Y7oޔz<$Z-meǹsr/hSO} ܹ!x3R9bYvsd6<ϔs=$W\H$ze!JTHJ)BФv@MM j5X=˲lF@θUœ@w.i֭[iSS(Xbx``@vPoΛK%5xqq1z{{P(RlޑSPS(bݻu .Ȅ9Áى2l6XVP(0 (HRLHJ) e%p_ĎPJ~z\t z>c/qͅ9RP`ժUbE(’%KPSS V hmm%z^v0RDY~=‰'@)Ŷm000 g39REB!'fZ Vp'i؃x###hmm~-( F @"@}}=jjjPVVFy|:tx[%QB Dp˖-`… a4ڒ -R ZZZ "/_ p~F ,@KK ϟOy ʅZ(*&0Ph4p\p a*"L&XRDnvCbll x<à @E)E!BzKt `$@$0/)&2#bF{G;N85cB^{ MMMذa"|>a-j56l>Čt^Ğ}wfFڍa0vcx^5Y , ӃX,χh4!b!JRsbAncS+n7vfFllj'>Dl呑رNHd2c㸣*l,+N~}ϝwUb!>:WqAʸ,ϱ%aeI|Pf3͛݃𖔔ECC011X,6(`. G;v=>!|cpMhlɟRW.\fHbnͲHU.Z$pNs!H  !`||pX9(ZH&hoo  [v$G8~wRn$b2Ν;!tݲ"S7iinn31x'ݍqd,ˆ^xLee%011,ZhZ[`gϞEX\.V޶m z= x!("GE$AUU~?JKKB FP/@__N'~?,X 8^}UiV?[BbppzZ,0 &&&pfz)yO{:[ 7qxP(p8PTTŋ:N~ b֭X~=a>O8yjxX,6_ҥKq!t:_dYCBzJ,J!LSt!zUڵ ---?k  AsMdK:C)e*ʫP(,{V:QE T*7ҩDkxgvػw&B6]_yfP(rzwe? *˾X67EcG)T_ J>XfE3lDZ%'.z'd_e;n k! #t"3""b>g 3X,\3E3^gDs"dŞEB8 Ip/5[:ӝbmkϗ.pw_]8=Dsn971\ ŭsݱgnh"޾&v~IENDB`PNG  IHDR00WbKGD pHYs  tIME #(8 IDATx}l]}?C;1QZYJ01"5RЬgHSV*H`[ U(&hZD*E(JDӎ84/ /羟s9Ng'=ys~}ax8p\.W/ ^>bϞ=P(B FGGڵk B΂s@/po.ݲeKn̏3mM G2˗/?qվ>ض=oB^s< x\H7ig2^}ڵk$&pz/;7B^FB,X0ib IR. B^H.JeA ?Qծ" .(lχ4 $IS2λV}:t˲$i&-Idr{gi\ @.ПY7wtɭvrc=G&$aRY!EAQ `lljy w%9,WPCPtCyg?e``{R)0DQ$I",Bu4M4Ml۾vIOCX#K`yD4DC Wz6|;w"l}4ab6e.z1&&&Xfͼ2]}[}_bìkUuLϢ%+pqMXn nK4o@ /ڵkN X,R*O?E4EFu__gDH)B⇂eGOЖ^+-88j,N!Kj?$#GxgR),---d2X57񶶕]p7BUI,BTQ "@V5b1%ADru?sԩK(Bss3+V 6I>q>y3$_J-ڶM}$#!ZSdΘIVRQd"!+* ) nBj~~NիWىeYITɓz!ܺ[oA_% !!!ٸ䏱7Yjcs4) )޴J7O<j5ߏiE\%J NeнBwt69L[w5v *VmP@(." H6o߾K'0 VZYf mmmDy@lF6(B /($nT;$q}AO @d2].xB@Q %Zu}H&tttJccLޤiA f ʆGdER@:WC/pOp2^hDzmqs M`:( ض$I"e͚F =_l'kDd$ Dzvdd뜮4A.$9gx8 DDA6ϚN[\fʕ3eY>':IBv K2=BZ痸}M$61^ )邲a:nk R7 ;JBqX6 ;%r}%Z >;lU tSP7\l]4l]éF4șxQz=GPͩJusd\ƬVjUlv* 7' oiӦω+0`_`VUC*% >I 8S~wO#}˓OU`U+X*VwlM1d_ !Jouω_)9;SU>vr>1ZK,jol{+Oo[Lc8uI,FS-=y?V(-ZeA ?j<bվəS6_VŨ|@K'Bvo}]O\!b2E(E^+!@)+Qz2˵#z=t>ߊoxE`E)ov3p $@ȭ%>XL" -_ O4Mn۶swfabMMMHqGN9<|\n?poP<4hIurdi*)(  ܀d6,k|apG ᗀʀ$IwJyÅa^e6t]' +h@( :$9?>v-$C"JXlYȘ&ZxA/;_F^xK]KZi,*299y)4S~3( "GP9x¢MHLZT*pv $^ ?\p_ ?uuݙ)T,jT*0$DMxꩧ8vN9R$.E(d!& i$R*F2ؾ}@j5Q*¶mQVG{"N0uL{gd=SE+dn>Wfttwy7xW7vuuuצF|a7ڤUIENDB`PNG  IHDR(ԭ1bKGD pHYs  d_tIME(# IDATxgWY.|y4 h * 9D= Q M5DPLH !!;;2crkߚ==yg?C/}CMxŇc`8GdDõ 67.gkz J)yl99ׅc[RɨZ 0A)#+F@0Њnf Ic {A sBC^qyĽz$]a)pTA F@eC] ;-<*(-1r|وjk_- s\G'WWE<9{JG;1Y_S0$}l f~YFQ.V+;vHs-[hu)4,];(jA50f6.*΀;\'O/V˲_2)[>v/Ccg= B>#Zu6vNU)A!=hD Z+.E`ۖ!@-ll&">u^Q9fcS ,~t5j%%tWkn(J RWY4CN,ǚ]g`~yN]QaFie 0dP`4PBvu=+NRZn3z!ZFCA%4vj KTDvQz6RV(>-DZgX#_U]02TWu; J ʢx$@ `&0@f` ;vR Wn~\N]uqbFˇ0TU %5mM5Y^B B0Dn*d2 .//rSu-ިex6Q l6 Ak~E ;,)dc2~[76vGP- tK m fqR%B֠Vp(kM UY0p\N$+.vBk,-0ElE4خn;<9(@6 BV_ux?IvX >[Z_DV(mh.!4Pd%Ph4}1RR ah5gar @]i9e#rPLYu208x@9*(5س{nEj didkhc tz( Y+Y\4D#֯?קh{kWi"@1_F ΣGE)eh: aO\04 #ُ4C2Zga+ a o߽Hf[>ڽEx~UQ@Qw)5\m[va}sQ @eSܳwc:pǷ2-]wUE9-VJ\9{BMգQJss?{o\h3|惹Rup,*U:Jae:Cg!v-/ yزY*s^(#{v?vrl`IoI{?h;ܽ{'>T qlQW5ww\,N[jccHR/1+㋳88]9LFųcdV;mRXQÍ*P @+-H8S ,42 G9<㌻w/Q4; F')ɰ Oڪf{0AF0!PJ?$DX n:^pl-4Ѫ._X_z(CLWNwnxq{)f֩vσX ^B9X)ګ* huVwW+) aCwرkOk\;h:ǪH"W5:kmq^QU@Z}cnǨUm~PZ=,{e7ۙCӟ:&;"h휻9yd4W_[^kGx>@$s㸄(kTlzynDB5e^6/Hs)yQE!DM8E,2I;ڽȓfWynV'$lQۛ+W 󝹳⻍%dAY`R(+aY-jd줳"1r;ӇC ֎Wa#,JD1ko:,a?'lڮXj Q&|Z__74v:M/VZcX nQwzM|ongw݈ڂTeI}񦳌Ia"֧W~(=(.M+ z_Cl2GY$1i6E ^x>zo|-TlR"5=- a2@2 l;o=/%n3zֻFh4l:Z()- (D%WqƩ)nAXvˤYZhc4QndKPj>9{)p]mӸrl0Zв @Qa\~gSE QףvQ,zn3\?yŽw~%_Z?+Y|2nz =׵ BC>DaccD\̢`܂7Loniݍn)q,hQIc[hoii_Ux~q9#ţ_mN7 <)u.lZɓBoy~r]ZX¦ ˲eh6}C4V ㇵ?\UUR5(je1tZ t<4><:~L؋s Km  QJ-'>U8 q[Ӌ.V=.j)4\FU iNp|O967G`k̠rBzPveȹϳ>۽廪Ja4<T@k4)EiwsҘL2$Y A A] T:m]^p\~N)Z ]88QY.Bn5wɔPI÷7W`@jw[-u(WVFO\Gܗ2$B@j Dll.n(SE?u?ݘ'?p8qx߱"K1Nȓp\R@:Y!Ph! Pe ׸AGt:[֎1F29(#wzh)hw-c'Z|-BQdtx븙l l2͓?1FI)5muOU#BK(ǃs=7{/ O&at5Ŷv,֐ Vq9關(WEv7|XVYNQ4SR m>$5G R%0F#K䙀C84~/Jf)bwN<ouډ8x܉&ño۽͛O9! m`AH^-s m2N橿*FR)Ov$2YMYBlZXu,<,25t:v+|̻>3߽ UV6WN޻"~V/`ľ}up0p} u40Fa;8H E!P5D}[ЇpUUJ0A9@h8W9\YaݖY[umSZ#hxR)g#Mr$I4PW q4*3tϿdf4sh@hqg>y>ֺ'e)i\w7>%Lq-Tpe#3i"!F]cyl~OMN F!o]XޝHeTuY$_ (2_/NzU.mbaQ^釮[(5Nx2Y|&֨C(qZ)pNW].TIZ!KKq`}s 4e`Na$'DiJXaH. e)4,Fz*lǵ BTR[^k~ד/Į=♶)FQ~EgX`c} M2TݵlJ/]}*c((\E 6 ѿNV׾Zg-TeBXP/w\5y\5?z1VopkN彝 :7~Έ[]cDc}c$VS8<!J۩p]Av(!7) ! Iuh/&A0fۯpZN;{ޥO@M-y&ovfh> SU1l 1CWZJ эR[<lAI(\c=WHŇy2˲oQJ0E| >'hv(l{ 修O7[/1A kPJ`@P5\Ty ,kJ!I3UF?64sB*eݷ=(lsxuD]TL2Ȳ@^"'7?XCQddK^+bY Kaw񱫭~k^NZ:u^[Qhɕz_\{ϕ>CgF(JF1`$l#1J;A)CU TU $b2 8E>tplO*a-X.T]K$4B[$EP@k(Tqjc@PC@R ;p4qͰ"Q%GN q"-AA%Z@W?4}roALNBV9$mo.O,^pUUVVr.oQ0*~?sl5W6@(J[ E]# 0i|btڰ8VJSmDžҏΆڎvF@j p Ȳ U(+!\{0 %?"a[@ULadhrk'as8x lJbp䅀RR*07mesU 6G6CGEaU鎛~`cg/ɫ;΅.[tya}WO{m-Z\)Kd xGU`@I4.j7,0(:=tFcV% wKQ9xmsTUe'kwQVRTݺ0L%6WbkeF1#T0Pn<;9PJAk p QXѽѰ=HR(Tg A"LghG& <.cO{)=.O V}tfw@Y7:='nkc4ם߉Bp5|sj Zi.c,Zqlpơp۽u_5K7rƠ|p/,* Z,0={|ouui@TedgIZBJ Y%NcidYL'`6:ShZaA>ʅ' M hPjȃvsc EYjxJ)Za2} pxgD64pUʣꛮ8_?>s~ͦ+y^M~N^ڵ;m,<c6e{A(c:e 0? o>!~( !vS ~PoE)YeqJR]Ul 9ǹ e<0.-Q-E!Q*f=@x؞Lb0ʶ@hv~4^xљ2scp%XXRZ=6IpGQHa@ AӀǕ5/Ao61hYX8ڸ߼>{{+ᯬ#w#H <{ l!g$8@@eu9@Ƶ0n.ؽVBVͶNfYePf;+E97׿xO-G4d?}VYhXi !VF1p@)41cn?6'MQN; A}WLa%|%Ď `DUSCeܧ'̣N-5<.S1v?T,,.}\g[n N4*Kijwvۭ3vΓH7² Z- Qz_"ٻw>wRIDATE8pm#dzZ9'?yc.s9UTe nv/x198+q"o6WJuUC+v ~:6h 6h4;?um7Fed~Ocxds}|#FKX]b( \`:-10@) )t2 GVpw j496(̄.s/Y݈/'P"G:[ܽ{sscH6qO1)$(!\F룪$j'}oɸ8<f2x[WryHgh!1H3$t)l>"3 g)R(`NPt (1TkrU/~M~`;$W 5ZU6EMڑu<({ )(PB]a-hqdiCAq<0;}}#h-]{sl]Ԏk$+Qk8`R@ OsZiju:>vEQו=yV;@#a;&- Y+ZhN_ɿ~$35y8Fkܪy<ɃZ;zy(ȳ I#KrU8QVuQUk8_UC1y\׭\Oaksm7N\[ܢȲYZ*HVfxEJ㨫 q`:+Hy5[biAgw|n&aӅ:p& gOʳy6C2?p .`%Q6暘o# (G>m04 hۘ9X]#rBa >ykf}3\M'`!)YO"]ݎ߮tfcw@w4.4׳`;ҴD @Ic1I"'0Gl ϣ KgZ_=6&t!q~ o4PK/h6:Gzpɢ(e / o_ {I),w|q:H@׍ ϵ- Wcmh2 N81-K6\НCp{)%<ƑcZVPZum8Х3^t# pxf2óQu(frS'f)'+ȁ8y66P{otIؖm$)c3F)3NݖMYgz;._SSNGa8G`ykg~=g& rTY-;<{ئ5W05M T*b4iT+Ym;wѰvw|CR9B(b+UYba,5Qa̦ .} BMrT=G#LGhVh:@4:B|`nw^[ڐg°q٘) 4#\W <8K MSV$"t]r'$C96 mسp^7-"'V:b ?$H ݭfؘD`k ~PW8x{ ~ŰZ`1Ynk6U 2U;a4K&"88#+$Xs+bE)vl*)EF3 7۰vlVWD[ktjU;]Y()d 3ǚSf˶%0B4 ,NyP5&I4EPh=0%D,XVf] JbY :v|ߤf}~؞u_]QK~c*V5Fj}Vl e¶\ P= ۶ڞeJawH xv[$%D^e:`m B`]ݹ+-ˆSXHl^4:}7wM8WWSí9wa3 NJlb;mxA'$uVQ0Jv%RX=d:al'&!\1Z?82% Z ס ~hu -+M,MQ5[F]2$1Z^hTX4860JQ~by^=j\dT.gtp,ǟok:{BeIh[U40F P\d% F- Gl"J3P`Yi& ZOk J-=gh'߃4>_q^:v7g#f$hE6Ei*c$q -1X=\[4_~>t<'ڵ $P8 ݠ ZhZla-/01"x;uqOؗӞ #{(ōFZoOD`#-bpۑAD8u (lȳ8_Z)4vVʲF]i6p]úFH*3_gԗE6g[X BU = m[i !` (ȳU6`h #{ kYir]:]+F[O+xU)asגhli''7Xdy)XV[fovJ+"!atuvU jRSƶ1 +ldZ)dc| 첸Ŕ2ܘTv8^J+ w``F兀Bi-+%ŊJTR8e~ra/kVx֩"O.ͲRJ)eow\  lvv>hm{lGY?PIf7 QRz~R:rz@$& +E{N2:>*fq}~.R$3B|tZTqKz`!S\pKJ6j~:`JvQk f*nN:fŊSr*.$-Ӆ> 0)RnhNNrNbJx"O0ZdZBJV2#VJf^^ʂF6f(4D6~nb>_8R~^& /Be\B>rv6F %ƒ%N2%BRFTP,Hna HnPMrjn+6t>(ht&j+**j766,fB FNp:r|tRNS@fbKGDH pHYs  ~tIME =5IDATxHWw aZj2+@[wв%kT,QZ -lx\+M{k\H=VX }ݻxI~{}ߋ~gm3߬my.Ȳ,p.ȎԀFPݔ"IuD/O6 EENbA$$>U.m%4Oڨ3g#87ٕm$#Sr%[%5?~khU7A[^^Bl+ryٺ)v׮U5X[l (u˪ ^Nig{@[!hppfvNzcheB藘8D7ɒ$1n033cꜘp Rj43"YӒ{47Xsp*+8Ή*4&Xce#~\~7kb9:œ9s_#8qa!vqa\ΤZtl8rhs){4: l_եx |HK<@m2Ymܾ]O}A삈'ɯBWZFa[Qr 3gOC;}d *…+ß֍ٿfggCQMLOO/, ߹lڳ=)f4:l`Q(JS}L!/4\]]"v .45YwV M~x2>5DOϷ!.<>t߻W;"!G .߽L^xN-D51!~L%܄- S[q{$A#777гl&D9u}KA L4 acctg8XI+)Xu2i3?l}^|iV޻l`Ζ*:bcS"ki"_wdA 72:\C_qTLMMJGcQqm_ hR:jD,6hC7׉* 5O*. _UT`+uݴTx\IH&cN7)>|_ܴT@mj 5ݓQxF"ӆ@@襚>K5D$+mFqshD;Ҹۯj]V:%ϓ͖ŷ4\.B-q޽T+Rͮj%S"e"ֈ.B5e>NۆAK5VBtd/щFT-,T2jVao,Rn^6-"-KiKRMK5.`<*.HfuG *yEA#v I$\yh]I٪oio' pY}KKdIubtKX7DA;HKd pU,z4|rD2B8"=K. hawJ ?2T?IENDB`PNG  IHDR)/}+bKGD pHYs  d_tIME 0#}m ١ Hut]Gai2\]t:jv:\URN91޿Qmuݑ 4MOxA=EvFR-PMuJ\.r9GќnWl^hLO+fXiXE&!ٳZ-]Qj4fdYr<ץjs4!B\%9?[L&) pUznXfi3}_xﵳܡBsuSL&f$Ie^ضM.#DFA{}X)399ٗ#X{w;xG &}8⺮Tt:lDr_* 1%-o 5b< 4iǎ=,,-nZb&i"P5M﹇_zGWXx[j=ǎ {}:p}nT0 ,"H`Y\ "eq}>KKd24ԒiI~=_I& X_8RiLIJ,t]Dz, @?y3!gVy~l6l_A_2 76rKppEGj?x?87~5K':5=ϣnJv9wS(m[6Ѳˤ.^diiIsF2|'z+zD.T*H$( y'NcFէWv~=yc3ӧqRި8Vw*333A8aB$9ɲ5Ϸ۸ +5.]-; Fo*|JqkҹJҐ#tqhZtʊ^O{'p]w 6^kkk^'PQh<#\"ݮH&" ˲K#~@d^yE,=(}ҥKbmmMt:]u bssS8B8 ibuuU^[w$w_ZGbt qDYfv{;~^,._ +$Lru*?}^t ^Oxdng2ɠ A2 c <@^Z/Ҝ`bb˲ 䓴ϟp_2 b67ɟ=˥|'H(6}|on4鹽A& p=VV&C{+a yʕ2.s oNߤ.Q,=^o/)0-2I),C4=#K{v먴'$SbDrQn8[9]WY\ƨT0msu̙2gi9=>SO RYJFAgbgEי{ z.n\.\9}`H}reHׇ,>tG}MRaœ엩Q͛@92o%&|>3'O|EPP(JS(xb̛n:X LH$V2 :j3[mh48x z]Akgt^zIɮ[^fcc"]}).=TZym;rgnS|֨8lxQϾet1@LNNR*KMS ,l?-f.ԥ뻛W5癛cjjJ-?dj<𶛾00~-_`uurL:V~hnI7.eFXu2 Rz4jt:MJ$t:"١I^{ZRTd2r.+帲6۶M6Uk֑cq&BP(jLMMQhFPhZt]$Α|>iʹyWo;^l677*kn?UWZFA^RJ<oFU6dS~%r=F41>)Edfk_':Ewy ՘mIJ)9?lq0 (j5:zZF. \ !u77+ FMz<{ee,l$X{=/TyV3 DD"-Fx^~Y՟zЭ:hAOc&sssr9hضMXX,*]4Hy!8Guc1z&'xLt7g@ҍI NRx遲l6i.Ii\$l6j˲Ԭ\xY dK$G Cq''qiX|xѿ? D`=˿ʪV >Dޤ B{J;$ȑ#LMMJ u]#b{O34FD"jP'A ~_x{7&Z漮JŁ+Mi7}[@q '# PNA\ףjl6qGm uzcs6_ I2J,LMu.2x&,W<3d!nAoK·-O͑L&G;IZS>w~R4q?1~cNp]wƘRyް{l=%~eƞz=VVVT F'R t.^$?ƜCg\ˌx?Ň2M&a~~%QBUvD T*+be`p`~OЩP8Mxy{51.r(yZevvCq!fffh4*.qKrǻ~t:-9z4Cq!666Apy2˗9p gd(&`ܣ?NpP2ϳHRQd_(:7RVԪߨ4tq'n&]H&C-<Ǩ-xl'*2L*; , uVQ7JL V{ǩTY^OeX9xg?pYΜ92Qbkk k{[3KHy2 U!5h*C37Z2==4=$2D^Md\!뺎 Po=hh*_n`R< )]GHCY\*S8tX*T\6U4҉{C }X;:bmmh,n3g/rE $HS.͹\Bxi?YTdzUfr9 NRy&&&TS8U.6,ˢLUZ8\'|G4Kn̐d)|חH$?7tXzg7D d8pHѠP(݋xTi<կO=fd2><K#ild2pG4X+ =SS:>QO~/e$N2w Ee_ETQZm)i}[<ٓ`1'He34O+&w*q->9hjaXOV\.&JܸQJ{1KdWpO.t5N\urkIQ}sw??;y rٽ$NZ#ga!\!WU%qGn:9Dq33qFIwSy-ždnnFeYzg$ںC1I6vV}iM+_j2;;KT"J 61.h@ ;ͷnhb.8_|Xy]eggu7Ls{mzCўdF^0*E7u_U\n.#||&g. :Q*2y8x- Y\\d~~B@j lO>W'ƥUqGQvZ;6BC">YP~ 星l6t~ ~ ɈJBtr ͦB0LR,QYTiZ}4/vI211">GBSRI'.QR@FYd(jPTq^K;O}'wy6SFRD2T.Og+r t]g~~z>t]3 Fe-BAxXƝ( #w:!v97kݮNADvHH/EA#? In]CIENDB`PNG  IHDR00WbKGDo pHYs  tIME ;99I IDATx]Օj{fx|Gd${m۶1<U;:L&'@X-ːEDk7C1 pMS&/{YY̐H$pW\mZZZ%Nzr-:U;X>Vz4 ;+B+ ZJ}+i.0\FR i `xx8 4bnaY]nUX23Z1ެ*2+cYR 'YVV2*R;?|8s mUmb$Zzr ۶mb8CUUq:XQb/^k!JP[ڋgyFܹ)%΋r\k5҂ MӤ\.8J6@e$'OdttQ֭[&FB\c۶_kE&bhpJ%ǩ^:tqϋ/GX,L&@`۶m{AQLy#o˺ՊRwݍuޯ{]OOOs322@ 9vMss3fRLÑ&ljaE=ʖ-[( 󂮽pgϞɓ >>lM Ν;1 BP$all;vԁ]'&&Rr1R]]]\.o }K$+2o_9KNOݬ 6PU] |~u]ĉ011A,#L&/q`uM"@Q2 333*gΜ]ģ>*_yBCM MZ% u`ll#dժUgo9u---B!SQ(:| e*TGzH8p`4mLdXՐʽދL&AJI?Q*, ۶ B!p]4 qp]nC.#Lޗ_~Y!J%rnEB!C믿.9yH)rL>\.B5MU۪~7MK#`N0 ӧOswǏ ?ǫ~E!H,`͚5رc,bH" NcY֢QqL&lrM7p8i[K;ׯ{exx0iyL4MJRt:ӧ9qۢF孷-ڵk7fR|>OP`rrD"s瘘\8Sߴ_. ]KIENDB`PNG  IHDRo2ݷbKGD pHYs  d_tIME #IDATx{Y%Ǖ^ܭnڻHK4 ?~2a ^0 !ERNvޫ[Uw͛ I0p_sN\O1 "@?`Jg.Zj 瑂؁Lg9do_o<|ᕫ~q=Bt180N_Xw)t65v Os8wl۪ȳ c ;S^on]mC>q*ZxhV]u7o^ tp|vaM<2뫷?|PEV=7Yʳ44#856e%L$B@s(./MFV *(8z޹{gWnl. !/'twz5:}"\)]\˒Lk]bڗk_;pWJΕҹ毯csJ~BUXq:@^fg={|8םֺ7LeJq!Hןa'N_{5Sp&874=oH &Ln>?}VH?Py1UŁZRdZ*[l"^mM"˲s~265{iݍ:|ւ"7Wo?.NML7 Rn^ڜ0 ҼץE;8ssni{91E'ߝ4Ȳ !:#k׶uM:v{QKm"MV&0CTg+yR b+-aL67;]Vyh{s%JDΰ&,w@16W`_~/v^=Z쯮Oc^J':8hri^ioth3t盹6JksN8GuHhSR;nWEn2]$rYzAı~z9q#$l]x({)8>^otxvF;k) iQ_1+3BZk&a~o^f\7>&qRƤ2K+6$)ZkyﶷJ{li{ V 4W5إZVdȑXYѤoKMVoIQEjfV_~omVyߗ^VAow+eά鴯:Ip|56KNl X/I.\yR_atGze(1?Ϋ!Fs1iϼd)5.H :&3E1ys>^K!euEQJRJ ljT;ý+I^$\R{+yιwN/jfgv[j2:-2!c-gtJ3? K핵v?Ky^O':?KkItv?׻Q:kͳT4|,T*Q%JmY_ݾF: -RJ)B\Hu@eq K) }?:.~ suehWY\~Ht~ݕr94"nvm-%ڔ؆<91&(Gk9 c?L7Kί^ڊ8N,\ i_?{O9]\v}Vj'*Sc,zFPgl8nzj!p=+B\hS/otWѪlšRVz="cB?Ń-hUBFZjDLPx3$aXT0BPJG%%!?,<0" X=:ǂN5لF5`:D5āEtyo{>Yte UDyQR06!Ҁ'>싾)) <p")?PWG `+ɭp{W6m[ dn“OEmxA裹ʽC?Kg:rR*WyB|}2-!JFN#g0|IF$rT IH<<6GfƮygʏv"8ﳀл /TRQ og8Y- !agEj-r9<"|JFKPIq#&,y(dا %!#aAӭ*" %9<;_l'0nC&C(`$䷱Ky}gB8859Y)'g1[9Ƹ}GnN<e]7! AA)j)[ɉ`XPbԔo{IFp5!~v+`yFRM3'1BN#Gߠʆ B1!L IJ8kF0ńJ0%1!= Ig6y,cRZFcL…gf/;n%B{dR~N6e4@1v B0ŘL"`cexB0F~R AOSFX?O@X+D0! TfNNcD7w6!A IƼ9իQ[ EQw)mfr!bD1a2bJsbHFRRoZw2h ,!r~a#1e` >AO^'UdkmY& ss8t_n_H7b;Xd90A>B2Rkzj2Fd}΁󫟽s=Sac)^ ! BLiRO:r-5!z8G{DKtc)Ɣ`,X_ޭBP}`LI^o( й9Fȵ=;~qW-dDž/=&eգS$B m"~阐( "|3Rth)RJ8)Ł,QQ2qL(&pC<<6'׏ >pj뫛3ΜYZZY}yJ3 jnK{3.g7ZJ3@c &U2L j̺&r۰G'֮ll:~Ad|=5'mFxȐb`&J1N 3ElMa3k齽5V5WaRb{n٭nXY(s_c ?ڕ+K!82?7FI2L:Bqq`Y\0xw}^'ZB hk ;Y«zwf [̙9Y?;|=YW'{F(Qa$emd`o'gۿ2>\Y9TT(%aMZXXsshe٭w<K_- 򩗎 k)N?-u?jb'@@g)nkDx9lٽOfMJiXf|(/;;٪TkG--Ia6&8xEI9 R^9Zmm-՚SOBr E2JAuJ"~z9]iƣ{f8LTAQ@`t1 zq )9z} *"I~v=? +5(,+=wH ('9 6a(}͖I2)g !CQAJ)s9E2)U g <BPRk]")A(4$F#9NJ)9gBq7TI+>)͖l %.c+OK$[spp GgP-gs?Q潦Ɲoy2^3n.߼]v;{tX )܋GoVciy)O|)|~IENDB`PNG  IHDR<ei=PLTEZs{ZckcssZRRR{!֌J{!JR!!BJccބccŵ挵R΄:!!JRRRBRJBBJBRRJJRsRJssJsRRRRR{{R業:sRޜ{ޭ!RεRBR{BB{BRR{{RRJJRsR{ss{sRRRRRRRRֵRֽބ{JRքRkRRR΄R֥R{֥{{Zޔ!RR)RRZ)RRRRRRRRR))ń))Z:RֵRRńZ)έRRRפּ1111R浥{Z)!kR!RZcZR֥)Z֭ť{{cK-tRNS@fbKGDH pHYs  tIME 0譞%IDATh;nH)5bnC |slkkxϰ3gsB`lM;mYI?Wu6n6!M+$0B $x,xXxp$m9cO/>z(D\J} I8 E"bD9ȗdC?\\\_]oXaʧf$H|0>,e}G/M|/HGq0_ ԰N!|=WȤ(Q# J*[{YG]B !=BEB !Q@Iyaq4S%? $&EHcM0K48|\vƀm$I$@Q6t2,UIõFIE5y/Km˷my6 (&+>>sͽ+Ň+e#*%0uHd[S֞~\a0"iu'$ -7&?a(8ao֛#b`|Jf BI4JF"3'H拪-eߖ*j 8*k: SN(e9yQN0EGi)pE}677RW=Q39ʠ2u]n_a*i@,&8_QoF;h0͑CH@>M9o-mё[&a|N4\G0s7e6.. Lh4>8jr'jeV!!,Wٛap 6kHwMMdamWXly(>ö_ij|.oc^☿4[:"їO6HGG4N5$#̋DH,B]󼽒M|fD='Q!KRelګkIHT(GBCW22vs7C]]8H`&KgBC@ ِ lj#ťjFrf9UG2SX'Z/?8iEݭGpwfא@dKᰪFuIYcw$FG]H4O>[}Ig%cf9m p5*MHɶGX$ }HCS|I$dؤ>;G\$s>15@`ϙ~Up$[wLJ[NW%d;L;`ɠ^BxGǟC$Xdj{-v-z$ClF$ݔì*z"Jpƪ/LBCIENDB`PNG  IHDR<<:rbKGD pHYs  tIME 1XLtEXtCommentCreated with The GIMPd%nIDAThݚ}tT?3s$dB&a0@I5UdJ!"V-ŸE{Q9Ev˪ks*VjX j0$&dd{2ys=9df;}gh6#@@.>Xzi#o5:GGGˇH{fzm/ܳ/@Mή3 ܎&&#)m?` 'b1!Ir31@LNιk=}AVHO8]_H d*h:ЈKQE@B@C{MZ^Єe~<얇PUUTpjF͆*EEX,֬j؈444/λQfPDSnF.\s=x~SE= D!Tr8p*+qUnB ֢b6&5w#4ۋ$H={g xmblcx^af7mbEu KlP456fG&L&up6΋fx]:w& NGZZ$%Mߧ5?}oG*BM& V[rPjir:$PEQ@D -j(àvwWK&y)--?tZxB#/&J$cX JEao0&nłЊ&NA.S­R63hSڱcz@ 0agwCtu2Ɣk! "B-x3ܵǍoO5ՔD+ 1*tterv"0@߯y<}==ؚZQ%+"UBdEUAQ p$KlT(µKKa̙4CNw6Gsѻc#\{͘@^sDH~~EŐ̊2ZYQ3d5C'! u_ q #njAvGɗk擔KzztC>);\,Xպ8cׄV}e7}'pm4Wz&mu:]u-vf)J^1H ^a4h[+@!$zb"iUf2I3^af_廴4n{s7QG;U!tb4)D h2 tPD]3u0%yIWi\~#s#!ʞ={Xz5UUU2::ӧz,j4;y뮻$˗kW̖9s%Fcm^}3?0?@@ IXV>h'Y#QAS+nK *$.m*?Kkm |In%KsNz)Z[[9q###pB***yNcǎoEKq+J^@xPPU/ZOKʲ8"-"1,/OfW,`]+b?xWINNB(EQXb'OuR`6Wو`hЍ|Qt:I)ibV^&FDIq1[$i556FVphH8:  q(5ŋP7`ڵM#H,s.-hqzHZ%AYI-hYj<,(!Lܧ c?޼y[oeժU(ؚ?GJɛ[[ciefp^*:Q\2寧D&\~32x/̪?1'H `(jAEe .rkK1#K~z)zx|AܼXp1gfحh"vS\֦`v;%e456R wV!#&~&X,Yc6III+-<,_{,mFGGG\=^LIM%77a8TEMu@QQ1M刋ш@ b^KQ**!HyyҲx饗ǽFMt[jN8G@vYp8MLIh2fCo_VFj֎lxqi.-j1ِ(vmq.Y`۶mc͚5t:|>O=۷o- (//?Ȉ=Wwn-[`),d 0L.31$̙LHxi!Qٸq#`۶m<8N|>߸{Upft444*MM6p8p8hob4Q>D'-ވx pBp? öm۸ꪫx4 Ȇ WXX8em͡jtpqI1v$ɸ*AĈcZI@ egc4Ow^>̒%Kxȑ#<0| ذaC$%#--v1MZl6!Q0qcaTaj cu믏===G??~8Ǐ6e%% F_NXVM&::ܽimv{̈yV 1D tV7V$cDӴI;%)]B`Ħ^?Pp\p}9& Y)..rKЂ$(nG ei/ć'|4hN3.N[JkkkLdgguF}[ߊ̹['>~v#a8Ⱦ} 446`k!T.'VʪP[z[6Ænx]@ww7&H|VTTcƍ444i,]t8uTVKɩɩn:{:\m !x$.H1ZhO<9 30x`c*_TMuLJ_s46'ZDss3V>5ơCbV+s-y{qX]l 9݌>e(UVicTv_jLȈ6~Jz%mk/%9NM4MݭeWvaڻ;˴퇧 da흝WZۨ6::i}`~q_O#4D[y}%h".rߥpqfgC^gt zarg||7g 3utϛ>JFJ~sAIl| N`[e-֏ɚtc]=N>xe3Ɉ?lK2E>gG}|NX+_ Ţ.&JIlS[~Ϡny jzw6&+ZS'5wL# ֝c=%<m\4q~6©w0]z+fNk!Tpet .nrut_wH_/{K83 }kh}o13L%견t]Lryƣ3AJ:2o$Ϧ|ڡ`6l6E$a^kLf}ڕ๿f]g=zt}SpTsKoK~~>~sq0Fv>'l{po x5tlOJ]ztR?^dN^@SSw<?{^IENDB`PNG  IHDRQ+TgAMABO pHYs  tIME cw#tEXtSoftwareQuickTime 6.0.2 (Mac OS X){AIDATh噽jQy>yZck!gu^{o]?9֨ f#Fmh`2bf+zLc̭gѷɆT>>d\4:-zfLS?h;{f9Oij2庀?L3$мͤtApәp)-r>t߃ ? ]dЧb4w|2?榔^gKj#Ms\6*T[M0 idn+WFFGW;lQVފ{`[ [9~oi'1cKBeKV* V2F&,̭P* [Lf{E{Ma˻Ko(iDZCVWSH3u4kk_0e سIO/>ǹ1m\[E|Xb!X=eLO!gaM:nbf6TyaFXZ*0D~yxnɺc/u=EjmH32rX[)a\ ׭`it% [YU[|<6kݾQBM#=9u㾬;C|ywȖ;B+! lғgST7TiޗVEJaVn_SkhW02b"I[٬lȊ>Z.+7=9`Iigf3¡}6}@3%߷Q/3\|_= 7|X#~:O<Жb (Ӭ̱ YXBsȹKhGa!ɘSzؙ #ZН <{ɒ\6K ^ X"lz?=J{fH[tYhy8# r;/_2`"#`LɌV`_{I]'g% ĭՐR\T?eTU `*;Fk?ahthM;64Wƕf0^CFVU&@ijɝ>fG)ZPZ fȬVpDaEv"Ų@[sF˵]`šA* LiEYF!Zev"iV`bqaX#é%"[/iF(2L+,T=Dϓ[5Gb+fX2eݕSAdI /GG,>BF7̌/%fImÖ?5Zq%䚏jc ʌj>ck=.# |4jfkw"l^UجR`4,-tiȂc6\hN}.*6jX".fJ`ǥGCVA67!_ҖVFRB"FyP6tc Ze&rj}ظ GHM_}Mpn v)en>6 6WUKHeF!?B+ o:hb8ѳːaLr? 'NzzJusCr?'2x\ C+DG2D2K{%t,D1yuSq+MS=d@+! H1$VV,M,,lGW;adX7*V/_61:7`t`6ɵS wn|FW( e>S-,E"HL.(E dUq; )ʶ[G<a2FޛD?nY8H&[4Wk Ȧdf;uz(5 q%d9(F2]+* ʻ:88+_dL4# nϭb<~۞d6,\t6D[ aY¿7ҥιWo&HYgf36sq%SqNʆv $΋mm<Ojԏݫ^C 7Ng xg8Y@_N{"`f. 8x>OϞ k4QY|*-SuhãEb$fs97)𽸙Y'|>9g&rh/4 8hh<{Gci@CAGy69D5iEQ&掜x!O(6LzV|o"mѰd39h]th?nIFc Ie MB4I)`DMM#Ε(fDD-@Cᬛ.~rEY sQd95m5H@#jeэIqiP_"pt& rtGI+@cD}VBH?]l$B?@:t)B܄FDS!D=ёOO#ڕf tSis_4w1C]5k 0m,n|ZCM.b4/riIxfD' >ӔT>kQųR'W4 } ΋~83U@`t $ȐC9L"D?/EM ,^uΑT;x"!Cd&BaD3HvRZu 6ЊhFHarD f=V܎ߖUUyDaRvX:/U>⼎1i; GS$VhܟVj_}daz9MbD0ꯀ{tW5nJ=\۪k /-^܎WK# L\7n yjy %`96Tf\{m6¶RQfk d0I (*ɐÃ-w_hIka0cRLaM^<RZYDk~╈tգU'K,[lrk:wdŵW̝$~=rB 3?|[$NFۣ@:ZNLԺ/)lq^ס: @ʥ/ r }^\4Rɕ]>EFnMC'?\?\462&]Jg6,[sBh=Ɖ+ 4M4 (W?'h4oR_ t|7W4:ĉ-:^h9= Ār\]SL3KCM?R=oY8熀'GtKۋ[F?mluخ SutZX/53%w = !jMYY\cq1N}OM[ @Q@`ÖT_?bP) 6;7r̓Hd]GbKI OtDKct>~,1S؎$ \kw]7c/.=S#.sUUQQSJ?Z z>Y>ӌt_R&>9yC誩j:8$9pֹ'$zXIgׂ @^'~gcDc08\閆]N&)C]"yh.[秐\n!Ѧρ+.^\Y)X+5\$+RW\$K'tmR#5 0K+#Q~ 4co@+jf%Jhoao.Dm>j{t'~pAK^츮rܡM w48:f~U`sK'Ř sZ:yzqs;) x42ShѭYq>=Kq`R8 gǐ({:nJa>d2bQ3PYwT.@PYʱhMg(DM.mZƮm-(e`MӠ6 drvJyYeY,轪g9D *nާN^_ ״~18adKHR 8a(q.GS>8UP40DDQAD"y>8{K|-Rs!NN0#څh0 g;~o>C* OZשvPOEw--պxP ; A)u*}mS3$dȍG?e ,FD$\~UOr>a$~XTa<~.`e5/KgĪmji^/ <2 {;sG;h\}s;A Gs/()y[seYF g\k5suHX,sT[ݝ<\.C~d]HuR*w !KF   㜇Mb/ZqSk01-FFpVr܀Ǐ3d!/ s0)fbssifsEN)1y]>H)F`'oS!| hRG}MӠkxΥcOprm˶mt:uuhO=?<w:(Ƣ6IZBrBrN3@V.'Z`'Dco/YG䋉9hRuM0;; 6;W~YW$y;k<'F]D.ɏLk+1=fnt48h<8W܁$r @k[wN@لaJc۵3;W78 x#¬q~e8+^_;7?z  ׼h?4)sNC۲R9@eX IuMB%e\:XdYjhOCpG^q%yyH98<ԷG8V\@@V12Mn{0wkb 3)c #&ow.AT%C&5eTUB@gxD/"@H%_es;YGNS?n8134 3!)1ri/T'Lh47-Q\uɉPǿ={K惵F cΏK}]?зHF7KZn#grj4zlv.Tʓl+٣S$cԏt2 $;oy1-VBzIsK$hT̸J)9TF1l]qӍtoSo|3蓭x> <2Lӄ^vڹ>ݲ-ӉsbH6~eL>Q\.b@TR7 }Oq~KkiC'3 nmZO9(KW<:qUUѸ;zT%De7]рenqݳBb}r4o[kJ'O}kJNWue, 0y pTϣԉ[7]d 8'N_"qEi$X^D$ w4z]߸m@AupkV?rqH'O:oU \i;mxc_\ZŸ^xeJ{ydgJ~Rѷ3Pb!fSYjRA0`n: "YEZLHx 37A3F6|xa y g URüCJo|:t]}`H@y\%ƽhjZwdFmMth R~pC$z<Gb< ]JZg;߮ir`y<9$!Eܻ"A$.ϕXO6\ދDX$Gvڣ7_j4-]Y -+)QcImV~ʟ'}"?_RPMSw57"-%RB,Fsu.uSH[wq O&ͮ|uh"px"Van]vh?G9%'X2)dŻ IZ.@hiO$cKLG)i)@ Ki%3y+89c:K0HSʥ Xb$Sc{t)^2=G6͕w'׶Cb:xxEC ` AjshBya(]Jߢy|ϲ<郓(Ye4seɩ3v] 8 |qe:/^:U^PgfOu^@v}W)0mEy0mƳˎ,{-Z ŝHp8:"ѮBҝpHLM KC1|HbmN*9xHiV腴hK(yȲ|>P N+oEc,T0n '\9Oɺw˲ KjߜIvI0ln$&]m=`lbbG<2. FR"gz0$upGqg5֋05ʣBnE6 ل}Ihޫm?v8ݲ~ۢ( K a]Է2O}rsj%۶aIvoU>ё! .Ie~(T A zˇav@+{o"e]d:ȧ:ȳ_(SL5F=eᴾʮ"/G!ŀD*ᱛO77qњF}H:,_<0ެOaԚGN~IeHߛZ|绣&J2Kl42=s0>O3/(+S}WRriy}vFԕ{ȯ-y^[/-=Ss+RSY&O}I I 5 C?t%'J/B l(mw˅(C s[aT? eNYQ~}-WKtad"`hxKj2\o=_8ǛAZ&ʍ[j}nPC dIH^؇p[W} c;BhH РYN {X)0KPhޣo쿮 = {pVeh|ZĘ%,/;{Og!D`T󖌫9GX˔KeF4$]a .:&EzZpk#&ND!Ai ܺhs1HE1d1򊀎/*51ӑ|/6|*[QHzBIz; ON~% r$}2;Q~IlbUqxvD> ws{cŅ<`WB|#26;麬?m& zĔS-fs.W;`0rH# r}*a,E.*&E./^̵%H߸31҉NN b>u'p wT].?"srHP tJZB;S<щo:TcƩ>YbZ]%$sdrOHyqGMfϊģyHdIќ/169rD/aU Y8id%zWG/z(K )IENDB`PNG  IHDR$AbKGD pHYs  ~tIME6xr< IDATx|yxdWuᆬ{$vԻ{vݶmLfIHjBB dbHBdXIW:qonw뽭JJۗ;!477)( 2xޓMH @ttG2W|ckֈjKKrHUmmvJ^'```dhjUFy\mDDk~󟧧Oq˖RIɷ,0 }Ͻ08$?I?/clw\b׮;} i0"NsJqW LFfٷWUgΜ\=sf,00 uB(4B!fOafJ%j+/ Re~ffGf_//|?_MﳪjMQ4x/PrY1-˴JW('˂ V$0󾙙: J)lDXpU%f ùoff~Q,Ra\T*!:JwhZ]/ ܹYu)@F,{;J޽{M|RuuB$8B> A8vL)'eYZ**~IA0j-h8#8mk?2Srォyfܧi:ض5>D!tuu]'859+waXp J ad_ey8J9\$lũ;Nj\.+;33c&XR``YBxH>߂$o 0CUk8}z)+˲Z~ib.˲ `Y~筃$X|~fuxZx,KcȲq/ar/> OOla皚J%|_F"qAx9occsFy4Z^,]U ma޲'4 zfq( 8zP h Lƶmz<k8(65FKKyߺU)9@&'9rPmu zB@)RIð[%IH;QYّNL1M< `a,Xi?_|4mvK( ڢ9R44wA(tmQ,S&VEYJ\1eY߻RO&a,) D896nq((+u?|>fA=em@R/Ciy3"[qøp]q_yU51&'7>맧+BwZOံiS\*R.Ƌbٳ  rVni@ pzrrl=+XŠBhm aY 4ME\[~kX1kڵ@?bڦJ2"4_a@QXB!BSE$D4 GHćY̥1sF]ӴX_)b٩P.i|(yv]<9@ggHDةYY=w}6`y: {}|> K,K]LF0M~G!>gdOR o߾g}>q}j4-gX,JWLǏ?FY`E ЄHA<.'`G5wzĹmmQJZ(z9⅂Y^RUoYp=(Mᅕ\39]_** axJ)XxSQt B(bxs^ZZ|Ê2!$fqH$@ڒgsR\W7X[E$B\Ao>_.ν5p]Z.j&h4a3Ϙ .\'{{8.X,CF<ނx\rvѪUgg@<07n\BKKZ[[k4~x! ko~ oǎ@f}>cT܅e9yӧNF2`zt`9BͨT$,[Ν;/6VwݵJE𡥅^-˓hiYjAWjNܹs,+x!nSJA`a4yg:ItIJeK/Mh\Wa$)+J/FB,Ot/cc纫nz]:2d2:5;1|>cil6?>>>} l+Vj1?"GAHRLqsUF5+'珝>{Wc1kCu&3htj T,DeY&ȷCyuD]ntYSlSS?Zy?bh4_t}2 ;?_h_Q(:aPpwBT@]5׬~aȏ_!~8 /N.WrWa1M:/ucl[ZzsOϝ;7se2|sHe'lDxp]V'FFr(]t> 0,lj&8~ض5bm@d&d$Ix[\izFg+kC|'./J~ NB|;^+RT*eUAWiR&DZ8b3.y.d2|~Riݻ[AJ92$Inj_g` Vw 3]ò% hxF[Ua 4-v͖-??JtPtC#qP,\s*>tv ;w1)T,X}4kY@(ءPey *(uaY˂U%(Db<'~l.ڒ?q-h4ӧs*7=Mz!C1`Z[3t:ݸtj7x3A4po,s!LQi reJ e?::|llm?| `֮m˭XRt:]~USOg|RizeQa$|]g2B7>~-q)aٳZ[2N:L&ܿk]͂a"S5Οm)rhųgTV͒Heof8C{X,^Р*\W:`,=try0sTDb(X,_::Е/e媘/eض#m Ab:"?Rܹ*>33]QP[|)f6i:` :/011}O.WXW,jMartw_N${R`Ǫ:]Y4e9Yxsב#C!M PlTDFoeyɓou_\V:)AME鑦ٗ^9>^bmj"zN;7^wo /G:'.<pk7R)ss>۶>_ib|!^f'k{m6 gbp9*" /!Nca7~՟i}GN={8fgiE~vLÇ|fluv1 , U|9IJj;55:66sd~cKA/|?ݻwfzzcc3R0ժw]7 SSS噙MŢ̲(pp]@#|zh|NQ2?oP2@ U՚Aߍ,˩TYȑ_\oV)@oTjFb>n觔[x}UKM?2h8p]V4BSX8T`'&Vϫ?|PRTF_Mobl;uheGp1IjaHߪ,KSSs{&*֬Yc MPHlE>y Ti^'ՃaBXMM~0 G׭_vlvt?w"Z hib* Z[c8}:+922|ՀlYgN̙󝁀@f 8oWah2pWz|r8\n#{do*&w6-q~wAY>zKp/=Ǯ>y:5B y>}$9z+ |q<:(B03cJaN-$4 hjֆBۉ$# |\\il;S#YkG\4ib"Ķ'&q$(skGG; xqۦy8 Af',eoBV{澇;b13MVk qt{g/'n͚u_ڿ(X04;wq|1ﺺ³dt0M IfSSD"0-I^P | E0=U*>Bmo F=yguy8Jt:޽)=0ʲim~?KyOVooX_HN{yPHjamSXpXB΀e Xֳ*IzuO$өWssM2VAXwQՎ3d2B={$}R(:,}9.:NtS0,KV4-ۖ@ JDA{Wp1d2faUee=g\,8bW3˒,<4$ٶq4}x2=]i,wYVJ*{T?KRdƍs-˙& Q{{͓nǛSFbzZ #q%^@;ϩ*D $I:qnVϟߐV}% @QX@(5M,ou<eI? # cgf&rq(e"bϷc _H\Q6P<8!mwFŃ]|[UU,]g0pe J?/U'`r:m{G(8z݋A'BK,eFCQU xh+Eo^Q,Mnk4F%I'uzP]wEQpDiA Þ+C>rCa<#I6 zxŊSW\sυ4PrIJzͻe\.s {g\C8aY@ '.[N6zSu3h D3$ܱck84Y\ 0fۮ\FssR IDAT$[}瑗'AӴ6XxGJ taEl&9q%8Ȳ̗Jlvbتi*Ŧqn~e;JCy Enn֊,#cf?!G*!~RɆi0 !T=;- n߳G"^?7<<'ΟRqQX4-$mQj00NE48 q;% l43~H*L&Ìhs5dY~1JiTڭy'XնwpJ8t̶m~,'ggg7;QV['e1Nt|-Գm[bvb{^i,e`Y:t]e!XoY6AaN<JYlY,~iQLV4~7˲p8@{l8sNs]:>%O|MIJqb eYv>R,/j(N8tMpaY.,{ś w On2#;/x󫪲P(53 y<< .y9utQ.d($eq|͚H$?rwB6ApQכlch^?2r:T~~%rd2}z϶kiRݩ6q Ð]tzRԙp0p쬷 .R{vvV923SN-x/9myKKW\Gڲe6JulY;hhkk1  Ui2hmmMGEZGG[^rx:JfA/^yz!+5<88bY:&ðC ;fg+4Z-swoV jPzeb T+>J2Le(]]wWJ^wq"a" B!,@JEhmoŬJSEBDVjX; mn-~򓟜ikK_M@ R:$y(Zy* ), Ûo^tGGwy\ց~aeY`YDXrgƾ^N?}ΗL&3z 8NJe4d8C,7o=3<|jj`)/DևBV;U-岎X,bq٬+R>3OtuN][,\.}ƃ 6F#Wbn[OMJ.*<',`2("ذ4_;Wy睫 }}-b (|)d2ْ͖gTm[t(jOr7s^o3m_;e2f=*sVk?lpo?|6Cjժuu7 Y={|<T^֬=A>099.:J%, RF8>tt vMOjiJN ?/nIENDB`PNG  IHDR00WgAMA abKGD pHYs  d_tIME DKIDATx͙yT՝ǿᆬ^ګffSę`p3J(ehD='88EL`20M@i\h^k{!n\띪{xƭs`SL؄%&EO ܦf_zKKg@gHϯ/| xBŶ}o<*n"ҐtL4Hp(#vQ_uEF3oܑ){9 :ƀwkU~P#kNɻRJ]@рN/:bJ3ꂨ4U+1#x`m9U(w&fmo П5TAzj>A6AH%d06/P VB1+UҘ!H*D\( @2$B䝋F:Xp㿟d]ƕKtQ%U*;uQ/=1U}F [/w]0H):6PNOMo:,87YGM᭦i~\tZʕBtcΜn:>ۧe2kr W]WJWw߿*tKr 7ϲS)n/z$5|l{{k\|~q*Qso^gg^xH>&J)֎769?ݶv(H=4zϯ.] zbÆusf)i{Ӧͫ{޼^_;pN\G?R+uuݭiVwuZxY V=Ԛ§'0aE@QUb8UQ|̝;g0LݻK%OAwkkӏy3>-r5wZvmbEJyN{;J%%owahgK) )njj"k4EQ<| W(BD"z*JfRHŧכ^z-x0R..5k<3; >yrYCUI< FL&xޡ#`pp۶+ ']*p%)=\SSl˖-w}=<x2ھ[nnrA0qbs&DnnV7kQ'e@LqΊGi2.4e2B :r]vr3c\>CoM9!Z s" `μ!Qs'rA%1wz [7cWB?`ݍwmg:, Ẑ/ QQI9lEWles'OFO_/wD>_@a`.EUU3{?/Dq" ܣyK*C}DNРAEP15`K FL!8,E&ۭ&aq6!DkM#ru:(Lq ( #yd̃9-z!$\X1Tl.a{&U 8R3T?GUUDbqpA!@~(4j\e! AQU! 9 '9 H(3cGp_?CjcxŃQ"([R 0BjIH)!% p(. @Hh- )\("$PK>ņ4( qK4<7)(<(8gBu<`SrM3IWXTHXDʔBi0" .PG7wס>V0x?\PP):P.(G N%BQȏU~t?Tţ`Rr%"`+< O  (@0M Xu$77"s )(e\@H>gq?=-*\$ʒ "Xt||O{- RB`(G0A]]=e´LE&@=8B| @:ǿ^;._/B'UPiYա OZ,.$T!)6tq (8B@(t_Z{38qgѢCpu[S&tT9p[~h8*e";4xPU8Lzey`׉oaxW@H%86dr uh*4MC(Pi(sdDb+R(KA)wg}v~)M֥@2x2}H$ P, sPsB`/~B!f l BPn0/;f>aʴ Qa:a)EBut#!ڹh=mid9Eȡ?h1^UIENDB`PNG  IHDRY4ֿdlPLTE $$$***444;;;BBBLLLSSSccckkksss||| %%++33<W U"ezmJn &iBr$zRpnBrQ `R6 ]+ԗI.$gŪ.+cW_FOT}w3zf*z?pHZZ}@_#ĩ(zE,UG7R Yʹ'jWZfl'y:~nV!IENDB`PNG  IHDRd4KmlPLTE $$$***444;;;BBBLLLSSSccckkksss||| %%++33<l,cIꤛ*$Up֪1#`GI}\J !oɚ; ->,o&aB>;d do0pN~;1zg[$_ sJCrQ >Ib@j 6en,KwM );?Af˥ ) | :eVMgN:AiY]i^n] ABWe}ŰuZRvmuNe8Dr>m{rzI!8*_5-IE;C,rm/T#gZ<.w)kS]z ]TqDIN{IvxY..uû%Lpֳ @нgnk}yk^Yp\Ną8vݾJ5On O{$GNNЕG ;IENDB`PNG  IHDRY4ֿdlPLTE $$$***444;;;BBBLLLSSSccckkksss||| %%++33<OrnqZfv{Cz!v~7u]VA>5z$wZh^~X˲ 9FkP\TwȘBi"M" 0P\M"r-1Y8_ZНr299gIC*: xSDɏ=  I.`IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME 2IDATxitՕz׾}l$yb2L$3!9>̒ 'd2!8%$,Îc0lql[X%yӾY[Zݵ2^$#0eU]޽ B<&E,OHli蠻}.M&]+K/-:y8vǷyxߢ!BqcsCA)!$*ZP%oWOhm/{ys u)6ܲ\bb1,|B|zvUa73ڍ!ZtH-;bUOjm_ݷ6IIȠh~!]E7LaƄnYrvדQ-]( D%y22uiӠǿ~ʚ>  ~~@0tu^ʫ+: ;ia۱;팍L**SaعiT."ٺuk|w6^(&B> 7*1>鲛ۼ $!Pgih0B+ Pag7jt'm.}pJ_x|OnU,ݧ7#@ʳ &( (6,: !Rɖgp+P䆣](9 <|≷_]xb=l,L=PN߳BQ~nD.iuk*`cY|%%$wO_ ߧ:/O߼ՓYWv`.)i}YuznDQ,"((( A2Klnp?@Sv1<{ײ-)(Nxx^'whxH-6 ISHUH(M NcIiRePh΍&94Ɩ7+yM%Ekkk5Ī#6߷lJ>zgS)@Eqqtu1UQZlPp X;_#`=C/oĨ*C0!dӸ}k>"<Ɣf >s'!qF|ҵ `?ډhtKFLLKϏ5tm Kއx7#(h(*Hc?|=+{N\?prh~!M{a Қ(@l$H)a &]O zn]ȦޟvEŢm; BvYU>M` AdKXN{*Rd YI Ma oi#0:T(Ǫ MNƤuIw<:%!0Q G6b4)FtRԵĊ@}3/I?eB y'H~t4ybJh7\XҒh8ܶևJOn %IJck!n5٤&_#Ӛf2Nl{HSh2TQ!A A5|M[2L^T2*NLX~ӪdQ>#]:R/+F8lbXƄTTVY|h琈Y[.J k,ӉazSynmQ;D޶#"xw?$7j6ݡ0L޵yh_e Lq18r;@WP3M?n!0{p`Q$:FA /#89Έ2Dv>5c'}KMK>aܦb:8lVI B7MTM\3L E~e!̞V|)!,vZFbϝ[bAKb],nƱn:LDz T ArV.͘ɮabӓh6b(Rb(*L g0jBh fd W0s8k@Ip!>э.̐i)hаo3vE|j,`5 ,INf"㊂t!U !%yӕ vv9yq\,(iM*{zF2tTiRkrxٍUHIOdР)~NYe iބބ)nEA=&ͭzENid][^:2&ɣC8CAi:2ķvC>rOb%L$4)˔@p0H]ǻ<';{GIlB"ًH0,A^Ɔ'C'k`eddy|/ :/=s҅h@sH5%Pg)Qq( 4 K6?=#Cֺ[T~uu`g-)emWl̈&6CLarE1 3@=a8~W HL"zI>~ƒR"- ='pq.o5”&W.8V?/9Y -垕ko~opj U0q5>UDb(9ٹ|$$a)a|g؈S]4:^t%C9,Z-EJwY .3n0܌+~VP)U,l5K)"u8Iz~:+&Fł,گ^=I;[;1~EUã^x^IAMa$K}bZTM#v\iI(BAJ !j!Ky},\R4zwͅ .W5oGZ7'.`Wiw=Sz:D 0u閊eH)qxlx()yW#ͻfݗTZݷT>v!S:slzk닛z{N4s+([X?< L=D^E}}`A`ԏ"-+"Ҳǩ{w?)Ρo}{kkKʺӟ췿|=?~}xR7L=aTNvvɸo#F'N*{.Mksp_)?|?~㋇kFat=-@J n8mrRzS,.ٛkoL>w/h|2Xiƶ#'ArF"c ?|UEc^o؜~!_2uK3IENDB`PNG  IHDR00WgAMA abKGD pHYs  d_tIME RA7IDATxřytu}%=Œ-/`lma1$ IfmNۜ&mI&mzH8 a/62’wYӓޢeƄ=;o93;|Ŝl/ُvrmŗƒښD ө+$7/eU%eKc:w=ޚѩovw, 8[=˻deQRSfW ~ FPG7t5͇*J'83G1ǘa:6iPƍ}P_}Gp42 plOEQQ˴؝vfB t >7)D0?;|>*r|ɇwoIJH^yűc}!,C:.d7 MSP4F8o X:L Mq29MS?{`V~gџy_b]+ڍoԏX)/0MPPlXunEA(*@JAk?{uC;RQ!7|Dx=xu,LX|gr?ka3Y( # .oo|bثsU,\ͣ&ggqك%EDˊAZYug0ڏ(XEvIi<1!h ٗ;Όv$΁'^TV؎o]C7z6l$.-Q$\^Bp`Ji* U]XRcbaRePh\B,ln4 {ws͖ke%=\PPCX/kn;|u[s|Qs:>D#CGp 0WYڼ٠jߎh 2.rK!"G~{7-(4,̥uWּqXׇPxUdEEN25]3 Y)  #ä(-p|Cӏγ9zGwboC {+EQ>Cz~:6 >8qƱu%5ŴmF? zR7=i#TwBK?/&>DJ&<| EvwgUMBcW*LF{PUgIIfw p_ٶӳEw**ĤLZN%N|K<`}jY~ySaS$e9 sf|^KSi+EHAX?nIcweּ 4RqrZwLH xN0I|N&K{<1%.,4YDkk LOJ|uǬ VSxS'ۚ+ɭdu?A ھ&>wfHSiTڡ>S++O$dY|aܡc:GD<6+\([覉i.jqQXU"{ocJ_<1nn' C25.̈i)hĤRGSL4/p:ހT$/;YE?bzxYUCH BAa0mG WQ/^iDuǁ)%^d 30lWcɽ_A>X l ӂR2b6hpٜ3=X67viCU5) ^G3NkOUy[sljўQl!R5<,~!R@4Yjsٵf|=ȰAϩ^P T r3;/ x6FQ=H-18q Yhzӳ:)S8#a8i: Xl)ȭc M<I)cNXj:[fH+q2_KykGƾ.h6)*1jL?պLE?2ȝ@AԚӄZﺛn@w7_1)U*l!vP#)FcTex oKsOo=?hqS>RMZQln[$05l'Nr,o>D$AJH)$<}WB*iQER5fǦX(gxf)%Bbbb iiz&t۝WܾN6u%dp㜅 !mx܈D*ZXP4 EYE'nGY]_e 4LN5@8AiƛJŲ%߿ͷކar׮]j;S\Rigz  U@QL9,$25:@ҒсpL,BML?p& %ff21ajJ+Xzy-aUWr螜LEW ={ٮ._ĩcTüz>XSSǢ(`4,=zw8^2S9̳ۜν Y|oomHsy96w^7m$e#DIpX 0grM, ?@bKTiu;1QL3U*eÌ7<߿ܾsI yqzVߍ CX\ѡ12`r|>;m]^MxŲ,b5Op`xS rmruWo%d+Y/?}dyZcc_Lb+-c9[h 1ǨN|`b~0u&Yr(i,]_@eejd S力WѰg|3QtB0a`bIII!z%@kK ׬[  f&;]ceu#D0̽0|-eH!= lg3DB!TCv(XօjR $lēBb4%fv#dzzظ8+шBUGCPѨ~#!{OP;n^F.[cJXuAPRSY.3a3wB1>ƓQQWL~aP B|_ !"p(#GFp]\5ezJ/oqwW'+ʳ&^u=11lddpiyh$`&ϙeH)qxl-)%O1ٝAMtvuQU CQw+0_[n!??Md.А_tukܖ;܇=}OTN7t (Ӂriz"FFpźEzN*Eu%f0럥7I&o^ uD]]WŹjfcΝtvvDXBő_1?(/|鷭kMm 2R(\RHl=j"XWYB2_#2"'7eHsǙߥȉNQJf~lv{ >>!iy[\wCg{Х+f[O4v."jFuΙNT22Rߪ[^֐~kwնn3%6 _PW'Nm6RSS?Luu5>(۷oMRR@pz_k{%5r7[[ZF[KfC*M77)YI4 dtdd$h\b z>kk'ѓ lD23xgaǎ(wjlVʴKܑ}TTdo-h>Zf:r{CUy%3=]lBNm[$r·VQشPr'cc]oӚ YrRǬ_t3 Һ5LMt7tڝlPon׮c_{8Tt}sm IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME $"IDATxy\Gu444IŖd,6vplBB`!'bLX-8,[P,ےlF4fgzz}Ւ?Z`Wu{*;pT׿~鿸r N;4@5bu[=Gy^򭝯.&|╱?m'N]6< xxko\ϡҼLSdž,(sn 51 pdojIZ/gl{;֑ʲ&X-\҄\72c[6ipg7爐eW -wX(Z;:F`lJeBk}~BX%KB`SlmַaCy ^ڷwqvh3g4g~gIcYy/KH|?ӊ,˯ U5Ó,urǟ[ϩkY̎Du.ZFَmkd),BkMKg3Sī(sdy0`9-s@ ݄InVvlFSC+ ~O !{];}7Su,oo’Nr7c0Jm , h8!s188xI"=kns]!>x-=޵7]ˋO@1[l }yCCS2,p g}ÏQ tď6!W,D-PI*?'ƒ@|4ug/ʕ}=,D2 $3Ʀ8T)C0<ڔL(~*3O&K0=9 V,˦@? mH'o|=ʟwNgVw\H }B4U u&1 vBtBm_G;Ȓ˻JW7/}=D*qµK@Xb1*Q+h!(- -8=0m q~^Yk ,.Y cd3=s&ۖM݇N'E<ή/|ږȀek!mj'_d-q裏u( c&N"fw.] 3كGYrz&d>>LubtTDׄuΝ'4qHݷjUG5|eӅΚJv>sl :mrv={*Ztw 0Bj Uj98vAitu2(&Y{y4Exj&'l"(i4oOǥ.;ubdpX]aWHclI>$8 P}V?s#DY>MΩ׼z,_U˓UμsR4ub5&[pnakM."# e(thtdb&d &j#e1Wwh6lP-X+ r(#08cbkYt۷8lHxo0ϋ*Bڧ#Mbǣt,[H8e^FJ,#^#0\]ãReVpY#/QQ(v'(Wc1~Q` S? LM7_Pʦ:xcT&AZ6}b@̟ ~ *R3D ґs# 7HWa)i&0 PZcXDZ]JS=Bʬ@'-6Ԓ,yGdla  IW 2BcL(ƒoeaᮽMC{3 R ?PDa1ض+ƽ@[[3a?SDAEwDre%Smdwץ]fѲ e ݓYcGbC8¶0X?C.cˢ7]#=Ne#|koyg2`=E1wFX3t`;0oIkXskƽ|Hy ˲n+Um`Ԋư?]˩fBA@tW@`0 Fss0Lgǃ7헬bK:yJޮ%FAk1`ilee[[nSR*^-zaRh^j^܊2P>=rrȆ#lz_>H\>TRZHQ* < FK(z~ RS+R"Y~m45XIN!,0_c4ig0#| 7ٵY1PT |1|fƃBc1C)JIh1033C2 _ I.+{e53[|̭v}ӝy…bR0إIGhio`?h˯`]B+EkK#--RI4Y uA]TEs̤3isa!UV̶%FTUI)` >^HF!`֬^0TԒHr64p#c1c/I@*^˲ Ar٦oZ=Xv/եjJ & 'SUcYrt @ =&A)m88BYql'D4rlB 7k~Hk.st˼@REJ ՗q|1:2We ]v6R\r%%2QJr1ihlqd" Rv8؝ޛoڛm߻ ,^wۮl#)٠,dkr~/  1|% h HW,"OKW_Bss#(m)̹ {a߽xٚex⛏<gD*,Zŗ.L&HN7֤#/=<__ `Z z6}l{7|]l~q"YFj\Ω!vx˲QJQ?bEp|o,@(b]ࣤϒl2LRUy>5 $P>RޅWO}]ݧ͍w̶OKK'5 z6[f(I X九2xUW3PUU5{ h~0|x;=ӛ1o|knb1X}'ήc =|iǗlPNݽ,[M<`J2_Jo;n%oun[|Y7z;=82PH`)H`[6ʀ8ũ3;pvL@IMؽ?}ݽȽcuK._JSGP7o Y $!v RPMcB< m;N!ѺDk#Jh<1:Qguߑ~GFg$SzP^'-s%ZŶ "Cfj{S E)^<" l`4b!(&ELLGW,ͤ3dfX _A.F㺂H(L[qeƈƢkX!2p@J2' &3>2PBX|CؠT)"iG]Z>r/knqK2T)e4,ᠤGXĴP?B ,ۿr,mS娬f|b fff&^ZO._ٺ v}g_yK ]u ׭"c1  31> yBH&c iSrӓ3uc_q]x6,h9Dp$B1#0lt&LRV^Nb=IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME 2IDATxitՕz׾}l$yb2L$3!9>̒ 'd2!8%$,Îc0lql[X%yӾY[Zݵ2^$#0eU]޽ B<&E,OHli蠻}.M&]+K/-:y8vǷyxߢ!BqcsCA)!$*ZP%oWOhm/{ys u)6ܲ\bb1,|B|zvUa73ڍ!ZtH-;bUOjm_ݷ6IIȠh~!]E7LaƄnYrvדQ-]( D%y22uiӠǿ~ʚ>  ~~@0tu^ʫ+: ;ia۱;팍L**SaعiT."ٺuk|w6^(&B> 7*1>鲛ۼ $!Pgih0B+ Pag7jt'm.}pJ_x|OnU,ݧ7#@ʳ &( (6,: !Rɖgp+P䆣](9 <|≷_]xb=l,L=PN߳BQ~nD.iuk*`cY|%%$wO_ ߧ:/O߼ՓYWv`.)i}YuznDQ,"((( A2Klnp?@Sv1<{ײ-)(Nxx^'whxH-6 ISHUH(M NcIiRePh΍&94Ɩ7+yM%Ekkk5Ī#6߷lJ>zgS)@Eqqtu1UQZlPp X;_#`=C/oĨ*C0!dӸ}k>"<Ɣf >s'!qF|ҵ `?ډhtKFLLKϏ5tm Kއx7#(h(*Hc?|=+{N\?prh~!M{a Қ(@l$H)a &]O zn]ȦޟvEŢm; BvYU>M` AdKXN{*Rd YI Ma oi#0:T(Ǫ MNƤuIw<:%!0Q G6b4)FtRԵĊ@}3/I?eB y'H~t4ybJh7\XҒh8ܶևJOn %IJck!n5٤&_#Ӛf2Nl{HSh2TQ!A A5|M[2L^T2*NLX~ӪdQ>#]:R/+F8lbXƄTTVY|h琈Y[.J k,ӉazSynmQ;D޶#"xw?$7j6ݡ0L޵yh_e Lq18r;@WP3M?n!0{p`Q$:FA /#89Έ2Dv>5c'}KMK>aܦb:8lVI B7MTM\3L E~e!̞V|)!,vZFbϝ[bAKb],nƱn:LDz T ArV.͘ɮabӓh6b(Rb(*L g0jBh fd W0s8k@Ip!>э.̐i)hаo3vE|j,`5 ,INf"㊂t!U !%yӕ vv9yq\,(iM*{zF2tTiRkrxٍUHIOdР)~NYe iބބ)nEA=&ͭzENid][^:2&ɣC8CAi:2ķvC>rOb%L$4)˔@p0H]ǻ<';{GIlB"ًH0,A^Ɔ'C'k`eddy|/ :/=s҅h@sH5%Pg)Qq( 4 K6?=#Cֺ[T~uu`g-)emWl̈&6CLarE1 3@=a8~W HL"zI>~ƒR"- ='pq.o5”&W.8V?/9Y -垕ko~opj U0q5>UDb(9ٹ|$$a)a|g؈S]4:^t%C9,Z-EJwY .3n0܌+~VP)U,l5K)"u8Iz~:+&Fł,گ^=I;[;1~EUã^x^IAMa$K}bZTM#v\iI(BAJ !j!Ky},\R4zwͅ .W5oGZ7'.`Wiw=Sz:D 0u閊eH)qxlx()yW#ͻfݗTZݷT>v!S:slzk닛z{N4s+([X?< L=D^E}}`A`ԏ"-+"Ҳǩ{w?)Ρo}{kkKʺӟ췿|=?~}xR7L=aTNvvɸo#F'N*{.Mksp_)?|?~㋇kFat=-@J n8mrRzS,.ٛkoL>w/h|2Xiƶ#'ArF"c ?|UEc^o؜~!_2uK3IENDB`PNG  IHDR00WbKGD pHYs  d_tIME6 RUIDATxipTו׋]HdXbCgLc{;T55x*g2v&ql' !8,cvYHHbѾ"Z~˝-@ a$09Us=s_? m)_VބV:ZQ사TJ0}FRg7~u|I?3 7?sNWv/hMn'n $ u5'p_/CqY*;9~߻8rWMUK&( 7rO|>_ُջ|P58!J}: ;ia۱; **c!;<߾8f-*%ص =-kr?͛"~~%U80~(!Pih0Ƅ(`09l/ԞH|덽{n-t㏾/㾬4 aWp%á@(\.c0K 8 ,!/ 2҉ 8GҴD/Yæ0w\F 0 !ñgS6óx}?ꂬltCgMŒD h}vTE݌4@QT5 ߉z/N?oB :ᮭ%'ItybJh1"ħ&RsyMO>K/ ǰo>[-IQcɴx0" GEGV1U%Pqb@MЌ\@k3@%y9L HEF{EeѤDSL'rt ѕĖ_د$-i<%v)0-m?v92yϖ6[&w#hB&Agͺ$g 0mىm"Ա Plj986!$MJZ 4r֕%BðLwa:XlVQ B7MTM[y9I&T{;Yy8dv6wcL KY;҅#.W|DpZYf“Lj_:"&Ekn8NZqv4U# iZ*.̸*sĤ'pfb(Rb(*]]5u `@5 GECh z`@!gԅ## >]*A2@SOwؓvE\J @*1>կ ,ɌFQ<BJ ++P1Ҙ?ls\_>6IH7p;0DU''de7a'47&#x"∎b9x4Uc Cq]@2:B@gzCAE 1sEf, ]ᴡHԸ(?3?৵VUc Cag j=!^cLdeeg ;ȀAsm R(i|L+nWHM?{9IQ(--\pt g EQP$ޡK'`X] уƅ92L2s3i;ƌ42]3{m3Mf-WS uZH 26 EaKDQ e4UfcMǦ?eI)Son.)\|6#6-M1 Wez F]G(g:f^zN@X&&(Σ'"9+oZ 9H)DZ BY(A@S_SbV^OS*S4om ^?{}-KLkme#XR-:_c(30gqTH-R9 &؈SXsSxEAw ATt$-ٰiCT8**nXз\Wzo? _猷EQ1MI9Ue\r>pȌIt[YdtIU`^Vm\șS,e"1H0g^/^@JIzN:#,m'}EUqc1p 7KqK?Woml8zJ6&/O,";@ŕT0-V5b(-Io|:[v¡5_䗍:%1k#xk"??iq[})aޞy_tgqtp+4 E,DJ?}AoSof7gOW] k&p^>D@_|JcG)$9+E7@w\nbm{ّQ gT9g& F{kqbLړJ?ͤĘcuG]=B̜BrKs,̦ЮZy73CjZ>>Z`˅FFt\+OfmgQ<24xم]Z!n-}6Ϊ>cN9ʋ[Xx`#7W& E_-u/j{Έڷ49g@%R#h_2+$ݚ+EOOJwсJwt=<]f]9Zheڦ'+EW _)A>Lx':+Erxjqu_2??_$ 3WvIENDB`PNG  IHDR00WgAMA abKGD pHYs  d_tIME RA7IDATxřytu}%=Œ-/`lma1$ IfmNۜ&mI&mzH8 a/62’wYӓޢeƄ=;o93;|Ŝl/ُvrmŗƒښD ө+$7/eU%eKc:w=ޚѩovw, 8[=˻deQRSfW ~ FPG7t5͇*J'83G1ǘa:6iPƍ}P_}Gp42 plOEQQ˴؝vfB t >7)D0?;|>*r|ɇwoIJH^yűc}!,C:.d7 MSP4F8o X:L Mq29MS?{`V~gџy_b]+ڍoԏX)/0MPPlXunEA(*@JAk?{uC;RQ!7|Dx=xu,LX|gr?ka3Y( # .oo|bثsU,\ͣ&ggqك%EDˊAZYug0ڏ(XEvIi<1!h ٗ;Όv$΁'^TV؎o]C7z6l$.-Q$\^Bp`Ji* U]XRcbaRePh\B,ln4 {ws͖ke%=\PPCX/kn;|u[s|Qs:>D#CGp 0WYڼ٠jߎh 2.rK!"G~{7-(4,̥uWּqXׇPxUdEEN25]3 Y)  #ä(-p|Cӏγ9zGwboC {+EQ>Cz~:6 >8qƱu%5ŴmF? zR7=i#TwBK?/&>DJ&<| EvwgUMBcW*LF{PUgIIfw p_ٶӳEw**ĤLZN%N|K<`}jY~ySaS$e9 sf|^KSi+EHAX?nIcweּ 4RqrZwLH xN0I|N&K{<1%.,4YDkk LOJ|uǬ VSxS'ۚ+ɭdu?A ھ&>wfHSiTڡ>S++O$dY|aܡc:GD<6+\([覉i.jqQXU"{ocJ_<1nn' C25.̈i)hĤRGSL4/p:ހT$/;YE?bzxYUCH BAa0mG WQ/^iDuǁ)%^d 30lWcɽ_A>X l ӂR2b6hpٜ3=X67viCU5) ^G3NkOUy[sljўQl!R5<,~!R@4Yjsٵf|=ȰAϩ^P T r3;/ x6FQ=H-18q Yhzӳ:)S8#a8i: Xl)ȭc M<I)cNXj:[fH+q2_KykGƾ.h6)*1jL?պLE?2ȝ@AԚӄZﺛn@w7_1)U*l!vP#)FcTex oKsOo=?hqS>RMZQln[$05l'Nr,o>D$AJH)$<}WB*iQER5fǦX(gxf)%Bbbb iiz&t۝WܾN6u%dp㜅 !mx܈D*ZXP4 EYE'nGY]_e 4LN5@8AiƛJŲ%߿ͷކar׮]j;S\Rigz  U@QL9,$25:@ҒсpL,BML?p& %ff21ajJ+Xzy-aUWr螜LEW ={ٮ._ĩcTüz>XSSǢ(`4,=zw8^2S9̳ۜν Y|oomHsy96w^7m$e#DIpX 0grM, ?@bKTiu;1QL3U*eÌ7<߿ܾsI yqzVߍ CX\ѡ12`r|>;m]^MxŲ,b5Op`xS rmruWo%d+Y/?}dyZcc_Lb+-c9[h 1ǨN|`b~0u&Yr(i,]_@eejd S力WѰg|3QtB0a`bIII!z%@kK ׬[  f&;]ceu#D0̽0|-eH!= lg3DB!TCv(XօjR $lēBb4%fv#dzzظ8+шBUGCPѨ~#!{OP;n^F.[cJXuAPRSY.3a3wB1>ƓQQWL~aP B|_ !"p(#GFp]\5ezJ/oqwW'+ʳ&^u=11lddpiyh$`&ϙeH)qxl-)%O1ٝAMtvuQU CQw+0_[n!??Md.А_tukܖ;܇=}OTN7t (Ӂriz"FFpźEzN*Eu%f0럥7I&o^ uD]]WŹjfcΝtvvDXBő_1?(/|鷭kMm 2R(\RHl=j"XWYB2_#2"'7eHsǙߥȉNQJf~lv{ >>!iy[\wCg{Х+f[O4v."jFuΙNT22Rߪ[^֐~kwնn3%6 _PW'Nm6RSS?Luu5>(۷oMRR@pz_k{%5r7[[ZF[KfC*M77)YI4 dtdd$h\b z>kk'ѓ lD23xgaǎ(wjlVʴKܑ}TTdo-h>Zf:r{CUy%3=]lBNm[$r·VQشPr'cc]oӚ YrRǬ_t3 Һ5LMt7tڝlPon׮c_{8Tt}sm IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME $"IDATxy\Gu444IŖd,6vplBB`!'bLX-8,[P,ےlF4fgzz}Ւ?Z`Wu{*;pT׿~鿸r N;4@5bu[=Gy^򭝯.&|╱?m'N]6< xxko\ϡҼLSdž,(sn 51 pdojIZ/gl{;֑ʲ&X-\҄\72c[6ipg7爐eW -wX(Z;:F`lJeBk}~BX%KB`SlmַaCy ^ڷwqvh3g4g~gIcYy/KH|?ӊ,˯ U5Ó,urǟ[ϩkY̎Du.ZFَmkd),BkMKg3Sī(sdy0`9-s@ ݄InVvlFSC+ ~O !{];}7Su,oo’Nr7c0Jm , h8!s188xI"=kns]!>x-=޵7]ˋO@1[l }yCCS2,p g}ÏQ tď6!W,D-PI*?'ƒ@|4ug/ʕ}=,D2 $3Ʀ8T)C0<ڔL(~*3O&K0=9 V,˦@? mH'o|=ʟwNgVw\H }B4U u&1 vBtBm_G;Ȓ˻JW7/}=D*qµK@Xb1*Q+h!(- -8=0m q~^Yk ,.Y cd3=s&ۖM݇N'E<ή/|ږȀek!mj'_d-q裏u( c&N"fw.] 3كGYrz&d>>LubtTDׄuΝ'4qHݷjUG5|eӅΚJv>sl :mrv={*Ztw 0Bj Uj98vAitu2(&Y{y4Exj&'l"(i4oOǥ.;ubdpX]aWHclI>$8 P}V?s#DY>MΩ׼z,_U˓UμsR4ub5&[pnakM."# e(thtdb&d &j#e1Wwh6lP-X+ r(#08cbkYt۷8lHxo0ϋ*Bڧ#Mbǣt,[H8e^FJ,#^#0\]ãReVpY#/QQ(v'(Wc1~Q` S? LM7_Pʦ:xcT&AZ6}b@̟ ~ *R3D ґs# 7HWa)i&0 PZcXDZ]JS=Bʬ@'-6Ԓ,yGdla  IW 2BcL(ƒoeaᮽMC{3 R ?PDa1ض+ƽ@[[3a?SDAEwDre%Smdwץ]fѲ e ݓYcGbC8¶0X?C.cˢ7]#=Ne#|koyg2`=E1wFX3t`;0oIkXskƽ|Hy ˲n+Um`Ԋư?]˩fBA@tW@`0 Fss0Lgǃ7헬bK:yJޮ%FAk1`ilee[[nSR*^-zaRh^j^܊2P>=rrȆ#lz_>H\>TRZHQ* < FK(z~ RS+R"Y~m45XIN!,0_c4ig0#| 7ٵY1PT |1|fƃBc1C)JIh1033C2 _ I.+{e53[|̭v}ӝy…bR0إIGhio`?h˯`]B+EkK#--RI4Y uA]TEs̤3isa!UV̶%FTUI)` >^HF!`֬^0TԒHr64p#c1c/I@*^˲ Ar٦oZ=Xv/եjJ & 'SUcYrt @ =&A)m88BYql'D4rlB 7k~Hk.st˼@REJ ՗q|1:2We ]v6R\r%%2QJr1ihlqd" Rv8؝ޛoڛm߻ ,^wۮl#)٠,dkr~/  1|% h HW,"OKW_Bss#(m)̹ {a߽xٚex⛏<gD*,Zŗ.L&HN7֤#/=<__ `Z z6}l{7|]l~q"YFj\Ω!vx˲QJQ?bEp|o,@(b]ࣤϒl2LRUy>5 $P>RޅWO}]ݧ͍w̶OKK'5 z6[f(I X九2xUW3PUU5{ h~0|x;=ӛ1o|knb1X}'ήc =|iǗlPNݽ,[M<`J2_Jo;n%oun[|Y7z;=82PH`)H`[6ʀ8ũ3;pvL@IMؽ?}ݽȽcuK._JSGP7o Y $!v RPMcB< m;N!ѺDk#Jh<1:Qguߑ~GFg$SzP^'-s%ZŶ "Cfj{S E)^<" l`4b!(&ELLGW,ͤ3dfX _A.F㺂H(L[qeƈƢkX!2p@J2' &3>2PBX|CؠT)"iG]Z>r/knqK2T)e4,ᠤGXĴP?B ,ۿr,mS娬f|b fff&^ZO._ٺ v}g_yK ]u ׭"c1  31> yBH&c iSrӓ3uc_q]x6,h9Dp$B1#0lt&LRV^Nb=IENDB`PNG  IHDR00WgAMA abKGD pHYs  d_tIME 2n\IDATxři\yu}zfzfhFF8B, ,Nlĉ񇼎q✘ % !2Bb m4B;={ЃyΩݷg_w!ssɊC'{-X92x+hoobpC'mǦuo_=='\o'Q>ybGZ?;SsLO(9_O(إ\{DGSCMr`} w٥]uN_w=K9rp NUMR2:u3r2?DM|:cc} .xG:q_O֏{/6Էгk⸒|d#m6rGLɑ) *B\7XL"c/5goZ:|#]wM> ^Tx^~/D0(l1۱Rr ޽Lo48ωoZooknٟAtavVglMۣL0 R\J^&΃2h]2gLܲv}`M]k}?C۶y3lۉ)4o{/H Z mhX,⠴EleZ =kA+Ċsc Bc2'WqO|Goottt|zllX/+?|뵼ċsE\Zw ^75Eq]Xe\U%yT8̐Z&}BJ.U~?#w?Ymvilsnt}' {*ikWx\L6)^˦@ RLc ѓI:ty{bc 1ڣ8xH"şpћzw3y6Zj:)uI*_au2X&["t(~W5c3Djw(5Mu96v<4Y~g+RB= 'pq;jZU2Z(&\Zat@M -&|nMѕO6s&Y[a+3jywU|Mt|響Hc2Rwۯ~?`/}<鉲}̋,'2T,Ҟٙdۙ15Wɥ38DHu9vQ)nwWX.'s@cf߬eQ>UկkSU; )‘Ӳy;SB:Μ&H W^ƥU*~#5p8g+XeZD=>W58TXS\#QUX0]xz۶) ;[ЛX2!P(Yn}z K$]46%\ , OL4VQ(4QPխd t*Oj6FִZ0мYH1?so{Y|тD"v$5iŸhoobv)8tq $;:A,&LIvS8}%\^[pf[H* Upٷcm1kc(O`hE}S䜿XU@Rܸ?rbI&LWE532K̏30>bo?ů%Ub+ߏm.G gڑ:aXׯ0CɊҵJFkJ"p0@=TJpJf ?>42?p-M-xT@S]B!6gp{op3hIPObIISbHlj%.*Js]CLOOտ* `v2?3Ɇs(GS<`,^tuНw! A4wnE+_) >? 9o׾SIڤߓ`J}T6|C/7u[Q."Vw[J%Aj!&T-$]j^xz/؋Q9Wa n_\)z Lp8L}C5Z60R(Da Dy{ϖ|l[|s̎>?9ώ5^j0L7R"j8MQKu2vd,Sxh`KAvkh R%RiJEUQBR9Ha9W072s>-wF{](?0P|LkQ{Ź$:I UR1O..TsLON2;31c H ѸRow<5iکx︎ د5i1-eu\4B a pei"]eq],?Huh*UHqHPZ9?g]wo@_K"\֏f| G@,בThF*E2"\ESS Џc!r5B]\W:ϓ3?wčc;Fǂ]܏#ϠtJtbnb@8 r4PU tm衩-J6/*檎 XG*IX"NI$Sd2Y Ee=yǶ);#x"[Ӳp8cK[Y%`\&L1qbR*ϪX@Ǐw<ū3]k G%%F2\.hjl m&)Kr9ҙ/9W>yM{l:SⳋqMk Z  l z57o,_446Z)tJd'J IumyPFJR.q'ӛ]|0mxxl0`Yc'H&Ҁ̑WٲuΞh4r&,˃.ZB~@{*$dcҕ}^*!橮que9wufWVRo|^R(Ri4Qx|>,"`~~& "JHW[|vM+ҕ %!QTa2;3Gk*)Ѫ+])aޭ􄂡(T 0]B+$1 bKK "Hw$c#]"OK),.Γ/YZXɩ|~?Ris7D)`+|J"JiC+L&[CJI<*"B5E)98,*nP>|ѩ)V]18MuM- K>fPJdqdB){J(& Bað‰X򕮵?.~m:arW_J aXwPkiy} "nIENDB`PNG  IHDRvdS pHYs  tIME  HyJ( IDATx}wՕ9RyF(g`1`c loژƬf(" ei$hrꞞ=$~o>ͨԹ~lD`| 4|!ho A[}[9 E Li0M @9ᏲH+GMc̟|HwCEӦU\|bQ4}O'F 8?ޏe{v|L зꊪ_ѤOmZm#e8#J(j1~B@<@tvE׿~]@:<>j->'ݯ7S^e OV!e^6עhU _ O:+W`Rej\dzi>j8(G_$o"c< cȐċCBSO^4)$NڴI:pUUje3{w+*:ѱݜjxBB߱˖1&\b"k\̓Ϸ' 0d$@L d+mW_ (Έ #XC ('~w+W$ZЅ͞W,v,co^b̍7~lN β&7FMӓ1` 1"@`W/zԔU<X;9_VsM9KsUlf"^*J[c~%wAqb1zk:S}aY@,!"ʍ@@, ǹ=ݽ]]9֣f"ӓZ=tœWNpd站2zC@;`҄#Ir Q&ҩS>X>t/=lS+_  XVC; RN@Lc9#xSSiP H Do_= =-IM1y{QT`?\'#r DDBp)3 t\(zFok:<#fp@$z8 !L3|`ފ3" )#^!/־iCu׻+Dt Bp2љ!@rzBLpNrFt ȬX hxD쩧b Gɋ1B)c|O3qpݽݲ͝;f{CLL 裉8Mu,N>,@.* Y͊ew@rA1:6ht = w}{pk9Mb,yr& ޶7xI ,P.‘ AT8%wÏh8 ^/]V`\ ad< *o k An7y_y (i <-D(xyiEt&cy|{4XlZ= h>"O;-U\ !BmcZ0awV˞p8mݳ@kȦR@RXTU֧~USX*U)JE kҀȬ!K 7> 39DȘhmwj\3fLbL᧞΢=guw,}>TU  ΑG.$1FDn6͛S'@ Xܴʄh왁iS*.ZxHEdy&DiYFt8ZD3f3[SHm(ngw\󃻧=%KtWPQ"B^ܶMy@|x 40DΩ25eѹPE{+֛jʖu<(ڜNn HY `h3չ0=Ri}n!-g5[MYka}w^3/;6IU \tqc8|J"Ϗ$\Ǟ>ꫮd{Ei pmcuG7f#""c1@+!&e_b&wM4Mujj|*&h…rtzWd!Ғ3HgZ?oYwwߴ٧HUE$yO,\`w "ms,Lx{^w8;>c ca׫,8$tx>8p){ ƌ ?'誟dٽ<م[i#S$߷'?A=ZM%) BE"%K۽̛ok_WUd2mǗ|ǝ-#dB,ƮD|+}pCd]_!3 3ҫ$hlTI)2# &}v 2+.0 %HPl;޸1us6ͪ[`?d9g󈮷Lf"l%8I97,4r"=F-Y#l|L3HwƖ- hX"o|sqI񐻄Xt l }k׊ H@<6pxO2e TU߼>eӒ^JcLq:k|oq1(D΃ǜՂ|lMB"0@@\ !hgjvW=u<{n9L@%쳔3l4/a!"V]z!Ɋc{{;y,l'jum2_/.Ģz }Ø*+'_G^xEF`BPrR:5@@ -͸HA.ucZ d=aFE灜3WIuyM Ct㫪G,{@ujeeG‰~[ ]ay=`KKKOOOii)S4M; >;{mtuqxm(+_ ec̛* G`s57"8)E VK/WnX zڶ}`WPoTKtiS{w_~kbd%l.+2eʔ%K̞=;+ *Cp6cCJȀ{5Bp7\ekϼILN}l 㦭a9u)u5eKJ#+G /J{B"Kj̒e FTwH۷nc>b֊)oi??wΜ˲[kCImar`}e[;רk_6p J{kWT}K #꛰c_)-qQ$U՗ ~m?3k [="T,W74"#,W1s}Pvz;;;>7mK=yΜZSE*L㦥exz%VJ"b@Ǭmo֗?pDb'>g/KZtPcH>SByM{=,P%gO])KBQ}Θ?%g̙woub UVͤslH(5^ML}[%&ҢٿXtz\s|ⷞ߰~HAD]"\ [E^|M 4x 0أ#gәĉY+;%c|M.r!w1]ݵٳ'_]YLre;wb×9t?@ʱ~7E%G͏b Ŵ Aޟ<{~c󦣺T+/&k-~wѓuuu&MἸ>ΘT<siLUcbܤPi:ybJ-wB+TuY;eahJRǻRV2M7W~Abcg_@gvlNɟy8^oto$?_x"#bRqG tY12|E%.0κS LRϬ]mmPJxU λMߥiEE:} Py㗾WS7 Aȑ-G;ԚuO,z{S3êa'w~̵VC殻*76~^Fˆ}>4wGtD ZϔS@M"/=>;hXzO:X _1o2fwqC S;ټdzT Si#5wmnْ8_pxC&wOzꕆzms=:n&F6vӸSnDH%Eͩ쁽R~U8Ko;MỾmqmÛ@~[?i+yup00k}9hqH*~}o~81SwĬ%4jL g9#0a3YO12`DL@"ܬvwM͝{7KÍ `8?D`qCUR)mͺyc!a d8==$ @%1Zq%9\4uރ'~%=[.3$XS._x][>c5PYlMP8x;EӞx&4M Hf 0yq #1GB$.(h 56".2S2+W!L 86#{d4q٥5g\NFbǪwYJ?٥W} ݭzBCytnS :v4Llq,ۀzh'BJxSV@@d4BT?q>Lvr_TkHDF'zj<_QRqD m^{0kѡvqH$UR||8_SȎPSrPҴ"m8IS-̍mȺy2 aۧȣ`^o u*Mֶsڣj0Ph`R{Sݿ;"bo|u|[֡Pً<z?,J64> 9䴮; GM"(  , _v 1\J8,ΘgD?eߞ= #x2 @t~ "ˮ>u,=8vるj&-miSEu qr[knu ҘzM"7`49\| #3fdNc1Ibc}VeTx*@弤VcmMwv,%XugH_3XշhZ@ HJ@^yq 2fz2e(XY4! '?Q]Ysy`(XNY CDh#:n: @NRk[Ҵz 9d և1eϷmݪpe1-ZeKpAT9MZ5Bqo!pԵ~Cy@i FitD BR GyM 9CΠ`!utebq#V{cY3:?w4A&χ6t߱'d$\Xv@2yp8G$qDSOS2 4Qs?{ξVI3UH(7 M mN CGB`.d=mO ENsl֣3iI'MSR8 kU9gO4fyo4^aUmQԴ A%5]n7SE%!߶wM] GE ]Y|K/<}za5Gr YOVbg$ISFXUeeC'w`1ԣoQ?(.1Uq%"E%bpl{-_u~jeB8Y$y4G:ZzaL"ϐIi{S҉$V_ ) J049֖gVWzB\b612CgeDfO$BQV$H@)k1vss;oVW86]RIB7YyƏ/$*PlU}ztn_6n|!|Kο}g5ftiyIFAs1t&O I `iS|b@R^_p5D4PLz#*ˑ(L xC䀀(Edf~z:瞳.K_Sҩ]6J)?yi"QQ*e"q^q>ujBUÝ~xo-X&QИIwdw1B?#*%D͙. dΉ#K={jؤ Ŭ$r(DbA(RHٹ0Bji2lEc8.^k֘atf2]w]$ 6A$qXlSO e%mz׿QZ "MMܙyq pH& ̃i›S$wB,x#ByBcqЯ ed?`xu!G.R؆W&)l~,|(E@urjػG+,9sNI!?Ug:qo6;U?5xjk[='땙  XqK%K{g::"+Vz[i]o~?-*)t'yFD@=)-MT\?+KXV D pŸk?!8ߧuS J *mmS24-?\ 1x噦E`dV_o˖Ͽ {ʦy䫯>mvvYDNm?7Êl'dYA>#_>c.8"<PG=TdWUj̎:X6/;̴F) J>|'.0B/bX,Vb#[$C5kNkO"hٵt}*Ub6z}Ɗ`Ē%GS\=d7.p4sMI@*+ʼ;0GTs; +DŽ.Fp1 %FppF+qJ88l22"d,\y}M<.1cOv~m3zӊb1憈%I*Y7Su__O $w8:A edMGus\O)O8P{T8T؈(7NbR(({UF*d2+k:> B!ߕW O>)l ҙk뎽:9cѢzzKЋ>nC:myqu9=|g~I$$[jّ!Eran.-#CLݻfhJ<*TȠ()S<=ëټ[TȋPТE:;9DUY /]6Zug?!)Еw] zuB@M0WN:z{M"HۻD?xp-oJ/N_{|*xJ7|%}hIyP("dt7}߉G<رgL?MU=Qrp(Ȳ#?%?H ,?ʝ (xɘ͐Av6$P R(yu~$"詤C|$32 C^U}PQ20&ӧ9WҮ={'M/V# Df?0h/)ݜNr偀,KD@E0$G" >""لB ˒ uyr{ \7řd tyڀ*x!By'焘L:D(JǑ8GH_@lT)=vW@nXVd@ b1h/N:W+9V%e@d \ر^tc,POr@njN!zɪPvk!$;@4.s uKR>cHGB~h~ yDG1?ƍ;眞]IAwdua|12qĭ@әoqxrom4w.cc< 7ḿ\>HE{zMt>86"IDՕڞ6LE T*-~`.DD,Kg*p0OK7<53ÝÇ[6>箸\fR7E|s QpIgd&!TR,MZ^Wyx0TAXa ju5d 1T̗NWi p|!0:If?@GK}$c_c//)|t`EEYT4ছoJR K%D8+yZ=?NdXލPj;gE$"6oN]>} LXzϏޯ4x}w|wn0AFHhp(C!G.OhxabN?OǛKη:#qIO}E<ΐ3-Kq1s.\x٧X').yd*q|cُ~/߳4Yg?z*G!|b8};wK>5o^$NvɂRwygݺo3τNzyRa~l'?TUIENDB`PNG  IHDRw4HbKGDC pHYs  ~tIME-'L#IDATx[yy@"v9pS)8xWWR&!ApڎsP1HV` s¥,]W@#0v VAؕ 8夒蜝tϼ9V̯{} 1C 1C qR i E(@H (! Bև6OB9@yCԡ|wB/}zl)Cw~߸ JN)/M[nhا$PȰ7woF(R0͓ lo@ߢk?O<P'GR@π!iLq0#N)C `U@塂IB|B" z:P@ jPA} JAB/Bx(d>xehZlJ) 啡|wAYPsc6W BI9@AU( p P~a8I(Ɂ H ~ Kf}FIT~-TLv'~M9`!T@g7p0P~} 7@pƦ['A肬W|a?eo`BoPS\zӋ*QH:}@6~M9@풵ec G ʤ8K0>m[3ic.0%lSl?z|EmZ8à"gp!`r6F~D)ئLZ0S8p, �Y `0yߥ8cK!:`R 4lJskEldi rFXn dG꜋\QWbO>&mX❛|`:`rLX9nZbv$cw#@wV9Hƪlf=>؏m,8wSwO:\M)l~Uƪ,(++*ۀc 8fIȚ580Hp-eI4[;lG9bpd#/}m峦*ƈmLdo= @:@VМMUV9V~uc#c '\)L**S c 8+(5);dpCSG6mƒ)8,˂)xlceC0,ڦdiaG `sA>3a 3}%t a ϙss\wWY2ڕ >m)8E+-XjM7?ʇh6_)F6 o`|gJxFn5e$bLцeL{׮|By3YBƶr\T;=`9s "}Bˏddsi6thdzߗƈō`  7Y|tt4^l۝rIaqBǓp2S`UƆc~n"-hLO: 90~A'XKiL~U#DAT^isաW*$kPHAu||M51Y0E j}b֍H n"RNm>+M^a̢ Ƨi A![hrѥ2AAQ Y+y5h:Htцnm: A ~|q-~eI@{b(AzK. =TxsY"G.tӹ?-Rݰ_W0}|/f7|l. Sp'"^*-OKC:Ĵm:\ $@*' #ܶ/ܵL5D Q(F&^;~RzeRY[>O@uFH4P/G4ci4B ii2=u#-ZD0pihfxM>2SyҠǯ/eCiyXc&3a\,S }\sCV!DOl\P`עZڂK%1#&P?-wu) ws\_#d4EfyT:]w}sƵnԺugB &p:DL sR-a,!]WciÏ5HjD|HdcxA2HPe Ds҂KOeԐD/"TAr,$5oNXsGc:#4GF|Zbb8/OǙ 眦޷ƪbDTfKf.-pc#cP -txi8Hz4hԴus/+*hF;{̸@ hm6N>Frn3Y;0H]ޛƐY5S i=z2+I_Xڿ0X#~lKYu> 0H|_U=+uu nS!AirV jB)C׾WځxRCG|xhmfˊKx^Q|?EJsku~w})~uk VܱUr;7:[ ?DIfގKocgk?OOІn R)r.QdpMfoZuh^}ڧ{U.מ.WjT\T*.42%&zz݃0$Z_.UpTLا-t_6o^\ek.(:DP_3K^?Xěחݬ?mCjCpU?)t[', XR/.MqF'C]3dگ]lhׯΚ\?|©RC vX/OLw'M^QuH.RJLls#T1BQ! @0B*R0 ܸ{Oɚȸ!8'7W8 ܱ\pd]:޷ٯ~&H}qxyS*R.U]J)0JQ/&HۄT*eMA(a $ ή`p )n|]7 @TwfmYB J`]|߈jvAE)?^иE*&`)%P!jZ ~B)@0 W4U JHB:dr9l| j1c$2?GQü;gHS0>rx'宄ۥG+!b![.F|m8?6F`1wHA'uh綧}0;UxOkw=`>xu`L@ATχz<<;h$ElkRoTK@S(eė*(J]_.SGXdPdB,{2q\y/$EUyd3IA'J 6+Y1o=Afh3Y2U3of%3inueW Sk=D~kꄦ/ҦyH/l%9س_Y ,T+|:U{9j%,UT2 8{/4*0z"ss,O:. % yeP]乕%fg.C֮_tnmr:я<)By:UfN-\'K-6WKy}2a؋C&kX4ĢiٸZ~v'kK(iZCl`J!Y2W+dqЁEGPLq]*8?V3/- ( $MH$IS% 4$~O b8!hrч ǎC +}cA'+RyiG"'K|KU$)QD1($qH%qH+l$!@Z-"hCwu y|Wp0_O_7¬RK)Sd5}\p~#ot0l I)Y_gWڄaNO>g^͞n>}]2"(%Ψ*<˲Q,\S3~I>wvE;ӴoXhn]oѱ(O."@t=0 su%9Ewig29u7$qB;j102:q8Ot@V_}7^{0V@.'S0$bFJH~$YF2YUU.UgtWDDP<ƄQ ȳI';VkdwLY!ʂ)aTT/\!mH-¸M?Έ#MR cNISHV V@:|,5MkqG!_Wx A/ FԔGaگ rl%![߹0aghSO=}cK#(L7dW(P4󘺁RykxbaN `;tH,׸h-uJE v(۴5m$IJ̓3*6Zj Sm :ȥ9(Z([55 粝qQp2>=?a}GHq24rCl!(""]@K -6w]~=v֍j \R(1)6FG]Ejײ=#3#a"40u9e77䏪9/c+&\0lt0DlE 9DB |u(fϐ)(>j JHe.vmY,˴NVp0%@Uf`vlr<=̟'Oi:iMZ.fw،( 3g-&/=!(>Hi:%E1<8:R OXϡO,,W" 3}!_zq4 Mc44"4 $!"4 A爓8 inM~ϓ<[a3mvv>KQpKsd`=ȤY0>Xۯ_";y&naDAlnla& ۏᰳ+;z_\fkJZ3 |S8b{p=P@W4LEdPP2K,T氍C6Z-C/+?]6&>M;~Ň柫/1(?XY% {% Ti k r鞞*ᯫ-~H㈂d!5Ȑbddabi4y ^ <~⃬f_|[5 OP] k < gD\T@!^Fy~ow >iśobQ(-IQQ+%!%Zi$77sc{{]#IC^y~r& qCǾ{sH5Ps3@q g i>~(#ق}>_Wр|!ϡi֝ v'# S$"G~#G;=ssǟ󄂫34'}b`P^wv33M S*|w  _yβM]Dz|/ #IENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME '2V^5.IDATx՚}py?;ٿ_+pka19S DdžN$j6L&&J;M4- d$q2VS(GS!.A- `kYhY']{kҗLgov} %l1oix4a*Xa04K7UE3IȜmH쳐<5X<446Bm!~2Yy6G >x9Ϻdv9Нq5ȥ_nPmB@6E8:o68.~Y,D[ 8ܓd%cAL]xGMYLT~ J]tjLeP4$>x?ӄtza_eQv[`ӚT:Gݎq wXNCPsyTo'9%D:R^zrm >*E`2Jx(%ss\&aAOvpJG*QS擷T /҉bU/t-Og>zb@}A&mY % _8ZTOp* Af xЕ,{$$UМvL)0BV7d dd0Y7QTKo97HgE"M /o:QKtw`N7)W a¦^]CPdĢOZ86@_AIFU) V;,;c33ispe+JL@/'qiRjlJfY餗^Y{a("NCɃDVs zKb@M ijϾJt vK \ɁRgfh(TCtto79Nư؝fl2K.ԋBt^,9~Hg-q z2{Τ a\87ўxWәe֮1رc`x;Sϯ}B%fX45c K= {tQǦu!%r~M(0[bQ{{Qk<dw~[rUP"Y%ّbW`h.)Bg8W/z/g0'_૏xd#P(H8E:;8`XA܊ˊj%e+/+@4Tl}o Ҟe'ƸoK lnF^5SԽRǟdjGv!LPyyV Pm@n@)! MT2d$:H؃첏b:_x7׿׏<0W>5XNfj!BSk\2\vARP)9a/0*ᵰINbnv㮡}7qdͼJygeM{{;y\}ܓ +ΏȦ-LPWB>κh+X'lt%:#J" JP {DSHJ Q VNI k*鷸$˜Q(( nݕ9}֬Y+W ;e팎RLC)$` KYs~K7i 3+3 DvLoewHhyLw@! ʄ˦PUYug7|K@qQ% R,x"+V7J=IR72{.as{\I5qS1uTg0 nFd-,1P-a!+.&>Fŵv$eΜyN*  yqIFG/ =a.ur@:=T̜Q %JG,ҹ4u܏tሉT63:)<;,ʧq^?[o?iLMMQSSCX$P, X亍M&xwդ`m-YWFP>PfQ|GXԡ^!: b =Trjw7ڨD)EXP(P,*Ja1\~%V5rG]Q١|bZ]*U,ڽikEz1;Q}L;4c U <q_=ȫ?~)ņ *EF/^d||r:@)^9^z$)J%֝w~fd&?;B[a`X7jvc$uvØ0?O20`9;-ׇaM< +#FxϑM6JN-[naڵ|ygEuZ Ll:vpJ)IJi ]8`N V})Lx*h:6~S.:ّ7XKXuɧ*>L0kȾ((dDa4(|*D+F!S4L8 PVhBZ*CO adV273li\G>w9~JQNyz./mwxqo8?|߸FDaͮ'낡0D0d?})T(+Wf{ $s'NQ_#ϸ5'Nbܾ>ŋ/ȵ?%E劫mwsMV5REd=yy.=c㸂oMC-}@R&|jk)0Ɏr0==MSYZg?X,rs_/qߥzfuC=M{+$ 5=9,y`늈*OZ dEPV S)?UQnz(bu\r}2[رJ)>jkk?D?'^>֭[yn_/${2Z-CUd$ bDw`)詔^ .(d|2z(G~|޼&.=BAr355E0dU(ʾ̶ϰ<~>͟޽̹q+)QX. P 5EV65۳ eby ῔JoϢN-wka_g7X{n}ɽ~_):r{.g^9s/|nOqE^i&򄬜9n1T`CYh@P[fPBx~E /v\r~zhlp:NNۿ䱣|KGǸFg|n!kʾ.aBf*=q&mic*( XE04г! BҰбA@EO(0a -| -*RKq~U1QkpIG0a-_b[1R6u.A,P{qPsJ={,裢KL}Cc7|;Uڂ"p30fz@`uS4z7 e|@g@zUk@e2/5Mv5zlKT ɲٳd1n?hw)F)[q`l,SoFL;R7}AO)-Yv%hJc{>i_|wѬD9[R6W/]ˡbWiܚa̵ƭnn^o|_{xF߮@3@4fM,\}F^pQڗbC#\7gΐ?T w޽æ|Oq ƹF@i}CвLasYo3ZfTy!u( 9m t(aC? \$x!:a@'i5qA|0A*|FkXwUДP5fL4w":TU~/cr)ܻsg!ɑqEq>aCGt:QĦ{k8T b㠊H:J1Eܥ+Wo+̊26 5Oٛ)c6SNJFspt?<achd8p"`:v8 7N'udpEQVi9MD9UI#b(.8U0Jm)WSBm g*5Μ5K˰AЁ0NgdDgh(G@}$|˜t늸)@ c6Md }!62x0Q6\F&.DPsbf/`j2bP"/T/ M,ڽ`qQpwyIB|~`}y0" C0"B[R D4R:bJk+bCi늠WkӪFW(yC0aD1"[)>ёaԐB$sÈ(   r,@)=M|xU23c-J=rnѸ,t~p8N:a'ɑ#: x8a"!uu., ZMlic`"P,A Egas3`x!{@vVJ^WA߿ :Dqȑ!uN:Aqin!D1q8J94<, txR %ŕZCW .Zü:ɶ0*5260h&ڸ`)/zFOS:OY8"C!#y'O$c($;t#~2]&\>x_S EdRP2J,La})z^GVHK|0~ODADQLŜ9u\>'ry67VZ: ^(8k(U(Fadmk-riOzlTegg㭛ƑIB0 ,Nx) /Nb໌c}3–6a ̮1ɾMy듟> cMXu]ex R4*G'y6 }lWi TY{^g޾J)ZL#Jq74)=I_E0IENDB`PNG  IHDR0/\gAMA aPLTEﵭﭭcc{RJRJZRcRB19)9!{kcRRBB)9!cZsckRZBZBR9J1{csZB!B!ƽZBsRR9J!ƽJR)Z!kc!Z1k)ֽsZs9c)c!s!ν{!c1ƽ!ƽ)cc1!ƜcsΜB1!ޥ֌ck1ΥJRޭ9!ֽ{){1)޵9RƵRƵJ1Δ{k1ZB{J{ZsBZBsR{ƥJJBJRcs)R!J!RJsƵc1cR{1ccJƥJ1΄skB΄)!sJ99!ZJ1)ޥZ!R{{BkZR{B!sZc{9JsZRBs眽ޔ{k9s{s1kޔΌJc)c眭csk9s1kޜΔƌc{RkBZks{sk{Zk9JsBZޜ{ZkRccsJZ9J1B{BR!c)9{ZckZc9B{!)kR֜ss{BJsksck%"tRNS@fbKGDH pHYs  ~tIME &IDATxTsUzm&1&%u &)du(]l*xITPnU+)&H,M:q 3Œ/33ӎsP~gg{}Yӯ#߮[v>>vM#<Ádžh1ziO+YM JæVu*7n($ :;V˖ \AWYɛkwN6lZ%^Ω"C;w5)"ء[H!|jFxi!YQIݽTWO `bvLx 4#QwgQko'i !9<xI^7W%=mXʋHNʅx>a28L3=_o(M&?ȿb/Z/>^# gB @7Ndz<7?qKuVh.u88ɑU/Yx}Mb rbY,K/SppoxJϡez X+=3p=C {-%m4C4 郃/;- ] %R߰Ĩa޹Z0?V]d_,q4Xm/`֥ꭔ^{#p*G%= :=[̪pE D63/_j]`LaקNy_+>?r۶ U啕U >_K[kG0ԕd޹;Z4}mz[tXeBV_Ryӱ/ޠSIp s.xuh7 % 3߄_L("cpt>˴pTg=6888'ĭⴐ!]n @mIENDB`PNG  IHDR00WbKGD pHYs  d_tIME IDATxY]lGgƻ;6 >A1^{:񂐈.'"P7$y"3I(JD !!Nl$ql6.3;30?W'JNv}U]U_B$B@)=YLOOöm@tz,C~ hgB)$I!1Bʼ~zE~T !f,YA@Auu5^z%TWW/8u];e' EV $Jo>ߤCCCx6 j-nE-\! y`u!{p]\VB9T l9':_nPJyE1O: fvQh-$YA)W^ݳwC]Pᚚ ?pK5i6-Zqлi,}wy1ItY&]y7>>СC2 %R Yގ[nƍ*7~;K*h4> n70Qsss&矉ibffW\eYB{g6^(!d1b1!a466qȲh4Ç'EG(0 l۶@Ws|'b2Z&I"!PeE ޽; C)߯]vضغuY^۳e˖dss3FFF`6݋'NWR "|B4B#PPX\m[xӨ-\G/yf2@%3Lbxv*{gCpQl$kG$饀 !\.(d7$!e\1 !` !`۶/|PX,Ƙ^ٶ ?+ ew` i omۖ4-0꺮weYR)\~.\ƍq}|2ݻM6̙3~ReBi2Դ2ǟ)lnݔMȲ;vU%!eVs;w&ѣGu۶!@ui>ChV` ,8N»"!D0}λY"8}vKIF<i{Gi>_$I^Җ'=Y8vxDžaAJ躎d,ɂyQU"0J|tnnf9n=c333 ŋ'UUԯH8pΝCgg?|~cʕhkk\\CCC%}n?#(>JIT lëvŋ3cgg'(bEs (w)vEuuuPUޫ{!2h>ttt<_j]8ߖ?k1P 㿗;qga||nQSdRoBe\r %7|#s5i(sضL&L&۶( 4Mifsβ+x뭷BH_iJ)"T?066K%_l+˥ LIENDB`PNG  IHDR|<FbKGD pHYs  ~tIME " ~ IDATxw%YzN_~'RrÐKrRV Z%X6  &d8 EAئi АHQw N0_tss9u.ޭ{oݪSp=]"PV#Wv! iUToH)UW̞gZ @943+cRJiԢ(T[[[jooOez""uttD9t:`flll`8𐫪(:u1EėeD>c<3s˲d{YDX)VJ /7, J)ZRJR @Y⽏{{@APosV^;~*q4Yk&3+"{eQZS̬RZ)h"I<53~sNu]2(Rd5Pu{f$I<qSIxV쫪p*`k-k"*MRFZk @RJ39NA"|oHL<8}$H`4Aj",%DDVZkW9bfU{eIh*ZMD6hf6XommtJk1Xc R{`0h1^knY;Ǿ*&"oc@>"DkZ+QJ֚(T7q=6Hr6Ƙ$IuUU{o44MMQtXPi|NH)c Ps{x$IsY`E3{_Uwyffj{u$X)%""c8-n6 h$@ +`9xox h"qmD?Ih$P۝*J3k"Z2F)eloolҝNc"ZZ+s;;;nXxkZWeY:c[[[wJ)W/9缈[koF9㪪8Z90I (q/Ҁ(pTsB-uu4h8AsoiZX1+RJ3nO1Ves9$Ib,eYf ijΝ>뎎UeeQ`0(<<˲*ue n4M9MSQJqUU<[Ŷ`[dy73^h>2os ;NGmFY{ FݪNDQ"x~oy'eY&J&eYD(^MӧS;bPJWJ$1U%ԩ(\9ϋ,meUUUz tQ2Ϲ( Dv6rގ,".pw (q@0KcG#WGW+ȹD0Y" \mtx \j@i=MX褣tϋRܸZ+f\[kښWf3ĶhۓE.F'c)nۿYq,*-FPWr$uNZ'}jnHd2Ii6{h/AD{_8AD‚* n۶{d걄RJc3kk|85ZeVJ9NDߙ"T]Xd$jmBv4J!:.F&TEQc=53,Z/0ƀ"µb3e1<{wὗMb>AiP%0fOL EΎ*|-a$#mo<j:% @''l5zTNͱL7/xڱ3 ,E$@҈x?0맿Aw R7{sIg|pWc[ ZTȲ , {YOw+<gw7a`q.O JN'MyttDADZ[x'{|>tl=~~*'=s:rpM̏ewwnqʧ8&֚^o7oĝϞo~LM67܍ENI8N-==6G8uvxO_BTH.1T'ΈH3,*M)C$IbkmJX+Wv#HdoIIa/nL&0@g{R`,|ìz "E7?G' ]H%"Xޕyt҇6מ> o_)޹cnM@A/_OG& K/(oW|/x2,_s@bjC (OKqލ>zUUI: Xk'=OlӴz~=#˸7v*t](<ws X,׾qxQUx={m=V`R rUUp#3'/M;\|=rx0L$I@-?8 [pa07\zݯv.t:b{{?{Sp6vAo\Һ}cUW:"<[uU.X 4Zt,z~|1&/"5wAhQ`?s{m\&ʤN)D@u$H>3n=Www|秵t@D$ u{=I^ 0Ɛ1<,p8Duæ 2EVon{po]EUnm?2۷h6uZ I,ʲDQ hˤ2jäAZ7?=[z_|3/"I=/' t۾ GQUs4nYPv)j,%tr5~ZL6/Sӭ)DCƥ3-EH*Q3ӧptM`CQ5(RŊQ2׊)pWk7.rNs6IF#i4|~; v2%Qr2ږ"N6[;ၻzt͆~O^Ό. a|7DdjU>rbϋo^ 'Pt2ƓZ=mlmmakk ndGo[@z X@5n]2 X__׾5it̕6b1 к'?Ie(1CQg7&C"ŌX4BYI3 1N/xwϔ{mtNʴM%ۡ&a :6xYdgA RvNMҦb 2p+LC8~ܘܩ->Vʲ̬ :7e, I@];-26Xz+ڶoqy$)t:, i7o4ʼnB)%EʮIS]'G9.\2c82}}βL3sttd'˲-wyn~kkkxmLgG 2C IUXĚҹIy9bwwo.]fFXk-b ʲpDC)O U,T pnbtُxv:L&{`G]-obGn^RDxp0̄G?dǎ@W[:JY$DwZ+NGݮdYV'W5x<6j`0pZgi>a<ckk EQ( t7vbb Fd2qnJ%"X[[|>ǵkr썩UNQ9H#ZIiZPB9*˒Z,34MMeNkʲty;"ʒ x뭷p/_JQQT%RX)}u=l9}||}TU7n *^ot|>kmgg[^Cr]U(˒,$IZ4DBc,\6ryt7qe C CX̏w?d{o'Oe`P Z[SCYuRKzNX[J?T!jZKZ oOD佧,)s繋]&^cW/k1~:.]~}6F~eQee:>g~foon ؃&ݜW<_4MITy(ycX se /^$J)z!>kW:VfBR !l^Ń5s J6U t0/O=z(Rp΅f1Á(C@;E9eI! ""c YkaiLXk$/Z4Mig{ ~#}=<Ӳw ٿyexk+kDe~0~\w ǁP), m0XXT(o KPBFVppp4M1F#ܺu zv}&'39<<Čv+&I)icqA9OHk@)nt59%G(eZ׫'Ν;oawoo{xx ->GQc=epek[̑Ͷ>;Y?ۺsnlmX>xUׁc{bm#NOIDATPTK8'ڂ!ŋxAU0%rY. lnnb=u8<1쏾ln>{W322mct EKsZk[ŁzU҂rbzWxHB@K)IJJiSW;"8"v"} 9ֶ^tz O=F9ЬjudUJ)6boϴmkhu?kp6[k?z$kNop옓n&Y?qX2& ʲ@j}|fCYY,3'p8]Eԃ„YVJSw<;/~+IJSZ0$"|Zc2`cc‚zT"R`x\*?갯'"!Q*f6HרX쬭\r+rNMP[k,K[TI*=,)as܌$TI~`X@DN)$%䋅r 4q =sJoq2!ҮE0F6YV}ӷ󓟾䳏?y#SAS:ӧqt:iDH]"\W0s!uuI1WR4_։p“e =h[â)=TX`DXEc s;Ob#J=+U^gOO+_/~_I +Xb+ Q 2D|CDI[f#c|I Hv`l!P/esZ;w`6tP/¡i {Kľp hp :u bV@X#/6WC7D0s'"sFqp){G#H* *y x#"<~u:g`_Dޔ]v?3?2yR9UdIv~&pe¾ z)" 3AZQ~0=5}^[ӥJW #ɬD@pu?xS̡qNLjLӹBƳW`{ׯtKNE6yM4mMt{ hH;JÙLScnb @B+R`綜LM\j Q:ɓ}^/ WI% <67h\"b{|bU^+- B(Ѳ^ʲdE1S"uHbXXج5~ YA&cQ+I`*U[Uv1DG'?Uqq Dzf<zZ$\D<%IU`Yjezҏ;7˿%{+X ~+Iu2Cf` .󣧼sT9gzѬv\+*Kb:"&3@-j>63T"Q4ꇨzktb:6mL'SHhM\>@f4:ٽ[˳Lݣ:v6/L2ZB+PygW/QhSsWt` 7g^No燮);K6Rie1!@ei\ue8XZnh 2lm7<ow6^O2z|Ջ.{G>W#O==|#(qm^e3gpox ]UU j3Ri^ @9uR>6M'991|1u׿қ~byε^;qæ!KϢ)?~^gFͅ%99<<=)y%VV[}<')f ,DD2b;{k~Oϒޣ{:]Hӹ.N%,&:Qb2]VDT<)ޅtΎ޼?ߛϯO1ǒtܹs.} ZTUQG76{)\l "Fg-wM2Fٳg{w5$$.tzxGR xx뱟M?:( 5 Ϊ59mb\!Vf(bPL@Ō¡,KiHI#UPv6^|vNlk;ɫ)]EPJf4u`V=_\Q"4QۆS,WhvI$ ryM3ѫO8KP +q5$\ϼ/MY@ZNYDH/g\5#:ZIA&R8?s)B` T^VM+(V}kOha"(^kndu! B::\;Ig#HBn MD eb6wG?/qj8@~ &pBDR~O){eHQ, "eE{d 6iDC+dր}aQZ2ڠeVAT޹RT6?OMKVT9.*Z 2f7]FH4j\%, 0YXDLLd}tEu_^E- X 4Wke6i #֧C/PCtbQՆl$RJͤ#k ra6V|XɶdG(Baa;֚U䈨rU̾FmEpFQ:tKQ`CK294!͐Yڴ[ ƖjXAQΔxR7q-ìagZۀ#uUm[ IZ,GTѤmUL<*E{3m ?Tպ*7kʞ.o. Q&ǺbEmץKk#D-նj@o jQ}ˆ}rpl>cCd(1RSi6"A$僷o)|$,zpiu-;gODi_@S @^qn{k{£xCI.Luq8qzeZaNHcilvQQT Q ʊnJV?ECBZQ`Kb= 5_?h-p{"2BR=.NBRB;_WƉ(#ggXKc(T5"6 :h6Z&%2 G>)rV>yNO KLn4:~aQKr'@trĴq`'hlqں ,c[{=$:XnIתϫ=չh?r"}ܷ. `D.lZ4Jim\A{*<4/S["IENDB`PNG  IHDR|<FbKGD pHYs  ~tIME 3][& IDATxyyR޻h  nII(."MYIeGxrI'g|4l%I9L˶d--GlR$sAAhUս?nuus ~ :g(=oψ;301 J7$"B2 ,YPJ)0HPJ !dfOHe966&VVVDǢZ "dr FFFh4$(rR1jN)es8vguN)7f3 !,p9Z9鞡H7>k{;j3 0aז" `3E:y $`fQDDZk$!֒sN>J)ᜓB)$ `09Y4ƈJBJ)a!"R,D[kZ MDV"s&ISvRJGDhrΉ l6Rr4 !ZGƘ@{ИۍGzk )bX"3LD$9`RX'@5I)RXk1s"TXkRJA IVj%)R)%sjɱ1tVH)R*W+K#"[]ٴJ)+RJ"sg$l"ZkVJYf&9fvXJ,tRJ@Xk9Iˤ_CHQK i78]2Ξ1?Gp>W~v;QrI"7H: 9G"۴֤ ktRA$IViI"Ra(Z&[ 0^J) gur !A`Xc)BY-3[McsI)Z !VI'`K1l%: ͮz:2ha7' ʛTw|_%@x{ nnD'9'Za$9VBi֖SnW&I"hkR H)8R !qb1j[PŹ=vlc\$.SߩqfvD`q[|aK䀟)o3 ^ ._"$D @fKo{EOߕM&'$ \&PJ81Fc$ TTq+VJi: C5 j VI)wBZ"jլ s.adtt4Z((L$mYk;nZyKq18;fNKQțl'K6C za^{i+~p΂ك2!=fڞ{B{Iv{_@J)DR3岎X3sR77zbbD/* @:$RIswDI$ QJ%^/+J2 ($I Jl֘dDJ EQ{^m 2}ol Sv.vK?1tbع:2V lkIy j=>R)A TE8֥Rrq@)!tEAtRV9U.WdJ)T9g1{LVR*(zǃ  q'2)J& ll9. C! !\$@l/96 6Ӄl<(yjgfw{g^]YЙ47yK:R"Ko[EsޭRV$I`08AR 8(Bj5l{ Վn4  !L$ Ø"u455>"z(caa$Im;^:"z."!S^J. vk8f6t'2{d٤盆f9νpjjy% MD:73ttx6QDz!DW^8Ux3Ŵ9TT JR()EXV8C)e 1ajeJ2*x=\.G~ooN30ƨZj08k ЖJ% nDZs1Rϼh=x9Qs޹W&fN&EŶ%}7j@][x@SYQ@Dav B' AHJËR ZHk Ip0藄aV+q*ʥRjť{kZ&J*tI7>^3ͦ jcrxxHceSqArlv]v9I8˝ xrq'Dvafq6yUٳxT ga4)V̬H3s@D!3a~."EMS'(/M*P9m A\.jհAihQNSZWHp>Ik4G `x.U˺ʠVվR`0Zk944I4nfjAz-f&c[~"Heҏu)'Fv{cjx PPb0<,^ڷYZR "v8 fQWƎ3]!R9'Jk{ߘ6$RR"!0;]q>3 *ZqmrBƇEXj\BJQEؒ^O:̑_^ КzRp21=ollÇÇ"<6:Zkz]) 8=?PxdK7.\ticQ!=A6tqԾG.7y O?],]ێ IRw ]n]}` $I`!֧n;N7ݪmA ۖ{%fgp k+?RC7Ί`||fxh/yX?"T5ll=vibw3exQʋnK։IC0c` qpQQ40"lܼ\;vMz2rZmMS6v۝:>ɕ]E)fF2X/'Q[%q,@#JO HeҪR 80= 6lo={g>$I0>>f+d=ֱi((X*h0VZjD,t#ja@\<.VԌaw(&&*(PǸAe};6 튐%=<KT^SjulPH 64h׺[<3~~iGΏ B#vD@)pm5wgRR\QTV9)RB)EJ *Jh4ra ; b-c}e%$I֖eI xGnq\n:]ưQF(y B2?~B/-W<@8z&Չ?<>tÇLyx(pJ'rE82|[8sNvZXkc@!0DT!cl5,^Reꡫ2h3sn^@D4B!@)5{C *-WʦRRdv0]XXB8066^$E 6hlM[gall V v<0}H7_|@Z$Iq;>1t]h?3[k]$6ߍ697cyf2%&W^󓇿C2v82Lq>53!>qd y:QUA{n Ϲs:9=O dX(xaۘyԃs4%!c"(}"Irц+"R ]xv}F{ﴻIRJ[)7PT%@ | )OW\P 8ڐRbxxO?40Djj=!+<9FRx1̊ z}2Kψy*+R2nMMF0et:8]9t[Z=?ij/R9al)/5T "atyTtTQ""p!@w$9kk=1U T*𐙘1CC19-FAlpA\;V;0\X]u4 O$R459Dp$I9ǽS2J666R9! )='́sM_kAa(._7CaVղR?>~s'oˠC!E]_*yX7waC3/(Ps|rrkk, "+0B@sd*+ޜ4lVoâѨ Pj0ٳ׬_52VWW1VRhs=9,Ql+;='Ob||qpwژT*Ã?"2-rP dDŽxߎfAwq0[hӎ̨`_xWqA8Ur'.i69)%gyTq#AeXf|[h\F;K 'yg}nV /SRDVF$IjwJoxRMLхݤUy4#"֚2W*.JirVKZ-tu6]{ZE(bciȤ췤跀0ٱ5nJa\!">}CCCz| Hh 㜳J&'"  v)%.^"֊0t iEۥK>Z^QI,2aa.\Ilnn"c45)jpd;HbxXc-j7044Cg±vieý8mf, "4J)aR0dzn'JJ%Z-S]weLOOW^:JzQEIǖl5imr||p333hZ8}4~ -ԭ]$h X[[R [[[9jL!gΦIw6aO,n?2 !v_?;X|+D"/ ztB34ɛ2A cXk -k<$LI)ZkaBk11z= PJ%#4q`` M^̙3G>_X]0Vᐢ(FZQʜ$B |iȭ-!I]2 {JuRc]ckmbb?T  cJ.ΛDsβsYH\"3RDž h4h4믣۬V^EWgʾf&ԼG-/o򯳲$bf*Teexx r9KsP7f֤DD9R4 `00ˤZZ`(QY)UJY"sss8x ^,,,k:ȕJ%)?;&; 6* N8gᤪ*%V \o0jʃ("k(`0@`0rǰE,pwY2~״XƑ[[|-alll@J8n52\p{'&#yI^c~~>o;Pkxk4aFfhI)Ev~Y5s6-`=qcOfM n6.$jv(oPPNR Jܫf0R!cμ\㘍18Zqֻ :#"gɺ:n1 022It#mֺ^,7;Z)CDԏh4p)jvf߽Pz,MD#((IR)dc t\^UZi3!AL O4%U CJ~cL&R_E <@.`nfTE^5 !`ʛ JgR=(QdAǔAD"5R ff5g`gGNk0 ib| yw jWkg%x,RW_;Nr!ъ0]}2{qb ȸl2#Vv 8v,qz| d2!,#X__GhZX]]Eĵk ,V{}⎓zT* AJi Ðk_Jecc j<DQ S .\.]LoM]D9 IDATW{xC <:4OW]fK_`4in2²ˠRl=&14=6k-6|C,^j"3%ϼKX%ߨ ph!Ԥ6Au:0m("fN={BH2C:g12 @ZMDlevqyTUO4~w~k&(OJN) w:\5v.C@$R$Rypᱱ=Y|6yq޶}l,DRN8s:W/)AX IuySh͗W6¹iDQ  Xⶣ69LIk-&*Jʬ`+2*B(lPcX󘙙q _[MtcY+&")j A֚6Rᣛ0_0 9'$qDǸtXXXH#lk B#uZ&.4pVvM&˼zlllXñ(,HwE+*RQRnql5Z yld! UTt*cBdqfV8m9-*MO)眤f]fId1(B$ؿ?qyh.E{67I70L8cavYX㜳HI)Er0IFޕ%"j5z%8#w`;Y?;e9",8 $`jzz2~)D"lܡ tlߋEё[ #!*]R8[{v EAsVRJ-9¤dBDٔ:qj5p$*bPb"a R%䒄""gNA1FH)u4I.|E_9of^@h&IB9Z !6e=O?vn[Y>Kn "uT7]kv`H)SIan}N'J}ov8j[Yգ#tc]X;lL[x;-T1 06['+F9v(Xӝ/~-0}Ybv +X|+4<%\g+" 2]S#%7NAwD^յX&e0$|iTiOݩ#E 6y_;Fӎ#Focډvk_)\~333x⣏ן;7ުPC&[*Wߙ:vu;HL5g a:!윴p۫DdVMe1V NӲ 9X9""J\*@V)gN F %ưp Sv{y133xDG_w0oB5># Uy-=GJ !N)|,7NA9pE,*{}p7XJIZ ;JϼLdד?2Gj'"H2'\8*:*/ycz2OZa߾}N=sA-9יq曷K > Y2c '&tje҉Gۋl=p֊-{(g:n[M'K5k  ځvpMp%+kc89t(mϛΊ1xv6@9g`G_|}{*brr?W/*co*}cJAedKjگ-?xV5cPzxQ-- 4TfFF|EYSuҥ QΡ{۫t`G!/c8sH*("ӿuq "j9j+O.K]o>Қxyj7pjr{%a$))yRWou'޿?N8~o_~=}TzGۉ|w_>td_fk EQ^GJR#_`{$YkN̈Jպsftۇ|n$-w_66^BEg8Zq63|t~DwXeR5⋩:3`Hh$@Bjo+++ڂ\8rյ2]>z++;g ,;k7fzm | I$5H~g˓$T@B`ktLJ)cnAX_, lβs6*N޿6n갋lVNE[[/M5`BJwN=s2h4y@DoK䤚] Y&=l/S*6F^uXRsɛ{_Gjm_CCC{_?7-66wBrsoZݫ3.?7| qĉ`;+OupK ;'lҪGg.m-aii gΜH)9G.~xX/ AЕ|; /ot#i}3͘s7FT^P2;zk.Sr+"wѤ02s]vܽ:ݜӶ ;ɷ̹oFOc70 G7IZ}_m j ymvCn ȃ婻|$ YJty6n^lw'k zE=Soߌx84t<}1 L ǽrx^ʪ{.^kNMp_|#??=gg^}!w-م Aa ݱ\o.pCs4և=pߝlڃrj_S>Ι&΄7, eD6_[tzfs}G@)clxX_zm3x]II722"^|E54[8'pfCp87k/_O][FFFpƙr?>pCs~pqsk3l] ߫( {}reÇرc9[<|[:2<::={EJA\9vVX:R& >3s·' h~SY҃ړ/DaxvC{б6_}3<:Q{ "#8"H3ν4ˣ14$HPBW}8Y<;#V_QoL7MoJ÷ їzGK%zd c쬞c>4qW(|htvy-[k|<qrn醟bfSXh7Wgc8nύp}= 6{Kb wk8 ߉{_t&>OĦ>5c^_>>[X\g?C2c{8 -["NfXf~y]?R` D9<$*Ķ~!MIP"ɅȑCڙ[=zCO|K,;v_z{L8|+|KkSMa'Jsмpfggl0lw?ߏ74::jatDB;_Fo]6ͳ$T2:_#&[+BW{גdnueHWt(rxgfvfNCyܹ-% 2v04}Z#fIo4|twNNԶ;{'DyYZo]|muu6m]N]V;+m|' \x6o6GJT…D{N['?x+kWN}_r? xjr~fj /p6ø嶻֖6^9o7nm,:u _{=K/ ,w׾,t㵻=\΀p=x֯~W3W̅{ELXO;Ii[=X; wqm&l/KSE3d5ŊkDD>(Ŀhёڑ?vssssssʏ:1ȍrƒNOCD=7n?ohhw'+Ņ7 $gJ_",}ݺq BVn:PJBLcn޽һb!L~ 7܀oyˡ'_ϣl[>U"Vp,cw`3Oxe Ŷ΋狳PC](tx4@J wk{k@s7O~xOGFi}wsK?O:{?'3KU=xgߛu\z }gRd9tQ]f{[4փWިҳ= v_Anyfk-st;:GFbqʖ;,_h]vNG; f~4<wn3nvڙ6i{"p栃RQOX+W.L,f'D ypu}dg~xQ"dm˧kG%UVK teLے.n};oqNɱ_i^CgdDM&z{d8g_~`tW zǏG7b>6O=n]4S:R1?O>$o};b&=0ov4O<ϞtIb_Ї>/W6O?oɻ`vıZ4 l5+i_S¿ U':J/}񡻟//?:77fj/ث//W>Zyjvv?yO+~G{{?.?PqmC?H}Z<|S9;/}wf[[wSE^<_Js9gJ~/S9 U d_o=r{>+ܬ>}c˟v7y_o%|w@l/mտczal_O}Eh J/?CnsKnN ?/h;zgSɩ$3GyɏA^oJPepG=яW>~+=p}s{~"BbO<H㧮N/f b݅@m7杤)ʌ<ȥ́=,C-ώo,\Yz)*@x콿coyga|l_~%Co=qΗ/q13zqxpn>lv|7[/^cMuh;Q*0 )Xy~_ 5#/bIENDB`PNG  IHDRY(uVbKGD pHYs  d_tIMEaIDATxyEu?{[^{gaAȸ hDL4bhrb≉%'q9!:*r-*Tf{o~^={noݺ[U+:@SOˀux1|鯀W%(z[ljTAֺ]/-x)k,K0lo\0e@ֽXOu8bYض-R `]ՄcV\,T*u @RV% ö@9wfa(Am۝nB`sl+*.m۽ӱ@D/`Q$?Fv=V,f``@|y0u^~-qm+?̵)㺮J%)˝`#x&Ň ,PJ$ Ity cqƐ)eq4޾'/p,HY2GAD?n1Z뮵iR3',#cR,,,t[[+=-@{-Yh4,kq:v6 C,K(N`x9tthZaz滜\C DZ-@O=:lm䶜_<)O𱀍k|IIzCVk csn/X-V'Xvfnc:AN>mM뺝a6k8PpΣ~Z=O֗JyYGE=0Wstv?<)𴖪mZMJZ-K°S\a-@tc7J}@'uǑ@kPHhY2\**s󧘬QL>XL8^.KMkqAGkXTD%Eۑ- eɦ0x*%˒s] `4/Y7ԴdY)%!H_(#0o^M{ HJl}v9ђc+vVZl/eSzϓ+Ȁ/g1!;Y[s٪[l"Yﺲ- eXkgi-O+o`ˁ>ˢdېeiM&8>g1SsCt`Ps]$IEO)Z"႙^ 7-Ԧ"xi:ql$IWmSm=Pk*jQ 1%-0N>M4p F *6@kʶ$acrz:AM/J1:H!Tfej6+r'0v#*똰n2 OeeT&NVVLΒ& q08hRF(Iy&|.\P,6>&N)3Y<zjů51mӯ59aZcg[-Z-ET8h6RL% JQ<,EZ40y&E!%iZV~/y<'=eL(+J8XIBui8? 'pbrN a XD2f 2l)XRdiJI5oCPIS&8$<gk.:&'30#Aㄲ>@)3IBͶt]*BI,BIO$]9 |S< L~T RiZ k%BŲPw5cv>JF&4_+1 2l$OS&y&DxH5Ef@B"aH;#ex |?̉0 5>0e.%b}e8hYt8e cjE*eJ=bKizZ' 0#"" (EPR+'.7b6/`F' <ff3V`k`+El2<8ED),&z*1;q=IM5wbnG140[0d <&0(¨SoO)<a˿^{E scq̄vaDkeDi#RU,o#YH)_]ž ];o`->=w0p`@}G?!Ꭹ))e󅂮lJ4 rY0,)q̰VȂ(4 oVhY (2ƣ'vy*fg >L=N41ՕJm!,b?88+Ewt sFs٦W5|N7Mk4خ5Irq|W fMTscq)u e$&i=N~p&KH<z;&S/+bۢ$γ5Wgq%ǘS0Ͽ 8DNϣ*KLITlj)@&\V{)KI};=,,FgnYvl8^hk?I䣏r:~ ͘ cp xi„$_&}'0rMy 6 34p L+,e}sI1o=Czs sRz{`O}K 'OLwHˁٔf0+]Jկ+5&X}wvGL/?s]hNO R;zx<{A>y6RV80/<3m_n\Ʃ#6vOWs1wh ey>nQ o&v#Ô]5:wLz'xË}^{qd9\i- qIB0ar1geXҊ?Ctuږf> A'ؓ(8pU5ߞZ1Qz2qA>&t[+ diNGVccUCYIENDB`PNG  IHDR00WgAMA abKGD pHYs  ~tIME #'_IDATxX[l\GrΞ؎cg')vZ5T%"E -V+DP/&/m_qQUU"%+R$@QCm|݋w9g.<86e3|?ְ5a kXr:英sqzmKߘ]U<;\TU1 '4>)-sF*cNyOJ>J ]'jyR=t_ ۢز)ԮɁ?S_[A-g9h=]-l&M-ҚۯOOB SHJ@ئnAORcÃvD\|>qWJDLm-?Xz>f3dvJ%PTMl6b*:544')MeSv2IB|\.,)JiB)X__DUB,۪ UcଲrEL&|>eYoW% L8pgˍH"vA}XB~]fcY F] `0X} .ءUu($ؚb<=S/ xgؽuq B],RreZq1'$JʇPs;ZcC҇3Ĭ‰3%'f 47lVB4{;hm\<&{i_*`'!fUŨ!&k F=>rOKطo&~# Ls["nBdklZi4j)P, F@9' NDcF;1>mx wu4~-6p/cG'EhbGI ϗ@k$ࡿ֏w0<<,o| ,h y 5>Á/8#~BOرcs]&04.#8[?~WX8FSSl}ȑ#|[nt]h:FXRjUhD"n5Bs7L.щRH$rɲg^0 N>S.u]C4 x<Bzzz~W ۷Z'alƳwwwp2J}P( q8΅ΚURR >+ dexgaqzq$o1ƇΞp6WM@l^$ o: l%VÃfZ2s:P  BABm"0 '| ڤ~sJcUgd5z??g R#(.q 2_y5LYk&&ܰ 0:b/B6ۄJ982K7_$1_ 4/RPR#=[@Y@H@x J@ )0-(i K(hFs79 Enz48ư 0}Y&Rys xa7 )ǔCcXi":8"+vT)?'^i)\ >Y#"@uN ??X] 5ܑg? CC*a:".b S."脮 Zah1ӔC&g#?Әf!dوDЬh%P ,9=ҹ43LQz(TMGrr*XiL)XW)%EHA푂Oo)b / 5Tb6v4Ny\Y׃2lxNS. evg7vÃQ4徧!. &"C|a9+& w<H`Tr}U$} psO(͗YfĜ-Д:YJ@Ry/S ˶fuE8/M$"ZxTXm3 r9q|X$x䈟JҚP(p= PNA-N[o}"~%xYs䠸j"NÈsvE+{#{3YA;\^ETT5C&TzX&c]֊eJ/<L7>6,C3R8P>oItQ=Ü&1uR}f[N>*<>8~]3rqqΪ`=fv֣V9m@buPeP !5pJ%՝Չ{AsKj'!x?>깐JNkY9 h]pqldE #=5C_]xwC'o4qIwYxIW㱚 U?͞sLq}|tk3[}5̕6@AQ}!W'&O:#rq"M1v %4z{naQC җ>R$4}zh0Qs,aC+|H3l4NLڑWo9`u"t|gٴ0ŵ7gZg5@:~8W3kdĜ!lw^c,RϮdi L敱WXUtQw6dm/AHrUR;vvf2ԨQBG,0it rԈ&[5 #9,Ȇg{.:1;r0~;4Rx_mǛ0Ugs_Ī%j;\ jy$&KFK/IENDB`PNG  IHDR00WbKGD pHYs  #utIME2]IDATxytTU?oE FQMAE28?6:tF=8LPqYuDdOa !!;N:#tFf'u;nUݪU[WڻwHIIAQ$IBedYFW>N`0(сf.zɤ A~7v<~}0ٲ'NY9z(f9DeEa7Ij׹{JRt_ 6\SL&BgPg˦Rx^qYOz8 \.Xbyyl(>lMz=^ii&U]ף9?#ф`h02vK"Bf͚e&|̺\YV%YVwb{^ rdp%%R0FRSЅ@\~t]G,Xu={BlڴA[[띍&NZV5MN Bu$'#ɈVʓu& jꠜ2cF\u8<@Q(id2=Vc @5!t F!VkR-d%mGJOY} B'(<ܼ)IŞF.$&B`yN'<9@R^F$i3gܹs1ɶmعs:Ԡr[-vO0lu ERx^4]C`&M 3z}oʉ'hii!==.]EG/~qk~,X&;%oRRUkBeaK`0ӊ{c~\.TUU Koր,%]h!HC2!vrrraTUE4!IB(sۤ22~ UBAlv3*QetM_9KD $a2\ dggGi?-Yu]' 2dQ^pP(f`0EDx`P($yaYTEQfJYmQQ}Yo~lW$d¡0)ӛG*xFuꨬĉb00&dH KC KN>R^^~PдGynˍ/69fΜ-sII6,V҅E?d:]EPC]].1b8fGKK 6%.ڼ]H0`xZq66ijrn޼YHӧ`[vfe/:z8@yy9MI0n8~dY6$IDuj/_kFJJ.Yh2މn%1)}jbM~8;Wz=cǎiv9'gMK/}_Qal,amA߾Q_eʐB9~86TD,~t/G9[ Y]᥶o>=W}0uZZZ'Z9KNxWxBRwg~>cƌaȑL6sń`Ŋ:t$l6,st^5ofs$Il6#114bmk!w<'kkl {׾9gΝ\UUYxq#*lsd[.pkni9p/vǠ d'Jrr2ʇ~HMM ,r[0L> +|>BN>M}}D,d- rSҫ@ PEh… HɺE+>bś`a7ϗ` 5-%Kt:ɡ?]ө(Ann6$q8u#Fk֬AUU r9 W/DKm\nnUԫcMI8t̙3Y3?5FLb?OL$RQEIVW8|!fvI'8r8<:[ 1fwyz2 yKrߧWȑ5m4ƍǘ1ch~3M;Ψ( `0HQQ1}RY+ShR46$$ deg=3]9rF%~OVݞ>p@  yUUs l?b^zGӤd"' s8 C$ց(Jvލϩ9+FT/ѣ\i7qϢ5|3gE3d{n̝;G<w[sl)//ejNQٳyl̯6nܤ~M~=@@_f\ -o.$I)))b֭ᒨ>O~KЧM}]޺[[[ 耾tRF|>}z\\>$%e_}hjjBx6sƘ;-7[ EV:;4i))Qc2gʔ)t̢Jrr2B'O`0駟)333gy駩nG%Z6׵ci\j³9DoE͎j6l#<,-21{IJJKKKc)++-*bJKo`0PV.{BohFRǢ!Kb lځbLNNN BpZ[[v;3fLG4غeKA*lݺuŻn*qjJ00N@XB%!H,!z6l`Ŭ{qF#G1O%t^}UfChJH]zH-[^j' EiC{hn> :#g1Ϯ}Liz?<,"1:y,$%%!I-lc~٘؍e [,fxlw,yy3>TK$^hR\~sK̇TEy&w¬4͐zܻӽiB%;x`\>h] ` _Uϙ3֭; U[87V&SUk:zqdt3X*7\wxa}}l)ڻCFPy{ SxKa_#/YKRmN2Q Ǝ݈s Ic<4QoƄ# ֮]u/\#j.zpUAط=ljտ=.lݻwۆMKJҌF}ҿJϪ;(?~62]!ر=kLYB2T6p³+gi8N[z:{OjIMMEUۣϹ3!%|<[{ޓ)yv*rQC/ 45Ě5e|i>z*5=( 3{)C|\iӼ 5?p:HۣQ vOզ`+|Gfb0ihhMMM -aO5k5:}owϺI$e$k[Ý- Iydr–ܗFN1W׿vi'{7ouFJƍǎ#9IENDB`PNG  IHDR00WbKGD pHYs  tIME .IDATx͚{xT?9gf2L23\'! 1`&BADVZZXS.ږgu-E4ADIL[.C.3I~#ҵg}{~> { Ă @@R:?#!{.D`^}N,bWhmmL'x s].ߌ.$9N?HNN=$ q(;T[~ss;]NȺ, ̋$_~@sOkh+BXrHJJꓸbA..]*PĔN1Xt'|r---_K.-WǏa6b#a3[U >|D"bQ__/\.@{5 c%I۷ohgO&O0'I/ER\{3y!D""77W C3 |~˕)/ef~Zp<6;'g'yy.:eEEEt]hTb? ղ%ԑf/rCw\A'zuT]$}pF[yyܯȴ~>=ceQFYa̘1\Yft:{XYW\qExx@4;I f׳\{͵mjE 0L׋s|)//J<ع 8q"-'_~;Cbb"6lSRRumA=Xli(,zԄ٬֡ǚq-i&q^L4~^2h Q[[+bժUBUvG_usRQLg,gSIyK}r^)Q_ܮCUZZS@iiOƍǚ5kn &`4Xx1ӧOgǎb14MCCIx<466\m1{ߌ"QWC r^o#61ˊt7 3?]iŝwɒ%Ke/^ۻl6n.B2l6 N'(Z;Ў9! %\6h0)ރ﷝X '&o0SzdͽwQHߕ{(… DBB}FYYVy{4`0uY8'ӾDB{:o ~ߔZ"uM=HJk;P.B& dێvMVAab?Og'tH!L#7HLf8jHn&e& 42!p_y l>AdO`\x~$ifslz6u?&5G$r%^xv''))Lc#LqgB+5_ (Lkf%dT x{nSƻ~ ,nY.>#`WsPSc;d6)N',3\6~#`lݺd>@L[_+p ]ǔY??'Lnn.&LogA{bl( &h·00e܈)ƞ&mttttfuvseh\lrss1|.Aç^0bv;֭#5- gZ.C%;;Gyp8$I9U.˸er]yZA; ыk/+\+&9E(gޭ|?l6t] Ӯֵd̙TVVŁ@羣 Z[[D"Hz7-aw@~,Ԁ:e^H@c\2󩏜;х f y߳._Kw uzm!1ъ?( A B|i$!b8Q+ KBL&ƫ|6j>mo:ƌ 0a#pƶyM3g/`m̽:us(![8,!pۘpg3;ZXmM&U4}A74).y ;Nt M1&$XhA kL44uyi:)58O14?0!16ğ|ȼJ˰E ;x5}XGIݰ6󣆎r % 8ouGηDN W뢧Jgt'4#4ʉ&3d#!/?S~%bGH?_}cc`_[cA bdF~Z=KcȨq:&wX>᷿/|ɱ&ofRZSҮ_%/sY^IENDB`PNG  IHDR00WbKGD pHYs  #utIME2]IDATxytTU?oE FQMAE28?6:tF=8LPqYuDdOa !!;N:#tFf'u;nUݪU[WڻwHIIAQ$IBedYFW>N`0(сf.zɤ A~7v<~}0ٲ'NY9z(f9DeEa7Ij׹{JRt_ 6\SL&BgPg˦Rx^qYOz8 \.Xbyyl(>lMz=^ii&U]ף9?#ф`h02vK"Bf͚e&|̺\YV%YVwb{^ rdp%%R0FRSЅ@\~t]G,Xu={BlڴA[[띍&NZV5MN Bu$'#ɈVʓu& jꠜ2cF\u8<@Q(id2=Vc @5!t F!VkR-d%mGJOY} B'(<ܼ)IŞF.$&B`yN'<9@R^F$i3gܹs1ɶmعs:Ԡr[-vO0lu ERx^4]C`&M 3z}oʉ'hii!==.]EG/~qk~,X&;%oRRUkBeaK`0ӊ{c~\.TUU Koր,%]h!HC2!vrrraTUE4!IB(sۤ22~ UBAlv3*QetM_9KD $a2\ dggGi?-Yu]' 2dQ^pP(f`0EDx`P($yaYTEQfJYmQQ}Yo~lW$d¡0)ӛG*xFuꨬĉb00&dH KC KN>R^^~PдGynˍ/69fΜ-sII6,V҅E?d:]EPC]].1b8fGKK 6%.ڼ]H0`xZq66ijrn޼YHӧ`[vfe/:z8@yy9MI0n8~dY6$IDuj/_kFJJ.Yh2މn%1)}jbM~8;Wz=cǎiv9'gMK/}_Qal,amA߾Q_eʐB9~86TD,~t/G9[ Y]᥶o>=W}0uZZZ'Z9KNxWxBRwg~>cƌaȑL6sń`Ŋ:t$l6,st^5ofs$Il6#114bmk!w<'kkl {׾9gΝ\UUYxq#*lsd[.pkni9p/vǠ d'Jrr2ʇ~HMM ,r[0L> +|>BN>M}}D,d- rSҫ@ PEh… HɺE+>bś`a7ϗ` 5-%Kt:ɡ?]ө(Ann6$q8u#Fk֬AUU r9 W/DKm\nnUԫcMI8t̙3Y3?5FLb?OL$RQEIVW8|!fvI'8r8<:[ 1fwyz2 yKrߧWȑ5m4ƍǘ1ch~3M;Ψ( `0HQQ1}RY+ShR46$$ deg=3]9rF%~OVݞ>p@  yUUs l?b^zGӤd"' s8 C$ց(Jvލϩ9+FT/ѣ\i7qϢ5|3gE3d{n̝;G<w[sl)//ejNQٳyl̯6nܤ~M~=@@_f\ -o.$I)))b֭ᒨ>O~KЧM}]޺[[[ 耾tRF|>}z\\>$%e_}hjjBx6sƘ;-7[ EV:;4i))Qc2gʔ)t̢Jrr2B'O`0駟)333gy駩nG%Z6׵ci\j³9DoE͎j6l#<,-21{IJJKKKc)++-*bJKo`0PV.{BohFRǢ!Kb lځbLNNN BpZ[[v;3fLG4غeKA*lݺuŻn*qjJ00N@XB%!H,!z6l`Ŭ{qF#G1O%t^}UfChJH]zH-[^j' EiC{hn> :#g1Ϯ}Liz?<,"1:y,$%%!I-lc~٘؍e [,fxlw,yy3>TK$^hR\~sK̇TEy&w¬4͐zܻӽiB%;x`\>h] ` _Uϙ3֭; U[87V&SUk:zqdt3X*7\wxa}}l)ڻCFPy{ SxKa_#/YKRmN2Q Ǝ݈s Ic<4QoƄ# ֮]u/\#j.zpUAط=ljտ=.lݻwۆMKJҌF}ҿJϪ;(?~62]!ر=kLYB2T6p³+gi8N[z:{OjIMMEUۣϹ3!%|<[{ޓ)yv*rQC/ 45Ě5e|i>z*5=( 3{)C|\iӼ 5?p:HۣQ vOզ`+|Gfb0ihhMMM -aO5k5:}owϺI$e$k[Ý- Iydr–ܗFN1W׿vi'{7ouFJƍǎ#9IENDB`PNG  IHDRF0U XbKGD pHYs  #utIME+6IDATxZNJNJ T hpx&b>YMVYOp".D!T$x.vv\t?ɊssbaaA8sWbLlF|&Cbgm9 qY2#h7c"PVt]E5C4<}4}ii ~lL@Uا(Jdz~:3xq]w*dg|c QEI ˗AL*0zjH?sAzMZwww#nn0<;Z  kRv1s(0BMei_TDyeYR䥲R)jT?"W "!fHzc+B =F(Jooo#NWZۨtMD Y@(MU*.nK+sye)xqm& *{z,œd{:j;Ӂh4 MP\]R ]h6a( e *!L ֻwM  Xƽ$MS ף(e_ۖV '0¤Z ۓ$`Xzh_X0ϫUz=P*7KN #&*A .:|ټѐ#()k"B@1pO_;18-meq]`0Ơzi>i`%Q?> djT7w3y1E 97=K6 ll:?E=َ#`sLlnJ9gg}q1#? -7*aླ=?=:c|?&RM4???iIj^ǝ`wt:{/ݸ]巶oX̉yŖLj @D uF錰1Fuc!9`*Y 7R8 9⹀&|AaOfx| {h!~g\A錬#"nwD^8<^Q>xfjXdU Vp޲"׆ٻ?nO.dcAB6ʲL.Kq+$'ZRLo,KM({5|KVדdJ ;;z g`N+jjiiBF#:toN<=̪IdW Wqp㨵n7m۶ˉ/R__DYÒ9>X~=E˗=JzZTg`3+fwd#iXtH׮],J{`S{ɲL тR$Bߨڴ-ž={fD2L^Qܸd5MLQm`DxaYY|BtRNN<&{#tv=Ӿgڵk|NE?V+FFF``Z1::XWe^@ 8.&# 6-Fc) eKQi```J/ڴi-\Psssx2MuHl6FFCH=q}}t}Q}}=effjyQ}}=1m~?t ْ"p$KD7lؠHxOM 8*޽ 'bfIDiŋǏ+G]"\b8u)./G)SAȲ-[nƍq)Go2}g4ђF4``έ (Bt:yftvvO<:(* 972C#===qs=GJO>$Ҿ}l>G6E,iP"颹F*#1رc15aሙ%?xɆe]) 1ThYYY ttzu3uwRK>}^7$ͷb ZcpYhD/. s M T?*Ay;0]oD6pKkXt)Fϫ/_k 7;y F_ ,:`tj[5} o}x;p]e%϶x\Q+zc`zaxW-/>؏'`S-E?=:V/V,"MoXu py&'z!^߿S5x|à-Z ^oO^ V Kq`$hßCȿ>={=._>OEJ.7R=]#/[=!^⼌8 [?gnPt(TIENDB`PNG  IHDR:2 EbKGD pHYs lAtIMER0IDATxyt]y{Y`[-ccdb^BB$%(Ci/&t }94I $%MB!! `; dAeMuu{=?,$K }o~ku=g~|;>2|׌BU*%&XQ'֏2?Z/uŰg-f@mߧ,*4\Ɗ'+6H%,Vu2`>PX/T+7xLZoߎb +9603o 4ai]KtD+"*؎D?X5gu K6/XRӰb*`W6B J#,2#d(wOW5 >Ux;|NLp˲F3w>%*洶+>t@Xǁ %.MKq}>{xw@wkY*ʟѹyR?O}ʽd5>OS{mq3v5 DcjZVh)P@x"bT,HucWnzA@ ]sT0[ݻwOl [4zmXC<"jDl˂eL0L , L@iBMk7)!֊\F-#|zP](Um_.s\`鷟7Da>B2eF0D4 R A*0f՘ }gR#P<9W++vHCoۍ/z 9G T@Jh)]̊yUA2] Z8V4& "rʦw4NHޑ0#l?BW i6dRR($ *#8B`%>~P1PB@ hs̞L`cm҈g"6S5Mn!xi7%LBpE܌Zv/>|+a͊I}~~6Zr3h D%wK PB.)s:C}a[|(/y?e\,Cu$Dcq$$$ ~~yU2^+[Rig>QKQ92EDUx"4RT WAwPTU G@ivЖO+mh%K-hD"FGG]}SO=ŪUXz5n>l&barG9b)-6bQ(#Q*2'AȺFJBD)B>*-EL&tpvmؼ@g. _ࡇRUk===H)innfѢEBi>ϰ-=8U5 Bf#E*%5l4Kuɕ̋Hɱ9P(<^P>^>G_C >j%`(ޅ,8sޓ~ׄBT%Z_yHH rr r.Z,*3:8';ue 7'+m6V\!8hmXeUDd_:@jY/OҎ9p!/8=d#< @+#ABIr&rD.otM.3r=z982-(PZa&~v|Te bbhAiR?jZXjqqF>tMV`ݺu*?22B*4MHXE8[͛7hկ~rZnvnai&x_-R}6q [?DK p:PN~g qjp$V)$nI[{R_~D[uVjjj{Y7>c0tc*/u˼W}+HOї=hmcG$j#ض#m J{ScJ)ٷoߔg^{5|M˦Mp]wJi}v9"_hPWWǖ-[x9z(7|37xvgرc!R]:c $[Re + ڈ GׇGi@y9 .T؛2hv'4:;;Hy䑉O}S;߲.AߎV"nGR8ሴ2f ˎ7XT5Ê9s|n.N ̸!)tPޔ\Ɏ;YP(Lt%\DEńx0+jPDۃ^?l̡KEc䚑Ja(#47T77M6$=&% ]/=3q$>o<}r8p(yϰJͥg}2v%S]S3<<̜.EU5,Fжt]ܮvCBvXuxƅ# L]WtW^BFry=C \T ;v}u?YV[Y\/~v/՗=i0`^S eJtAy eZ Ղ#"6f*dFΐ-,Ae{W!cb];h];SUpn#@wcS}YZ);ibG_\cOƪ[I‹H4`TG)R#%DI.Df|/?:bXT~zJ}?in sdj0~?!a^kTyxp%qJhQJFJ 1 dd-88&SO1Ih0z7A};p?0c.x6шI}L-p'K3xlj}جS}q̭ªwU HR!BXdksW)7?˷9GGsٝ=~R.uy"Dy)$xZ"VH(ePRR,9J N,g=t<i-oO`wgE00zy7 ν MLvAK?Ґhm ,'% _ iGQEyp=WL'M RW/ŷ 1W8gb#+j9 @ǡQ2hJ!=d,)<{<'([~sgǯ`A{v\h9<~*GaaDXM3򓀅 $xq'!߃ ח>wv>XfBbH&i-aq젹?M&nqx)O` =eVД^?е1wlu9']#3|`ጜ7WF([}Y?eIENDB`PNG  IHDR00WbKGD pHYs  tIME .IDATx͚{xT?9gf2L23\'! 1`&BADVZZXS.ږgu-E4ADIL[.C.3I~#ҵg}{~> { Ă @@R:?#!{.D`^}N,bWhmmL'x s].ߌ.$9N?HNN=$ q(;T[~ss;]NȺ, ̋$_~@sOkh+BXrHJJꓸbA..]*PĔN1Xt'|r---_K.-WǏa6b#a3[U >|D"bQ__/\.@{5 c%I۷ohgO&O0'I/ER\{3y!D""77W C3 |~˕)/ef~Zp<6;'g'yy.:eEEEt]hTb? ղ%ԑf/rCw\A'zuT]$}pF[yyܯȴ~>=ceQFYa̘1\Yft:{XYW\qExx@4;I f׳\{͵mjE 0L׋s|)//J<ع 8q"-'_~;Cbb"6lSRRumA=Xli(,zԄ٬֡ǚq-i&q^L4~^2h Q[[+bժUBUvG_usRQLg,gSIyK}r^)Q_ܮCUZZS@iiOƍǚ5kn &`4Xx1ӧOgǎb14MCCIx<466\m1{ߌ"QWC r^o#61ˊt7 3?]iŝwɒ%Ke/^ۻl6n.B2l6 N'(Z;Ў9! %\6h0)ރ﷝X '&o0SzdͽwQHߕ{(… DBB}FYYVy{4`0uY8'ӾDB{:o ~ߔZ"uM=HJk;P.B& dێvMVAab?Og'tH!L#7HLf8jHn&e& 42!p_y l>AdO`\x~$ifslz6u?&5G$r%^xv''))Lc#LqgB+5_ (Lkf%dT x{nSƻ~ ,nY.>#`WsPSc;d6)N',3\6~#`lݺd>@L[_+p ]ǔY??'Lnn.&LogA{bl( &h·00e܈)ƞ&mttttfuvseh\lrss1|.Aç^0bv;֭#5- gZ.C%;;Gyp8$I9U.˸er]yZA; ыk/+\+&9E(gޭ|?l6t] Ӯֵd̙TVVŁ@羣 Z[[D"Hz7-aw@~,Ԁ:e^H@c\2󩏜;х f y߳._Kw uzm!1ъ?( A B|i$!b8Q+ KBL&ƫ|6j>mo:ƌ 0a#pƶyM3g/`m̽:us(![8,!pۘpg3;ZXmM&U4}A74).y ;Nt M1&$XhA kL44uyi:)58O14?0!16ğ|ȼJ˰E ;x5}XGIݰ6󣆎r % 8ouGηDN W뢧Jgt'4#4ʉ&3d#!/?S~%bGH?_}cc`_[cA bdF~Z=KcȨq:&wX>᷿/|ɱ&ofRZSҮ_%/sY^IENDB`PNG  IHDR00WbKGD pHYs  tIME .IDATx͚{xT?9gf2L23\'! 1`&BADVZZXS.ږgu-E4ADIL[.C.3I~#ҵg}{~> { Ă @@R:?#!{.D`^}N,bWhmmL'x s].ߌ.$9N?HNN=$ q(;T[~ss;]NȺ, ̋$_~@sOkh+BXrHJJꓸbA..]*PĔN1Xt'|r---_K.-WǏa6b#a3[U >|D"bQ__/\.@{5 c%I۷ohgO&O0'I/ER\{3y!D""77W C3 |~˕)/ef~Zp<6;'g'yy.:eEEEt]hTb? ղ%ԑf/rCw\A'zuT]$}pF[yyܯȴ~>=ceQFYa̘1\Yft:{XYW\qExx@4;I f׳\{͵mjE 0L׋s|)//J<ع 8q"-'_~;Cbb"6lSRRumA=Xli(,zԄ٬֡ǚq-i&q^L4~^2h Q[[+bժUBUvG_usRQLg,gSIyK}r^)Q_ܮCUZZS@iiOƍǚ5kn &`4Xx1ӧOgǎb14MCCIx<466\m1{ߌ"QWC r^o#61ˊt7 3?]iŝwɒ%Ke/^ۻl6n.B2l6 N'(Z;Ў9! %\6h0)ރ﷝X '&o0SzdͽwQHߕ{(… DBB}FYYVy{4`0uY8'ӾDB{:o ~ߔZ"uM=HJk;P.B& dێvMVAab?Og'tH!L#7HLf8jHn&e& 42!p_y l>AdO`\x~$ifslz6u?&5G$r%^xv''))Lc#LqgB+5_ (Lkf%dT x{nSƻ~ ,nY.>#`WsPSc;d6)N',3\6~#`lݺd>@L[_+p ]ǔY??'Lnn.&LogA{bl( &h·00e܈)ƞ&mttttfuvseh\lrss1|.Aç^0bv;֭#5- gZ.C%;;Gyp8$I9U.˸er]yZA; ыk/+\+&9E(gޭ|?l6t] Ӯֵd̙TVVŁ@羣 Z[[D"Hz7-aw@~,Ԁ:e^H@c\2󩏜;х f y߳._Kw uzm!1ъ?( A B|i$!b8Q+ KBL&ƫ|6j>mo:ƌ 0a#pƶyM3g/`m̽:us(![8,!pۘpg3;ZXmM&U4}A74).y ;Nt M1&$XhA kL44uyi:)58O14?0!16ğ|ȼJ˰E ;x5}XGIݰ6󣆎r % 8ouGηDN W뢧Jgt'4#4ʉ&3d#!/?S~%bGH?_}cc`_[cA bdF~Z=KcȨq:&wX>᷿/|ɱ&ofRZSҮ_%/sY^IENDB`PNG  IHDR00WbKGD pHYs  ~tIME- UIDATx]O0i  K,!υH`hYd Phi{^zfRflvЇ4Y߳(Pd}O@Y{Ä#לNd2`<~PCRbXX5rZBtf4ɹJl@k=Q,^("^>;x\ϖr  据Zy~y1{4M[ooo~IjՌlr c|ֺ8̒BQ詔2vAD,!GH)eYZz(Q1fo!cGnTJ )=˲õ2q9Tu/|N`6ȹ}݅f_V0H!^__1.O?1fRX.{yy2Gh$ }=h4EH97 /2 "2dY6֭*v5777&BjQ/YFjVJ)Q=tu@W]ROF;dYJ^ ;c ZƘ El^:}o%6I*|1+te-Ȫ zNy=3I0ֽ]}C9 "h:VZ.ʲ 8ө ù~e$.é/\N')7oPB \__[<8C$nd^yeM撝,z(CF{IENDB`PNG  IHDRw4HbKGDC pHYs  ~tIME.jÞ4IDATx[{\y}]0 QU$d*j--سIJ𚇌0BDPؖ!&M*ZA"{&0ڞ8̽w̆lIG3sw tE]tE]t@Z4.a ` <@a;1.< 5i Wrq7 )g\򥭄nM%탻'h^~V(9 W>n~fC. o]3 y+|LJ2G-la~9Zj#ʗNq0 I2&Ra%](p47D"*PDDNC ): W@4(^6VxΠ$ N^{:ݎf~" +%"kO4(\54jPx PPnʩdL+>,JR d҅M4//T&m7,AmL7u`M HK vk:Q43tX0(R3'04T!~|.3],-HX :#YMh `y۩8ehSM,S qK259Ӊ`;ZAWf`AEx1/G05CPy/ A/ C;[mICL$̦H?lot$L&ß4p;=6cuܡ}ӒtoDoO?/SC,y/HgH9Ip jo?0΋M]dƑ xti@e4Ƈt|ha=4FG:@RДIUz-#,a2kc\CC.LWWH"9Apu >ZY8QO9jZFa@| meC3ifL]X-Xglq% bvAl_ ICqCk\73o `h54S,c/>/)XF6H+|H',d ݋ej5_bo\VF$24!v:/pB,] iHFhxK0;,g)A+<;= I˄T+- kktԡmpzy___8?:owYKiTƅׇ /<o಺78jR_&!{(d0 (dZ2AFQY+ y Dth֣K8LxzWg̿?]ܰAF2 s@ب>>xK`Va^zͧz5} ~m 0(YKىgFLBT/Q$V.c~^rikrO\;ո?ώd/%$#:1?6$ʤEh;U5/uxBbv %R26B6 yab.5:Ǟ;?}ȇ}*_B>_ƱsQڐ;LJ #wJ1w,]Rz83.o` w7j%fݱ岝:y 4VosySە**4&J<{ww Odޟɓ_}ݟbth|[R>p.Qxp޺+%{Ml+јaG>[ޞbrXTQ*وȮsE8Ugzc' UBg`N/TRCc_ܙJ͞(fQ_/W(T~^X+?Շ$QS;67w4reX=ۀ }(ӭU-< H| Ax@l3:Khp]G(%3e۝yp[_fYR?h@MP;^,a|3zjܡ1 r_YӍUl\TdZlQ V;_JJ ,#{@kAʗjdȗ\6@?`ത~ hsr`#@ 1Fwbgof?d; X^q] +=^ _U 袋.袋6X"7GƶH0 |2r"75BQsS3*#||' ` ?L f C  ţ߯ sB&GsSgw5< ~zj]nj IoK P d8E5) od ,.0#cSw<759+e[yӹӒݒ bўER֡4/IqڦwZ&.K=C;Ġ$gsS4ߛ!d5Y@m^Xey&FQ=#cқX&z)X¥{@NfM=9tA(hGkI"fDnj24C5V !\4hfK=@rekplWjoMGεDiJ{AO~/,՛ޕ͙MMNFC&&wE j׵o]tE]tE]tE]tEmIENDB`PNG  IHDRM<#w7bKGD pHYs  ~tIME%%.IDATx{pWye7vu_Y(%c'5@@! $mVB3t:L败LkAa-D $Ip &1ŒoJZVwIıcYtx4{yϣ=ss?qHچWC\k.B!6oyҒJ.v锦&oV.Nv:@lêwyΦ&: p饧EG:vHgkwO!ѱa +R; lKi*X ,h*:g ea"].pP`{0@N77tnikz2pͦFW,W4l:)B-֫ո tzz*"$1ӛ ÈgbnV櫓P,ǦNݗhB>חo90vb o ?Y>2y22.Qf\o6㢶^m6~X kX=1KD/Q+nGrzE߾}(?;1kllݮi^֞U'Vg5àP)c'wk~?3m?7}=#KHD\ܦ_caS3㥚4#PR7,::qzhH.3h#Ј`K)RƞH]&voJSc&z%m+sHr2 TȝEʪhz~dY|[sl65P7xZO/~~c Vr6 sO= I~{f/~;m(HyϺeiOd'&'Fx^4MGխ'NMm5$QjvнI0TذВg>6aM02bm `N}QH{'.9H*Kw"I"(!疶keWn:174ўJhՀ=LDu #:H9jZe۳lR1O&Jn;-Q43P.Ləɟs.dFZ4ۊ$]lX>OJ౧aP%ڔ@(zv Mn/Ge -KaP, X& Dj]k 2ER l&7Qq&VJN'Wt%C=&*ܾ{׾[}-rWiz*f Bp=p{|xE oニOMsp|L΅grҘFD^/֌Wt`87)"-먙n 'c4榦DчX3He7-Fm\L>]{hi[G[ėg7~]+4FtYa T͠*LE:/(M-<F@PyfR.l0Xv@)pvXy}؂j>шlyY `+ӗSViѶ:7oj%w#{8"EaGV5XP)V6 +(2%a1XOm[ij`D 9R~7OPP51gD[#X,XiZ 'j ް<-m'-!NY9hSsLX4syC=D7n]Kǎs̚B{(B/#Wpd Ej*!W)bnR>Ag{ۚZP%L^!,7w;߳}uXi@z2S!J%ZȒKb<}$ OqMMс o!gX5SlYjQYQja#jnV{a `y|#㔒|ï+$Xir- Y6t$8g zumyw]=Ƣ৿gR2S[AMxs̿C?A^3i`cQe6QR[^L>1IW[/~##(<D}!HG[3Z/ճ1Ո%h$kr|ɤ_OD]gBlf6#ބ[躀h؉JqmȖubMUx`NrCp迟ub=Bؔt!/|t!&ʡxћJo?59Hd:|df~.ULNbZn.&gB !KqPx O&3ĩA??zau|g9ImCNO(-p~xt0hv,Ԓvy#[ۇzmIs5RNQ('3L$A5muRā_i$AfOlU{oVx.Mg(ii~UB+& m#A jMR*T([ZtuۈcZX@`myT+ST!O/cc^7ȭ;"Cwoy㔦]xi:(8T+IPvqۦjCZ%v`rlX-%@tMt-wóc>-Aࣝ[;/u-z~U\;($$͢Ӱۦ/f98 TU`r-n~_UҲz ziQJ,;>)W=^U‚3Q8% $Ӕkӟml|8swH{RH844o;ki|cU"WcIM̶q\t8+#R`٫G][Co?x- A1mlgKW5yRj8e^jZʛ5!m0Mïk64MD~˽Fi6m}n_ ք4 Dӹ]z8)-sF*cNyOJ>J ]'jyR=t_ ۢز)ԮɁ?S_[A-g9h=]-l&M-ҚۯOOB SHJ@ئnAORcÃvD\|>qWJDLm-?Xz>f3dvJ%PTMl6b*:544')MeSv2IB|\.,)JiB)X__DUB,۪ UcଲrEL&|>eYoW% L8pgˍH"vA}XB~]fcY F] `0X} .ءUu($ؚb<=S/ xgؽuq B],RreZq1'$JʇPs;ZcC҇3Ĭ‰3%'f 47lVB4{;hm\<&{i_*`'!fUŨ!&k F=>rOKطo&~# Ls["nBdklZi4j)P, F@9' NDcF;1>mx wu4~-6p/cG'EhbGI ϗ@k$ࡿ֏w0<<,o| ,h y 5>Á/8#~BOرcs]&04.#8[?~WX8FSSl}ȑ#|[nt]h:FXRjUhD"n5Bs7L.щRH$rɲg^0 N>S.u]C4 x<Bzzz~W ۷Z'alƳwwwp2J}P( q8΅ΚURR >+ dexgaqzq$o1ƇΞp6WM@l^$ o: l%VÃfZ2s:P  BABm"0 '| ڤ~sJcUgd5z??g R#(.q 2_y5LYk&&ܰ 0:b/B6ۄJ982K7_$1_ 4/RPR#=[@Y@H@x J@ )0-(i K(hFs79 2|׌BU*%&XQ'֏2?Z/uŰg-f@mߧ,*4\Ɗ'+6H%,Vu2`>PX/T+7xLZoߎb +9603o 4ai]KtD+"*؎D?X5gu K6/XRӰb*`W6B J#,2#d(wOW5 >Ux;|NLp˲F3w>%*洶+>t@Xǁ %.MKq}>{xw@wkY*ʟѹyR?O}ʽd5>OS{mq3v5 DcjZVh)P@x"bT,HucWnzA@ ]sT0[ݻwOl [4zmXC<"jDl˂eL0L , L@iBMk7)!֊\F-#|zP](Um_.s\`鷟7Da>B2eF0D4 R A*0f՘ }gR#P<9W++vHCoۍ/z 9G T@Jh)]̊yUA2] Z8V4& "rʦw4NHޑ0#l?BW i6dRR($ *#8B`%>~P1PB@ hs̞L`cm҈g"6S5Mn!xi7%LBpE܌Zv/>|+a͊I}~~6Zr3h D%wK PB.)s:C}a[|(/y?e\,Cu$Dcq$$$ ~~yU2^+[Rig>QKQ92EDUx"4RT WAwPTU G@ivЖO+mh%K-hD"FGG]}SO=ŪUXz5n>l&barG9b)-6bQ(#Q*2'AȺFJBD)B>*-EL&tpvmؼ@g. _ࡇRUk===H)innfѢEBi>ϰ-=8U5 Bf#E*%5l4Kuɕ̋Hɱ9P(<^P>^>G_C >j%`(ޅ,8sޓ~ׄBT%Z_yHH rr r.Z,*3:8';ue 7'+m6V\!8hmXeUDd_:@jY/OҎ9p!/8=d#< @+#ABIr&rD.otM.3r=z982-(PZa&~v|Te bbhAiR?jZXjqqF>tMV`ݺu*?22B*4MHXE8[͛7hկ~rZnvnai&x_-R}6q [?DK p:PN~g qjp$V)$nI[{R_~D[uVjjj{Y7>c0tc*/u˼W}+HOї=hmcG$j#ض#m J{ScJ)ٷoߔg^{5|M˦Mp]wJi}v9"_hPWWǖ-[x9z(7|37xvgرc!R]:c $[Re + ڈ GׇGi@y9 .T؛2hv'4:;;Hy䑉O}S;߲.AߎV"nGR8ሴ2f ˎ7XT5Ê9s|n.N ̸!)tPޔ\Ɏ;YP(Lt%\DEńx0+jPDۃ^?l̡KEc䚑Ja(#47T77M6$=&% ]/=3q$>o<}r8p(yϰJͥg}2v%S]S3<<̜.EU5,Fжt]ܮvCBvXuxƅ# L]WtW^BFry=C \T ;v}u?YV[Y\/~v/՗=i0`^S eJtAy eZ Ղ#"6f*dFΐ-,Ae{W!cb];h];SUpn#@wcS}YZ);ibG_\cOƪ[I‹H4`TG)R#%DI.Df|/?:bXT~zJ}?in sdj0~?!a^kTyxp%qJhQJFJ 1 dd-88&SO1Ih0z7A};p?0c.x6шI}L-p'K3xlj}جS}q̭ªwU HR!BXdksW)7?˷9GGsٝ=~R.uy"Dy)$xZ"VH(ePRR,9J N,g=t<i-oO`wgE00zy7 ν MLvAK?Ґhm ,'% _ iGQEyp=WL'M RW/ŷ 1W8gb#+j9 @ǡQ2hJ!=d,)<{<'([~sgǯ`A{v\h9<~*GaaDXM3򓀅 $xq'!߃ ח>wv>XfBbH&i-aq젹?M&nqx)O` =eVД^?е1wlu9']#3|`ጜ7WF([}Y?eIENDB`sgenericfarm.pngt kerberos.pngulocal-printer.pngv minos.pngwmysql-tools.pngyopenafs-client.pngz openafs.png{openssh-server.png|postgresql-tools.png}rip.png~sdss.png server.png sidet.png theory.pngupsupdbootstrap.pngworkstation.pngyum.png fermigrid.pnggenericserver.pngmysql-server.png8postgresql-server.pngPNG  IHDR00WgAMA aIDATxZy|Tս>L2!+!,&%@BP֊*VXOl]*^ X,*F )K&ɬw{9d. >AO>s?==vNjrsA0W1^|6[иZc:àg竆,ǯwļ/^ !=H|19˗)y1?/o2)q f2{}}QZ:Łv}4'; :#;/Q/Im:6\H[GCz'S:kA>3|uS 񇫮(p\UUH%H$OG(pFy[mI@8F]E0ƐqƁ4Ο?1Du{f%1vfĺub Bs/`ʕX%:kio7 ЃLxJe{t/}rPJSdUW׳4DUfPe bЁ'|8y, l1Φ8L0G2Qk^ 1`캲8>9>|804}FeP Šw`Z!"͛gώo2/+(rV7%!jE"*>=v4^p(<.|q@0!b)><& .[oGbF?ȳx h@E PUBYZM&WEqx%[,X,zBcn--$<U 222Y%Bp- ++ 10ƠvqI)E<ǨhcɊYV:\͓+S 2.խS`[32BQgֵ9FEÑL"XT@0(ati.a|m+܉xiuH\ }=KJvHQ}2,0_T9`X-Xt^P~|WxGnn.E$IE 31Xj,m4wSZ#@)Cyy9qS]Ҧw$} F%ڪj@9B b s:QnqD(;햸јzr=N`0 Ǝ.IBAo[gE9uY[`ЧO$''w Vx Pbhj$vjRzAv@O9j4L&s7W `@8xPǎ-f~ hlRJH嗰X,>|x-5Gw~#Dؔ;٫+QQ y,X@ٳ+`YP_}kׯ,ÇcA:u*&M9sŋBڊkرp8`jl6id%)O0d|dg)3fh8{h4/= WWS3ύ?v{Mfg$%lBv]wh4ʂ 1b`0TZVVF8bv| zZPOf3yfddЕ/@+fN/lAyoz) C4EMǼ9}ň,evL sGUnաAIA]HIIArr2DQ-[P__ގ'@ӡr.\4߿H1;wn/rZC!\js4s>q(>9>~ ."//_ԡC֘SF+ RI&C7ܽ|"NsLף<,YnǦѫiwFQY4Xb1i&E/P(Ģ(|l߾}œN'۵ks[X}}=D"4|s̡-JM( Btٲe]j$I/ 6PHK/kCmnn 0jJx!NDΥLEm!L t^ǠAPQQL 6 fɝV̚UQGOzzZ4… +VOvGpF1 Ɗ.?ǭ{OUw/~ p~`؈%終"vmظqv*AlFQQƎ(b?w4ⳈD"6L p1tM婷Ӆ#4BƑ=fnwOg ''Gk+u B!,^XSk`qPUnv:D^OIf۶m|>Oç<țdBU#c#~۷'OaEz_GYDXVBI@wT0xSq:ueKdm}/\GArOaw}矪IJ_B/NS%Vl6`0 #tSa#`XPέđ/!AӦMRpO 䪘>0ؼy3g 9PXfTjպw4aW9{`\_OgVSCU&jw~BXbO_Hc8pSA &pƝ{h.]*xs8&JۦnWOO\[FkA> Cn2C RaEIm*ꔅ{o "viFl}wJe8@d1}J3˲.ZL=X;@BkD{0baL6Cvŭ{HHx{gVZ`om?:6>46R|R Pm9,{4:xo㈆U})gnw IENDB`PNG  IHDRF /bKGD pHYs  ~tIME9IDATxq _a=  ǰQuI{n.K؜Ehwyc8/Y{) c<#g(Gέ֘gN҅R4 0GJњ-k1Vۨ"8eS!ɡC)1غ2uJ$:rdRk xBV H|fHMзݍՀE%3g;- ,l/,84VD6wprADLhREIC:?@%X뉉 #+WK$@'EN[@ +ѣ^bc$brR{މ'ɓS'A0`c2+&ӄ"Ad^ܹsu0"KYײDd$\"IɆ"N?H. :2H-@*kkIaF%5&F41^Ѩ&D$I!wlzR&yꕭ#b.K R5/{$iXHGyfor)FJI0ٱQM:ٿޏ@ʎC5-IENDB`PNG  IHDR@?PbKGD pHYs  ~tIME 7%!} IDATx͛y]}?ݷ?q(RFI-+[^jˉ%bE) ]E:86 [q;J#ˎg$J$}}YLx"KY6/pqϝsνo}g?dIYZ'9 3!L"fD4vTWEI'$ b VDLFkPJHcSO-X^^yIrIIDH"=̡ыAh݊ E!qHm9y؀`LQW{OĤiR \I^%c΍??Cʼvo7_.5 @ҪYp?|MvoVr1x)Lhb?Incv^IX~eO 3OOLa!@[dF :M2'}"шq0Fa~>ˏ߿[ |x.ҁԒc<}yg_|'y3ECX_@_n"G= ^_>]BT+HHBˑǹX"3}I0зTzQH6rL?kX|ǟ( %8 N49zO߿{,1G0%!rX0|.sw#P!=+8xf$ !FƖ``qF@ k^*J]nk7wN1NpcL%H"Q^_ ,//GMqSgwD9TTuDAfڭڗ[R $Yʲ В$W q à0a a  IS &-5Bj n ̦`]qLfk#җ5d!EJrB&F~xR k8" D;W FkڌP6%D(BJ C9 pq  ̰Fv,cjR` E$F:`Գ|ev/݈W= wﺍ7\!pM c]BZcO T HCDB85%^#snpq#)$XK!FK͊ؐ "8)\pj%̿ʏCC&cYL'@:AQd2VҺ5Վ^/|J@L')Jc{TqJ(֨* ^%`s(B %~';)9'3X d\}ՐVN^cF9Xj<*مJ:/I|`K)*ϘëuzUG7x[ Y>M X ,% us@J~p%ßj1+Y_^.S6Mtn\Z"Xg52vf+%J¤TTASD:…9k]Lx]ڞcvPsA6sz3RbǪYg@UcķġK/@QVR"vz`zanO<DZ%@zL y ܹp;Xq'(x;Z9y|/yZ5 &Z1crN|dA:sT(#uء+"pEJEx1V"jn>pB$TFEβ6t4LЎn^{S{rujy  >!!xSYEMf v.>4bx!L)B q7.pH+Ȝ%cޘeLQy|ݜdʘ# O4B DZ p$B 8RxrFa@QZ511M;|SsV<笋t#o}92Q 0rΝBεE E)' +,@uhAַt8BN+8CU5.i*fXu(XMY_cc}HgX5aG|w%2G5lR5= އapnq9b:S JFl !S6@0,"X!6ƷFKMO;r%nϳώS1y}g^?ҥST]Bdub,ʭ_%Y *;aX^B;y.UͶ[MJ>G\O+I^9#\Y"1ġ(=N(\ѐqލK;az.%{Ei$ .>M1ʩU+H};1]: *`vXN+Qv+f Ƴ{fހ{ozIsC0ksW8~nG rD 81e^vCx8Gs G:xEa{i;nuMz#$6]DZMVѶ`&q4H@! + bO]Btik20K dw~p3 #?@!!P!+ :n'sd!넡es߾5?n6&ZeH*e]TS8OT&,LϾp j:A%F0&/tD9VjhJM9y󗘮 tCݤfÝ=Փt1H-h` eH*&@˜-ja5%ÄSQ|$[wo}F#|Hau JWBҥQ )~x7޻nDz0zK U$ n. Qx%.!kL2VA$P@h -(Y2U( ȗ%T䉯Gv-4ڷal?P %ZX_UbIxoˇ)DXhHg|ž4kx6I^u 7˷,%k! –%G*Z{Y?u'y@ށTJd+/aNRQ~^wuCCݾVa.A)DG!N8L390t! !%6+/=Ƕ~߆Z~uH&Ƥ*&h27Y;ƅNO,U0N(F@IX0 "G;?O|O瑏~=~8mPW)O plHSxQcDIYJ#O2=x ,:rMoO'3sS5RM 34ӌչ;!"Ux7ƕ8PR8!/|gãFJi.1.JJ*.عmMoxNy0&-AY^<α q0z-*<'K>U~4Bbm ]iUx{׮6_p2#JAH9p$OQdRQ cs8M/~א y¹Ms۷KyP!w7^MmzW;>)*VI'1 Hopu=IDATQuZD$ ,^d0̑lCMVimCO,};;#JG,)<2Д’{lF%HhU[\>yZck!gu^{o]?9֨ f#Fmh`2bf+zLc̭gѷɆT>>d\4:-zfLS?h;{f9Oij2庀?L3$мͤtApәp)-r>t߃ ? ]dЧb4w|2?榔^gw!Xt뇼_̭sk9:K2p kV+=\` (`B0E"`3Ȉ{ߵ~z(3s]л%DtW:jήޞkKF>R l[v^G/s"önkAEn$ɘ{μ+x=;/9/,<]:"$ڮ)ݦFX |Rbp3X%8")P/2¿\qV3\ {6e bd 9.-C9NX/o)8t %#1;\9g:=?NL('+ QU|F*  BU\0t3T"" _*9B=p m*0)T(ATMfv28 *V)٢H[ŗԙ]!W3** A|E|͟XUkBqCu(D\Pm Ԇk*C{B֩P W` GP*tfQA$P^%9ή4'S0ЙΞt1T(UxTH:GU{cm*Wv?;X ԗōܽX9Bw~2BQ. wu漣VV GEܯC-;Agg?#'v4Lfk=+WP\N>_b~9!JHšB+֗cu2 wcaM~U(YS-WV oY)t,gT8z3[.Τ>x!Ů*02шJT#љ_]>❻˖kV;"h.ׅd䭹LCۮH̓A$%oqաPǢO,Flo({9Z T>eр|gePiHDUST1mgʗ ]:tgG޻=VTEUF>,=Ǣ_¹:o)9f~bKƫGc,) +Vg\ΊtZygЛIs tf@i*p(f2T3FԆigy?;m9 ?n}i o jy@},AD-=GonHћ-%[k5Y;:jLe L^L L#A`J Sח°yּL[0tn`K8K՟WN~q9? `oGMf ƨ@g:CTeJS.j:BZ5#o~B1 ;•g"0efbLau53?,Kdea{ R"O{vޜPOLw[ȻO8mՆ9[JnG1f5z3 8ǶdKBg*E\g+Un>y,z6Ⱥvs8$-"u j":6=[3O yWcs~l}MgkɜFmDt< `YP@L8rO}P$yQ$:0S_B/u:I֤)sLEQd@O(Rܗu̙݃<~Ӧ7t`K""`B\ `bm.%.977w3-*2j#*s@\%t侍Wq&qp&[RmLgp®SVݨ Bڟ8Dj{; B8!ƥV~k7ngy.ɞ13R;#X \ dL 8Bָ'1$P 3𞈈AkF@T^Yv٥Rpp!g O<<$ ԝEZ!3Gp(ĦU#JA@<{v)b.WS}@%d_e*8$g3˚' !`C"{p Nr:1%9¦<}<37VF`LǠ~Ǖp]o= 5ڜ8j%#@#~ @Y@T {[q-$HpHpBC 31xH*B?@.ثxV2ALq%\1Xt{SֺG# Zb7t @W=UIv#'*:Z\^!NzJΝZO)- OGGj;痄J"/ @Zn>=Du ;YCC+k AhT "u`@x  5N KU)5P^g(J'>"y#r΢,v O uKR pQkķcI-wYQ? GWWX&%#f1Ҍn<GUxU:xX] G ` h u<De$@Xn2iK^5}7˫&f ȵNǪԎvRe1>" UxDn8IUj/=k @uqLVlДhE 1/7v+)nۂT +PL$5e"==_&Z?eo eE<7u[eid,)r,2 \oFrlЎh$+"t;F&pGHty"z߱mfYqo-l~ץ66ؔMk*+"hk5ld*{h9pfoapAX  _՞J|f';+H3<|Zi_jeYVơv;3pr0'f&sg8?\B@+(568Gv؆h49a=\4q,oy޹ZSzG4%F?xrr"EԚmd* 0hMy뾧s{}y:9]zzfKTp Īs.8Br`nrǶ_{[9z1XF!A&wϾ\f&BlB?yk$ 4Z6}M6X2ULP'5{r3щ!$s%*XFq dǾήE*Z|7yȫƸ]Vʆ. n:g{!n--g; MκCI5jM06\vgmKB3o~7/ꂻun}@2T=zsG@ߺF?{?;C&w0A@[}x~~O |c:7le00 f$ERi0;/qY\ILYkcRrQxy x>4*I=:=TkZy˟&"䃈:НK#Rĵ՛Y~|kהv1ƲuWgRwf՘5kݙA"*^`0}ֶK韑aBj)EZfG9'E5w)+Dס9!DqL!at:C`XID?(2wrc.o5W+<˕Z{S$fSDN6@dOk@g򱡡fg{gPRAJYI\uT#%1R08 =rpmsT !EW2Fu޽[:۔iE0;z5zOQ cKjts@Lrα CZJ 1<Ɓ}x(k_˙X JUιmyYiYeMPzFQ%<q] +,Z\0}`S{g0<6 )0:ɞ~ w<^>\5V:A\"2%5FM!# lR]U_6ysX|^,Qaģˇ7jwF貨J.q8oAySXiinB,KYc9nQkPoomog MZ n1TvZ^'> BGꖋ7'?ꌿ ~<1(K\YV{RR HX=C;1\PD#飻]nW>uYxa%^;:+rgқn͗/EYhv`˵FOkr.BR\ Oyw ڧL [a½pME'|588<1۵H)8gP}z:8h[}yRk,2H:)q%lpG{=1"C 0ƈ !9?.KVvE Zm~ۏ1}pBJB)Tyg.̒ٚt,fmf`D{58Kq{|3i٤qSeN[8Β qfEiJ ws @Z~ !1@ bGPAB㊴xNgt)-?R! %Q Hq_'(FP6IENDB`PNG  IHDRF0U XbKGD pHYs  ~tIME/mIDATxMlE3aWm vU!\z&6\$.UzRmqE-X7,Fzm !. P a(R3ֻci6vK#gy<¿-ɤR*;w\0 PJZ1j#@vd29"MF˲z )eGmHWEtZommuFmXʼn'Blie0y@yաǘfyM3p< )3XGq2B3gA3l!lv:uTtHcׇIgsse iQ - máǘe %!pڌ:pݪ/f{3S]uw} cjȪTBw !Zk2ݲq<٪C \3TBjL]8u._,//;++^E#D6ۥqc^G., oڨV"&cT ..B&m^zeNܼI¶Ic}1_~!H`}9 qwP11:ֈW^Aݻ!X'g-? zP@F+"lֱ0R13s!Yի%"G&( kע Qݹ\X@LLo&;;;]iI[ϖeE-ߝ28{ϞsJ 笚!}:]1W.` R&9;D8^tƯi0giRYIH)68%&>e[>A{X |=Zx^>,+8GV|>6 :NWQ)Ak_; }uKAW_zKVN/~, IK)H?:IENDB`PNG  IHDR$bKGD pHYs  d_tIMEܸIDATx[ipy}=3{ A 3 ,J"iAXN*)Yr]/W9q였)Ns [J":N-ZC"H H̒ !,vwˏٙ p9vY2>j){b-b-b-^V[o` @i0X<+#ns<& 28p"8ٺ~#'1-C`maLJuS]w;DO^wy.e$' +!` (+ F <'h"( brŀBt͗~1C=Op$3  c ZNs.%Gz齗NemTД]9cf7^ 4 Nd|]7aNE*q;(l@(J@ܡDR@a":\ lj#IGm[!uM0ʿQʲڑ dxtCƈ{ YŌWGXPcު.n+{$kNyyvC].@h6$ܬD2:`oy 1Qp뙜~yV2KnxƅƩܐ .٦D_5!k@T@`=GIX߈1uJ@lWZ"Hs6HJۯ8aI $pfrYR2T*CT >* drDnyXh\%*ʌe@#$"NڇV@yݘ㖎RY"HQGc @/v66̌eFQC#?7l$ Y^ٞϦfҾ3q ~;-2 7wYuCpެӵc.@z§&/^-c].lŭU* *Թ* KDҘ.y|mOň/DE $ց[~!wOIJ.Y=)˭ԬK: |&w ̌?oŘUO:,+D>Y*A{6v|K SB#D;үd)f%zj_%((nzP=8GT%ZxuMrՒ,V)K.TQ01aOAܺKyշe`5'`6yGՄl=*糉$ 5%5Ë l5o ?H8wSJQsgо+j1wf(w_J.1;+Lh.!Nx&fYiw=\w,yH쀧O9^42FpC)[\w٧QR> n7Eo,+㒼[%~$E3 89LbA/{z|@El}Fxc;gzn]pϞF-ESоo0/EED֦}/ H96-O;<2\Ff0]rYi 0V=Q((P ;qζP}U[q!*C"o'Fn=qp*eR4vqrX3%Gc,bUYXS{R$4fs{P5׮nfz죩O$)#:S|U-,pG&7_,l}N  0 \J$/럸slElCRFs}yP}O4tl8PΦmKC;PeAD\wᓦ!i>Rx@2 ^)inMIrk;0CY&5g\ +e>uΗb{b3(UXC_e~Iu!tf6/졗mJtS o~~f x!e2OlGw5&~oJlAoNٸny=L>qrg"+ )3cjhL1I Ɣ k$Vǎ K]^4+M;mgNȡ{W _ȮGkꮑeCLg4/IA'_HW2N9W3ˬT69X17trO_ݯE&WʺZGZonkn?ؼ!`xyc`t݀RHKC"54THLZ";r B`DBjpkr@tiM $o@Ʉ`)j.\\)?0„$5e^/e57!- =ދ9X<=]>';yfԡccsݱ[V!)P(\/P>6~9#OiGŪdn?~|)&:7ǪV6Q^+*I-i Wʘ䬖Ξ'=dLT(:gk?"e#38sc^_=cT!9Թ*tjYRÌ@ _!y ɾ GLPuK$w)kY+o<h ËURY!Dg qweJY$V˻6׸WAm}ӷ@ Iv"gLV7&/NmIG=^{(r_@In5g' ؊ )mcޘx:sl޸la&DXܛtw87cgv"('ܮѓQ"x3Ocunx r^txLjZ`,Lj LwmDfJE#B,byg۝B%^NۅVSJMȺhsO"NBў@wY[P$x;$~afIq@~Vr#'qG6|VSIWo<92+ԃ?)I hȊ@d<3%Y>>%ƹA) ڇzvB>7CmJ[we3O}hpo{ӱߪö5+9;_D28Dz1!Hf<² -kuJRʷ =Y6\Z$8IFqэ )yBB (STH@EWVXg3J &Hvo}N՛-Pk~) 7Wňܺixe*l}LJڴ?08e+$ D}I9ne /d]`\#y\{!Z1x.ܴak( 19遧dã _J"sGNbQK$Bũ5+#i"/3J+55>>2xiꋵ|! ymT?ms pֽ,JC %"ʉewWmϞ>|`783d}gʢ^ۮ0yr@N9.㾗H,;䧈I+Ug9y&أ!ʞtn_zW@f֔!ޱ?gagwvA}P[͙Ҷs R&)m+,DmɹOe-"=p .ccAHwT+kO:Rר/ neLS~8eF% mǺ2V^j7G~49qB)`%C#Ul'5kOF9QX:7 "-YZB9Qc,99}:go 6í@::NjCh1sI61)sLsxp@j1]fé1UنnTsݵm= J Nꡑ\`Lvd2eE~{HҎ=`4%*¾y*%3yomc( 9tO]r(9yrk>pD\KT&+SwpK[_ LܙGc, ""I)]@$d%t ֞VbYp3f8nýj"(]Gs&sQs\9}KN~t61-e/޵C{Ś=C#1EZ,0PƹC+ReGϓ!%I)ry窒y=O5{&\nIKw|{ ٤$O33>YyICLMIw=ĥЋB BIi!_ɬ8V'˂,"_zYIKxPž:.ݭW#1_~]YѺs 8ތj\p!o{Q3,=[ޮ~t@ 0ë?~I5{ODޱ @Z|EIENDB`PNG  IHDR/~!bKGD pHYs  ~tIME @XS$ ]IDATxAH[%"@LC!lt-bt!؋poE{)o)ҾE[/}b]ڊ ݈}H!^ 5pgKj#Ms\6*T[M0 idn+WFFGW;lQVފ{`[ [9~oi'1cKBeKV* V2F&,̭P* [Lf{E{Ma˻Ko(iDZCVWSH3u4kk_0e سIO/>ǹ1m\[E|Xb!X=eLO!gaM:nbf6TyaFXZ*0D~yxnɺc/u=EjmH32rX[)a\ ׭`it% [YU[|<6kݾQBM#=9u㾬;C|ywȖ;B+! lғgST7TiޗVEJaVn_SkhW02b"I[٬lȊ>Z.+7=9`Iigf3¡}6}@3%߷Q/3\|_= 7|X#~:O<Жb (Ӭ̱ YXBsȹKhGa!ɘSzؙ #ZН <{ɒ\6K ^ X"lz?=J{fH[tYhy8# r;/_2`"#`LɌV`_{I]'g% ĭՐR\T?eTU `*;Fk?ahthM;64Wƕf0^CFVU&@ijɝ>fG)ZPZ fȬVpDaEv"Ų@[sF˵]`šA* LiEYF!Zev"iV`bqaX#é%"[/iF(2L+,T=Dϓ[5Gb+fX2eݕSAdI /GG,>BF7̌/%fImÖ?5Zq%䚏jc ʌj>ck=.# |4jfkw"l^UجR`4,-tiȂc6\hN}.*6jX".fJ`ǥGCVA67!_ҖVFRB"FyP6tc Ze&rj}ظ GHM_}Mpn v)en>6 6WUKHeF!?B+ o:hb8ѳːaLr? 'NzzJusCr?'2x\ C+DG2D2K{%t,D1yuSq+MS=d@+! H1$VV,M,,lGW;adX7*V/_61:7`t`6ɵS wn|FW( e>S-,E"HL.(E dUq; )ʶ[G<a2FޛD?nY8H&[4Wk Ȧdf;uz(5 q%d9(F2]+* ʻ:88+_dL4# nϭb<~۞d6,\t6D[ aY¿7ҥιWo&HYgf36sq%SqNʆv $΋mm<q(J,Z eټ!d2 ۍ~ T*ֆw}J&zD"jh48 xnܸDee% <ݱc/_"(J0 #4b npG @{{;Ffc T /^˲PT8.C|<+**022k׮cccGYYٔ$ W^Acc#8C(V 8 z!d2 Qq]B!h4yfΝ;tn޼ ٌ_~ Պ~n, Qq aj#`,! fΝ;F2˲\èÍ7Ve[ҕ. X ۯ] (**0LOkZ,]0 1T*TWWeY֒6f9r^mVB߿Wŋ駟͛(d5H$XnTT===yZGJYQQTTA>;wVtuuȖt\.zIzQt:N'&&&ܟ/ N:88Hzߏ z0 ?ܾ}LF\!Bf}v@SSUTh4FEq! B(H&Bќ|x"xǦM AiII I֬YC֬Y3#[, ٴi֮]+0p8=l"3g+WÊ+CRAնtT '555x<^ tvtvv"JMR QgJ+W$[lG}N,Y7oޔz<$Z-meǹsr/hSO} ܹ!x3R9bYvsd6<ϔs=$W\H$ze!JTHJ)BФv@MM j5X=˲lF@θUœ@w.i֭[iSS(Xbx``@vPoΛK%5xqq1z{{P(RlޑSPS(bݻu .Ȅ9Áى2l6XVP(0 (HRLHJ) e%p_ĎPJ~z\t z>c/qͅ9RP`ժUbE(’%KPSS V hmm%z^v0RDY~=‰'@)Ŷm000 g39REB!'fZ Vp'i؃x###hmm~-( F @"@}}=jjjPVVFy|:tx[%QB Dp˖-`… a4ڒ -R ZZZ "/_ p~F ,@KK ϟOy ʅZ(*&0Ph4p\p a*"L&XRDnvCbll x<à @E)E!BzKt `$@$0/)&2#bF{G;N85cB^{ MMMذa"|>a-j56l>Čt^Ğ}wfFڍa0vcx^5Y , ӃX,χh4!b!JRsbAncS+n7vfFllj'>Dl呑رNHd2c㸣*l,+N~}ϝwUb!>:WqAʸ,ϱ%aeI|Pf3͛݃𖔔ECC011X,6(`. G;v=>!|cpMhlɟRW.\fHbnͲHU.Z$pNs!H  !`||pX9(ZH&hoo  [v$G8~wRn$b2Ν;!tݲ"S7iinn31x'ݍqd,ˆ^xLee%011,ZhZ[`gϞEX\.V޶m z= x!("GE$AUU~?JKKB FP/@__N'~?,X 8^}UiV?[BbppzZ,0 &&&pfz)yO{:[ 7qxP(p8PTTŋ:N~ b֭X~=a>O8yjxX,6_ҥKq!t:_dYCBzJ,J!LSt!zUڵ ---?k  AsMdK:C)e*ʫP(,{V:QE T*7ҩDkxgvػw&B6]_yfP(rzwe? *˾X67EcG)T_ J>XfE3lDZ%'.z'd_e;n k! #t"3""b>g 3X,\3E3^gDs"dŞEB8 Ip/5[:ӝbmkϗ.pw_]8=Dsn971\ ŭsݱgnh"޾&v~IENDB`PNG  IHDR00WbKGD pHYs  tIME #(8 IDATx}l]}?C;1QZYJ01"5RЬgHSV*H`[ U(&hZD*E(JDӎ84/ /羟s9Ng'=ys~}ax8p\.W/ ^>bϞ=P(B FGGڵk B΂s@/po.ݲeKn̏3mM G2˗/?qվ>ض=oB^s< x\H7ig2^}ڵk$&pz/;7B^FB,X0ib IR. B^H.JeA ?Qծ" .(lχ4 $IS2λV}:t˲$i&-Idr{gi\ @.ПY7wtɭvrc=G&$aRY!EAQ `lljy w%9,WPCPtCyg?e``{R)0DQ$I",Bu4M4Ml۾vIOCX#K`yD4DC Wz6|;w"l}4ab6e.z1&&&Xfͼ2]}[}_bìkUuLϢ%+pqMXn nK4o@ /ڵkN X,R*O?E4EFu__gDH)B⇂eGOЖ^+-88j,N!Kj?$#GxgR),---d2X57񶶕]p7BUI,BTQ "@V5b1%ADru?sԩK(Bss3+V 6I>q>y3$_J-ڶM}$#!ZSdΘIVRQd"!+* ) nBj~~NիWىeYITɓz!ܺ[oA_% !!!ٸ䏱7Yjcs4) )޴J7O<j5ߏiE\%J NeнBwt69L[w5v *VmP@(." H6o߾K'0 VZYf mmmDy@lF6(B /($nT;$q}AO @d2].xB@Q %Zu}H&tttJccLޤiA f ʆGdER@:WC/pOp2^hDzmqs M`:( ض$I"e͚F =_l'kDd$ Dzvdd뜮4A.$9gx8 DDA6ϚN[\fʕ3eY>':IBv K2=BZ痸}M$61^ )邲a:nk R7 ;JBqX6 ;%r}%Z >;lU tSP7\l]4l]éF4șxQz=GPͩJusd\ƬVjUlv* 7' oiӦω+0`_`VUC*% >I 8S~wO#}˓OU`U+X*VwlM1d_ !Jouω_)9;SU>vr>1ZK,jol{+Oo[Lc8uI,FS-=y?V(-ZeA ?j<bվəS6_VŨ|@K'Bvo}]O\!b2E(E^+!@)+Qz2˵#z=t>ߊoxE`E)ov3p $@ȭ%>XL" -_ O4Mn۶swfabMMMHqGN9<|\n?poP<4hIurdi*)(  ܀d6,k|apG ᗀʀ$IwJyÅa^e6t]' +h@( :$9?>v-$C"JXlYȘ&ZxA/;_F^xK]KZi,*299y)4S~3( "GP9x¢MHLZT*pv $^ ?\p_ ?uuݙ)T,jT*0$DMxꩧ8vN9R$.E(d!& i$R*F2ؾ}@j5Q*¶mQVG{"N0uL{gd=SE+dn>Wfttwy7xW7vuuuצF|a7ڤUIENDB`PNG  IHDR(ԭ1bKGD pHYs  d_tIME(# IDATxgWY.|y4 h * 9D= Q M5DPLH !!;;2crkߚ==yg?C/}CMxŇc`8GdDõ 67.gkz J)yl99ׅc[RɨZ 0A)#+F@0Њnf Ic {A sBC^qyĽz$]a)pTA F@eC] ;-<*(-1r|وjk_- s\G'WWE<9{JG;1Y_S0$}l f~YFQ.V+;vHs-[hu)4,];(jA50f6.*΀;\'O/V˲_2)[>v/Ccg= B>#Zu6vNU)A!=hD Z+.E`ۖ!@-ll&">u^Q9fcS ,~t5j%%tWkn(J RWY4CN,ǚ]g`~yN]QaFie 0dP`4PBvu=+NRZn3z!ZFCA%4vj KTDvQz6RV(>-DZgX#_U]02TWu; J ʢx$@ `&0@f` ;vR Wn~\N]uqbFˇ0TU %5mM5Y^B B0Dn*d2 .//rSu-ިex6Q l6 Ak~E ;,)dc2~[76vGP- tK m fqR%B֠Vp(kM UY0p\N$+.vBk,-0ElE4خn;<9(@6 BV_ux?IvX >[Z_DV(mh.!4Pd%Ph4}1RR ah5gar @]i9e#rPLYu208x@9*(5س{nEj didkhc tz( Y+Y\4D#֯?קh{kWi"@1_F ΣGE)eh: aO\04 #ُ4C2Zga+ a o߽Hf[>ڽEx~UQ@Qw)5\m[va}sQ @eSܳwc:pǷ2-]wUE9-VJ\9{BMգQJss?{o\h3|惹Rup,*U:Jae:Cg!v-/ yزY*s^(#{v?vrl`IoI{?h;ܽ{'>T qlQW5ww\,N[jccHR/1+㋳88]9LFųcdV;mRXQÍ*P @+-H8S ,42 G9<㌻w/Q4; F')ɰ Oڪf{0AF0!PJ?$DX n:^pl-4Ѫ._X_z(CLWNwnxq{)f֩vσX ^B9X)ګ* huVwW+) aCwرkOk\;h:ǪH"W5:kmq^QU@Z}cnǨUm~PZ=,{e7ۙCӟ:&;"h휻9yd4W_[^kGx>@$s㸄(kTlzynDB5e^6/Hs)yQE!DM8E,2I;ڽȓfWynV'$lQۛ+W 󝹳⻍%dAY`R(+aY-jd줳"1r;ӇC ֎Wa#,JD1ko:,a?'lڮXj Q&|Z__74v:M/VZcX nQwzM|ongw݈ڂTeI}񦳌Ia"֧W~(=(.M+ z_Cl2GY$1i6E ^x>zo|-TlR"5=- a2@2 l;o=/%n3zֻFh4l:Z()- (D%WqƩ)nAXvˤYZhc4QndKPj>9{)p]mӸrl0Zв @Qa\~gSE QףvQ,zn3\?yŽw~%_Z?+Y|2nz =׵ BC>DaccD\̢`܂7Loniݍn)q,hQIc[hoii_Ux~q9#ţ_mN7 <)u.lZɓBoy~r]ZX¦ ˲eh6}C4V ㇵ?\UUR5(je1tZ t<4><:~L؋s Km  QJ-'>U8 q[Ӌ.V=.j)4\FU iNp|O967G`k̠rBzPveȹϳ>۽廪Ja4<T@k4)EiwsҘL2$Y A A] T:m]^p\~N)Z ]88QY.Bn5wɔPI÷7W`@jw[-u(WVFO\Gܗ2$B@j Dll.n(SE?u?ݘ'?p8qx߱"K1Nȓp\R@:Y!Ph! Pe ׸AGt:[֎1F29(#wzh)hw-c'Z|-BQdtx븙l l2͓?1FI)5muOU#BK(ǃs=7{/ O&at5Ŷv,֐ Vq9關(WEv7|XVYNQ4SR m>$5G R%0F#K䙀C84~/Jf)bwN<ouډ8x܉&ño۽͛O9! m`AH^-s m2N橿*FR)Ov$2YMYBlZXu,<,25t:v+|̻>3߽ UV6WN޻"~V/`ľ}up0p} u40Fa;8H E!P5D}[ЇpUUJ0A9@h8W9\YaݖY[umSZ#hxR)g#Mr$I4PW q4*3tϿdf4sh@hqg>y>ֺ'e)i\w7>%Lq-Tpe#3i"!F]cyl~OMN F!o]XޝHeTuY$_ (2_/NzU.mbaQ^釮[(5Nx2Y|&֨C(qZ)pNW].TIZ!KKq`}s 4e`Na$'DiJXaH. e)4,Fz*lǵ BTR[^k~ד/Į=♶)FQ~EgX`c} M2TݵlJ/]}*c((\E 6 ѿNV׾Zg-TeBXP/w\5y\5?z1VopkN彝 :7~Έ[]cDc}c$VS8<!J۩p]Av(!7) ! Iuh/&A0fۯpZN;{ޥO@M-y&ovfh> SU1l 1CWZJ эR[<lAI(\c=WHŇy2˲oQJ0E| >'hv(l{ 修O7[/1A kPJ`@P5\Ty ,kJ!I3UF?64sB*eݷ=(lsxuD]TL2Ȳ@^"'7?XCQddK^+bY Kaw񱫭~k^NZ:u^[Qhɕz_\{ϕ>CgF(JF1`$l#1J;A)CU TU $b2 8E>tplO*a-X.T]K$4B[$EP@k(Tqjc@PC@R ;p4qͰ"Q%GN q"-AA%Z@W?4}roALNBV9$mo.O,^pUUVVr.oQ0*~?sl5W6@(J[ E]# 0i|btڰ8VJSmDžҏΆڎvF@j p Ȳ U(+!\{0 %?"a[@ULadhrk'as8x lJbp䅀RR*07mesU 6G6CGEaU鎛~`cg/ɫ;΅.[tya}WO{m-Z\)Kd xGU`@I4.j7,0(:=tFcV% wKQ9xmsTUe'kwQVRTݺ0L%6WbkeF1#T0Pn<;9PJAk p QXѽѰ=HR(Tg A"LghG& <.cO{)=.O V}tfw@Y7:='nkc4ם߉Bp5|sj Zi.c,Zqlpơp۽u_5K7rƠ|p/,* Z,0={|ouui@TedgIZBJ Y%NcidYL'`6:ShZaA>ʅ' M hPjȃvsc EYjxJ)Za2} pxgD64pUʣꛮ8_?>s~ͦ+y^M~N^ڵ;m,<c6e{A(c:e 0? o>!~( !vS ~PoE)YeqJR]Ul 9ǹ e<0.-Q-E!Q*f=@x؞Lb0ʶ@hv~4^xљ2scp%XXRZ=6IpGQHa@ AӀǕ5/Ao61hYX8ڸ߼>{{+ᯬ#w#H <{ l!g$8@@eu9@Ƶ0n.ؽVBVͶNfYePf;+E97׿xO-G4d?}VYhXi !VF1p@)41cn?6'MQN; A}WLa%|%Ď `DUSCeܧ'̣N-5<.S1v?T,,.}\g[n N4*Kijwvۭ3vΓH7² Z- Qz_"ٻw>wRIDATE8pm#dzZ9'?yc.s9UTe nv/x198+q"o6WJuUC+v ~:6h 6h4;?um7Fed~Ocxds}|#FKX]b( \`:-10@) )t2 GVpw j496(̄.s/Y݈/'P"G:[ܽ{sscH6qO1)$(!\F룪$j'}oɸ8<f2x[WryHgh!1H3$t)l>"3 g)R(`NPt (1TkrU/~M~`;$W 5ZU6EMڑu<({ )(PB]a-hqdiCAq<0;}}#h-]{sl]Ԏk$+Qk8`R@ OsZiju:>vEQו=yV;@#a;&- Y+ZhN_ɿ~$35y8Fkܪy<ɃZ;zy(ȳ I#KrU8QVuQUk8_UC1y\׭\Oaksm7N\[ܢȲYZ*HVfxEJ㨫 q`:+Hy5[biAgw|n&aӅ:p& gOʳy6C2?p .`%Q6暘o# (G>m04 hۘ9X]#rBa >ykf}3\M'`!)YO"]ݎ߮tfcw@w4.4׳`;ҴD @Ic1I"'0Gl ϣ KgZ_=6&t!q~ o4PK/h6:Gzpɢ(e / o_ {I),w|q:H@׍ ϵ- Wcmh2 N81-K6\НCp{)%<ƑcZVPZum8Х3^t# pxf2óQu(frS'f)'+ȁ8y66P{otIؖm$)c3F)3NݖMYgz;._SSNGa8G`ykg~=g& rTY-;<{ئ5W05M T*b4iT+Ym;wѰvw|CR9B(b+UYba,5Qa̦ .} BMrT=G#LGhVh:@4:B|`nw^[ڐg°q٘) 4#\W <8K MSV$"t]r'$C96 mسp^7-"'V:b ?$H ݭfؘD`k ~PW8x{ ~ŰZ`1Ynk6U 2U;a4K&"88#+$Xs+bE)vl*)EF3 7۰vlVWD[ktjU;]Y()d 3ǚSf˶%0B4 ,NyP5&I4EPh=0%D,XVf] JbY :v|ߤf}~؞u_]QK~c*V5Fj}Vl e¶\ P= ۶ڞeJawH xv[$%D^e:`m B`]ݹ+-ˆSXHl^4:}7wM8WWSí9wa3 NJlb;mxA'$uVQ0Jv%RX=d:al'&!\1Z?82% Z ס ~hu -+M,MQ5[F]2$1Z^hTX4860JQ~by^=j\dT.gtp,ǟok:{BeIh[U40F P\d% F- Gl"J3P`Yi& ZOk J-=gh'߃4>_q^:v7g#f$hE6Ei*c$q -1X=\[4_~>t<'ڵ $P8 ݠ ZhZla-/01"x;uqOؗӞ #{(ōFZoOD`#-bpۑAD8u (lȳ8_Z)4vVʲF]i6p]úFH*3_gԗE6g[X BU = m[i !` (ȳU6`h #{ kYir]:]+F[O+xU)asגhli''7Xdy)XV[fovJ+"!atuvU jRSƶ1 +ldZ)dc| 첸Ŕ2ܘTv8^J+ w``F兀Bi-+%ŊJTR8e~ra/kVx֩"O.ͲRJ)eow\  lvv>hm{lGY?PIf7 QRz~R:rz@$& +E{N2:>*fq}~.R$3B|tZTqKz`!S\pKJ6j~:`JvQk f*nN:fŊSr*.$-Ӆ> 0)RnhNNrNbJx"O0ZdZBJV2#VJf^^ʂF6f(4D6~nb>_8R~^& /Be\B>rv6F %ƒ%N2%BRFTP,Hna HnPMrjn+6t>(ht&j+**j766,fB FNp:r|tRNS@fbKGDH pHYs  ~tIME =5IDATxHWw aZj2+@[wв%kT,QZ -lx\+M{k\H=VX }ݻxI~{}ߋ~gm3߬my.Ȳ,p.ȎԀFPݔ"IuD/O6 EENbA$$>U.m%4Oڨ3g#87ٕm$#Sr%[%5?~khU7A[^^Bl+ryٺ)v׮U5X[l (u˪ ^Nig{@[!hppfvNzcheB藘8D7ɒ$1n033cꜘp Rj43"YӒ{47Xsp*+8Ή*4&Xce#~\~7kb9:œ9s_#8qa!vqa\ΤZtl8rhs){4: l_եx |HK<@m2Ymܾ]O}A삈'ɯBWZFa[Qr 3gOC;}d *…+ß֍ٿfggCQMLOO/, ߹lڳ=)f4:l`Q(JS}L!/4\]]"v .45YwV M~x2>5DOϷ!.<>t߻W;"!G .߽L^xN-D51!~L%܄- S[q{$A#777гl&D9u}KA L4 acctg8XI+)Xu2i3?l}^|iV޻l`Ζ*:bcS"ki"_wdA 72:\C_qTLMMJGcQqm_ hR:jD,6hC7׉* 5O*. _UT`+uݴTx\IH&cN7)>|_ܴT@mj 5ݓQxF"ӆ@@襚>K5D$+mFqshD;Ҹۯj]V:%ϓ͖ŷ4\.B-q޽T+Rͮj%S"e"ֈ.B5e>NۆAK5VBtd/щFT-,T2jVao,Rn^6-"-KiKRMK5.`<*.HfuG *yEA#v I$\yh]I٪oio' pY}KKdIubtKX7DA;HKd pU,z4|rD2B8"=K. hawJ ?2T?IENDB`PNG  IHDR)/}+bKGD pHYs  d_tIME 0#}m ١ Hut]Gai2\]t:jv:\URN91޿Qmuݑ 4MOxA=EvFR-PMuJ\.r9GќnWl^hLO+fXiXE&!ٳZ-]Qj4fdYr<ץjs4!B\%9?[L&) pUznXfi3}_xﵳܡBsuSL&f$Ie^ضM.#DFA{}X)399ٗ#X{w;xG &}8⺮Tt:lDr_* 1%-o 5b< 4iǎ=,,-nZb&i"P5M﹇_zGWXx[j=ǎ {}:p}nT0 ,"H`Y\ "eq}>KKd24ԒiI~=_I& X_8RiLIJ,t]Dz, @?y3!gVy~l6l_A_2 76rKppEGj?x?87~5K':5=ϣnJv9wS(m[6Ѳˤ.^diiIsF2|'z+zD.T*H$( y'NcFէWv~=yc3ӧqRި8Vw*333A8aB$9ɲ5Ϸ۸ +5.]-; Fo*|JqkҹJҐ#tqhZtʊ^O{'p]w 6^kkk^'PQh<#\"ݮH&" ˲K#~@d^yE,=(}ҥKbmmMt:]u bssS8B8 ibuuU^[w$w_ZGbt qDYfv{;~^,._ +$Lru*?}^t ^Oxdng2ɠ A2 c <@^Z/Ҝ`bb˲ 䓴ϟp_2 b67ɟ=˥|'H(6}|on4鹽A& p=VV&C{+a yʕ2.s oNߤ.Q,=^o/)0-2I),C4=#K{v먴'$SbDrQn8[9]WY\ƨT0msu̙2gi9=>SO RYJFAgbgEי{ z.n\.\9}`H}reHׇ,>tG}MRaœ엩Q͛@92o%&|>3'O|EPP(JS(xb̛n:X LH$V2 :j3[mh48x z]Akgt^zIɮ[^fcc"]}).=TZym;rgnS|֨8lxQϾet1@LNNR*KMS ,l?-f.ԥ뻛W5癛cjjJ-?dj<𶛾00~-_`uurL:V~hnI7.eFXu2 Rz4jt:MJ$t:"١I^{ZRTd2r.+帲6۶M6Uk֑cq&BP(jLMMQhFPhZt]$Α|>iʹyWo;^l677*kn?UWZFA^RJ<oFU6dS~%r=F41>)Edfk_':Ewy ՘mIJ)9?lq0 (j5:zZF. \ !u77+ FMz<{ee,l$X{=/TyV3 DD"-Fx^~Y՟zЭ:hAOc&sssr9hضMXX,*]4Hy!8Guc1z&'xLt7g@ҍI NRx遲l6i.Ii\$l6j˲Ԭ\xY dK$G Cq''qiX|xѿ? D`=˿ʪV >Dޤ B{J;$ȑ#LMMJ u]#b{O34FD"jP'A ~_x{7&Z漮JŁ+Mi7}[@q '# PNA\ףjl6qGm uzcs6_ I2J,LMu.2x&,W<3d!nAoK·-O͑L&G;IZS>w~R4q?1~cNp]wƘRyް{l=%~eƞz=VVVT F'R t.^$?ƜCg\ˌx?Ň2M&a~~%QBUvD T*+be`p`~OЩP8Mxy{51.r(yZevvCq!fffh4*.qKrǻ~t:-9z4Cq!666Apy2˗9p gd(&`ܣ?NpP2ϳHRQd_(:7RVԪߨ4tq'n&]H&C-<Ǩ-xl'*2L*; , uVQ7JL V{ǩTY^OeX9xg?pYΜ92Qbkk k{[3KHy2 U!5h*C37Z2==4=$2D^Md\!뺎 Po=hh*_n`R< )]GHCY\*S8tX*T\6U4҉{C }X;:bmmh,n3g/rE $HS.͹\Bxi?YTdzUfr9 NRy&&&TS8U.6,ˢLUZ8\'|G4Kn̐d)|חH$?7tXzg7D d8pHѠP(݋xTi<կO=fd2><K#ild2pG4X+ =SS:>QO~/e$N2w Ee_ETQZm)i}[<ٓ`1'He34O+&w*q->9hjaXOV\.&JܸQJ{1KdWpO.t5N\urkIQ}sw??;y rٽ$NZ#ga!\!WU%qGn:9Dq33qFIwSy-ždnnFeYzg$ںC1I6vV}iM+_j2;;KT"J 61.h@ ;ͷnhb.8_|Xy]eggu7Ls{mzCўdF^0*E7u_U\n.#||&g. :Q*2y8x- Y\\d~~B@j lO>W'ƥUqGQvZ;6BC">YP~ 星l6t~ ~ ɈJBtr ͦB0LR,QYTiZ}4/vI211">GBSRI'.QR@FYd(jPTq^K;O}'wy6SFRD2T.Og+r t]g~~z>t]3 Fe-BAxXƝ( #w:!v97kݮNADvHH/EA#? In]CIENDB`PNG  IHDR00WbKGDo pHYs  tIME ;99I IDATx]Օj{fx|Gd${m۶1<U;:L&'@X-ːEDk7C1 pMS&/{YY̐H$pW\mZZZ%Nzr-:U;X>Vz4 ;+B+ ZJ}+i.0\FR i `xx8 4bnaY]nUX23Z1ެ*2+cYR 'YVV2*R;?|8s mUmb$Zzr ۶mb8CUUq:XQb/^k!JP[ڋgyFܹ)%΋r\k5҂ MӤ\.8J6@e$'OdttQ֭[&FB\c۶_kE&bhpJ%ǩ^:tqϋ/GX,L&@`۶m{AQLy#o˺ՊRwݍuޯ{]OOOs322@ 9vMss3fRLÑ&ljaE=ʖ-[( 󂮽pgϞɓ >>lM Ν;1 BP$all;vԁ]'&&Rr1R]]]\.o }K$+2o_9KNOݬ 6PU] |~u]ĉ011A,#L&/q`uM"@Q2 333*gΜ]ģ>*_yBCM MZ% u`ll#dժUgo9u---B!SQ(:| e*TGzH8p`4mLdXՐʽދL&AJI?Q*, ۶ B!p]4 qp]nC.#Lޗ_~Y!J%rnEB!C믿.9yH)rL>\.B5MU۪~7MK#`N0 ӧOswǏ ?ǫ~E!H,`͚5رc,bH" NcY֢QqL&lrM7p8i[K;ׯ{exx0iyL4MJRt:ӧ9qۢF孷-ڵk7fR|>OP`rrD"s瘘\8Sߴ_. ]KIENDB`PNG  IHDRo2ݷbKGD pHYs  d_tIME #IDATx{Y%Ǖ^ܭnڻHK4 ?~2a ^0 !ERNvޫ[Uw͛ I0p_sN\O1 "@?`Jg.Zj 瑂؁Lg9do_o<|ᕫ~q=Bt180N_Xw)t65v Os8wl۪ȳ c ;S^on]mC>q*ZxhV]u7o^ tp|vaM<2뫷?|PEV=7Yʳ44#856e%L$B@s(./MFV *(8z޹{gWnl. !/'twz5:}"\)]\˒Lk]bڗk_;pWJΕҹ毯csJ~BUXq:@^fg={|8םֺ7LeJq!Hןa'N_{5Sp&874=oH &Ln>?}VH?Py1UŁZRdZ*[l"^mM"˲s~265{iݍ:|ւ"7Wo?.NML7 Rn^ڜ0 ҼץE;8ssni{91E'ߝ4Ȳ !:#k׶uM:v{QKm"MV&0CTg+yR b+-aL67;]Vyh{s%JDΰ&,w@16W`_~/v^=Z쯮Oc^J':8hri^ioth3t盹6JksN8GuHhSR;nWEn2]$rYzAı~z9q#$l]x({)8>^otxvF;k) iQ_1+3BZk&a~o^f\7>&qRƤ2K+6$)ZkyﶷJ{li{ V 4W5إZVdȑXYѤoKMVoIQEjfV_~omVyߗ^VAow+eά鴯:Ip|56KNl X/I.\yR_atGze(1?Ϋ!Fs1iϼd)5.H :&3E1ys>^K!euEQJRJ ljT;ý+I^$\R{+yιwN/jfgv[j2:-2!c-gtJ3? K핵v?Ky^O':?KkItv?׻Q:kͳT4|,T*Q%JmY_ݾF: -RJ)B\Hu@eq K) }?:.~ suehWY\~Ht~ݕr94"nvm-%ڔ؆<91&(Gk9 c?L7Kί^ڊ8N,\ i_?{O9]\v}Vj'*Sc,zFPgl8nzj!p=+B\hS/otWѪlšRVz="cB?Ń-hUBFZjDLPx3$aXT0BPJG%%!?,<0" X=:ǂN5لF5`:D5āEtyo{>Yte UDyQR06!Ҁ'>싾)) <p")?PWG `+ɭp{W6m[ dn“OEmxA裹ʽC?Kg:rR*WyB|}2-!JFN#g0|IF$rT IH<<6GfƮygʏv"8ﳀл /TRQ og8Y- !agEj-r9<"|JFKPIq#&,y(dا %!#aAӭ*" %9<;_l'0nC&C(`$䷱Ky}gB8859Y)'g1[9Ƹ}GnN<e]7! AA)j)[ɉ`XPbԔo{IFp5!~v+`yFRM3'1BN#Gߠʆ B1!L IJ8kF0ńJ0%1!= Ig6y,cRZFcL…gf/;n%B{dR~N6e4@1v B0ŘL"`cexB0F~R AOSFX?O@X+D0! TfNNcD7w6!A IƼ9իQ[ EQw)mfr!bD1a2bJsbHFRRoZw2h ,!r~a#1e` >AO^'UdkmY& ss8t_n_H7b;Xd90A>B2Rkzj2Fd}΁󫟽s=Sac)^ ! BLiRO:r-5!z8G{DKtc)Ɣ`,X_ޭBP}`LI^o( й9Fȵ=;~qW-dDž/=&eգS$B m"~阐( "|3Rth)RJ8)Ł,QQ2qL(&pC<<6'׏ >pj뫛3ΜYZZY}yJ3 jnK{3.g7ZJ3@c &U2L j̺&r۰G'֮ll:~Ad|=5'mFxȐb`&J1N 3ElMa3k齽5V5WaRb{n٭nXY(s_c ?ڕ+K!82?7FI2L:Bqq`Y\0xw}^'ZB hk ;Y«zwf [̙9Y?;|=YW'{F(Qa$emd`o'gۿ2>\Y9TT(%aMZXXsshe٭w<K_- 򩗎 k)N?-u?jb'@@g)nkDx9lٽOfMJiXf|(/;;٪TkG--Ia6&8xEI9 R^9Zmm-՚SOBr E2JAuJ"~z9]iƣ{f8LTAQ@`t1 zq )9z} *"I~v=? +5(,+=wH ('9 6a(}͖I2)g !CQAJ)s9E2)U g <BPRk]")A(4$F#9NJ)9gBq7TI+>)͖l %.c+OK$[spp GgP-gs?Q潦Ɲoy2^3n.߼]v;{tX )܋GoVciy)O|)|~IENDB`PNG  IHDR<ei=PLTEZs{ZckcssZRRR{!֌J{!JR!!BJccބccŵ挵R΄:!!JRRRBRJBBJBRRJJRsRJssJsRRRRR{{R業:sRޜ{ޭ!RεRBR{BB{BRR{{RRJJRsR{ss{sRRRRRRRRֵRֽބ{JRքRkRRR΄R֥R{֥{{Zޔ!RR)RRZ)RRRRRRRRR))ń))Z:RֵRRńZ)έRRRפּ1111R浥{Z)!kR!RZcZR֥)Z֭ť{{cK-tRNS@fbKGDH pHYs  tIME 0譞%IDATh;nH)5bnC |slkkxϰ3gsB`lM;mYI?Wu6n6!M+$0B $x,xXxp$m9cO/>z(D\J} I8 E"bD9ȗdC?\\\_]oXaʧf$H|0>,e}G/M|/HGq0_ ԰N!|=WȤ(Q# J*[{YG]B !=BEB !Q@Iyaq4S%? $&EHcM0K48|\vƀm$I$@Q6t2,UIõFIE5y/Km˷my6 (&+>>sͽ+Ň+e#*%0uHd[S֞~\a0"iu'$ -7&?a(8ao֛#b`|Jf BI4JF"3'H拪-eߖ*j 8*k: SN(e9yQN0EGi)pE}677RW=Q39ʠ2u]n_a*i@,&8_QoF;h0͑CH@>M9o-mё[&a|N4\G0s7e6.. Lh4>8jr'jeV!!,Wٛap 6kHwMMdamWXly(>ö_ij|.oc^☿4[:"їO6HGG4N5$#̋DH,B]󼽒M|fD='Q!KRelګkIHT(GBCW22vs7C]]8H`&KgBC@ ِ lj#ťjFrf9UG2SX'Z/?8iEݭGpwfא@dKᰪFuIYcw$FG]H4O>[}Ig%cf9m p5*MHɶGX$ }HCS|I$dؤ>;G\$s>15@`ϙ~Up$[wLJ[NW%d;L;`ɠ^BxGǟC$Xdj{-v-z$ClF$ݔì*z"Jpƪ/LBCIENDB`PNG  IHDR<<:rbKGD pHYs  tIME 1XLtEXtCommentCreated with The GIMPd%nIDAThݚ}tT?3s$dB&a0@I5UdJ!"V-ŸE{Q9Ev˪ks*VjX j0$&dd{2ys=9df;}gh6#@@.>Xzi#o5:GGGˇH{fzm/ܳ/@Mή3 ܎&&#)m?` 'b1!Ir31@LNιk=}AVHO8]_H d*h:ЈKQE@B@C{MZ^Єe~<얇PUUTpjF͆*EEX,֬j؈444/λQfPDSnF.\s=x~SE= D!Tr8p*+qUnB ֢b6&5w#4ۋ$H={g xmblcx^af7mbEu KlP456fG&L&up6΋fx]:w& NGZZ$%Mߧ5?}oG*BM& V[rPjir:$PEQ@D -j(àvwWK&y)--?tZxB#/&J$cX JEao0&nłЊ&NA.S­R63hSڱcz@ 0agwCtu2Ɣk! "B-x3ܵǍoO5ՔD+ 1*tterv"0@߯y<}==ؚZQ%+"UBdEUAQ p$KlT(µKKa̙4CNw6Gsѻc#\{͘@^sDH~~EŐ̊2ZYQ3d5C'! u_ q #njAvGɗk擔KzztC>);\,Xպ8cׄV}e7}'pm4Wz&mu:]u-vf)J^1H ^a4h[+@!$zb"iUf2I3^af_廴4n{s7QG;U!tb4)D h2 tPD]3u0%yIWi\~#s#!ʞ={Xz5UUU2::ӧz,j4;y뮻$˗kW̖9s%Fcm^}3?0?@@ IXV>h'Y#QAS+nK *$.m*?Kkm |In%KsNz)Z[[9q###pB***yNcǎoEKq+J^@xPPU/ZOKʲ8"-"1,/OfW,`]+b?xWINNB(EQXb'OuR`6Wو`hЍ|Qt:I)ibV^&FDIq1[$i556FVphH8:  q(5ŋP7`ڵM#H,s.-hqzHZ%AYI-hYj<,(!Lܧ c?޼y[oeժU(ؚ?GJɛ[[ciefp^*:Q\2寧D&\~32x/̪?1'H `(jAEe .rkK1#K~z)zx|AܼXp1gfحh"vS\֦`v;%e456R wV!#&~&X,Yc6III+-<,_{,mFGGG\=^LIM%77a8TEMu@QQ1M刋ш@ b^KQ**!HyyҲx饗ǽFMt[jN8G@vYp8MLIh2fCo_VFj֎lxqi.-j1ِ(vmq.Y`۶mc͚5t:|>O=۷o- (//?Ȉ=Wwn-[`),d 0L.31$̙LHxi!Qٸq#`۶m<8N|>߸{Upft444*MM6p8p8hob4Q>D'-ވx pBp? öm۸ꪫx4 Ȇ WXX8em͡jtpqI1v$ɸ*AĈcZI@ egc4Ow^>̒%Kxȑ#<0| ذaC$%#--v1MZl6!Q0qcaTaj cu믏===G??~8Ǐ6e%% F_NXVM&::ܽimv{̈yV 1D tV7V$cDӴI;%)]B`Ħ^?Pp\p}9& Y)..rKЂ$(nG ei/ć'|4hN3.N[JkkkLdgguF}[ߊ̹['>~v#a8Ⱦ} 446`k!T.'VʪP[z[6Ænx]@ww7&H|VTTcƍ444i,]t8uTVKɩɩn:{:\m !x$.H1ZhO<9 30x`c*_TMuLJ_s46'ZDss3V>5ơCbV+s-y{qX]l 9݌>e(UVicTv_jLȈ6~Jz%mk/%9NM4MݭeWvaڻ;˴퇧 da흝WZۨ6::i}`~q_O#4D[y}%h".rߥpqfgC^gt zarg||7g 3utϛ>JFJ~sAIl| N`[e-֏ɚtc]=N>xe3Ɉ?lK2E>gG}|NX+_ Ţ.&JIlS[~Ϡny jzw6&+ZS'5wL# ֝c=%<m\4q~6©w0]z+fNk!Tpet .nrut_wH_/{K83 }kh}o13L%견t]Lryƣ3AJ:2o$Ϧ|ڡ`6l6E$a^kLf}ڕ๿f]g=zt}SpTsKoK~~>~sq0Fv>'l{po x5tlOJ]ztR?^dN^@SSw<?{^IENDB`PNG  IHDRQ+TgAMABO pHYs  tIME cw#tEXtSoftwareQuickTime 6.0.2 (Mac OS X){AIDATh噽jQy>yZck!gu^{o]?9֨ f#Fmh`2bf+zLc̭gѷɆT>>d\4:-zfLS?h;{f9Oij2庀?L3$мͤtApәp)-r>t߃ ? ]dЧb4w|2?榔^gKj#Ms\6*T[M0 idn+WFFGW;lQVފ{`[ [9~oi'1cKBeKV* V2F&,̭P* [Lf{E{Ma˻Ko(iDZCVWSH3u4kk_0e سIO/>ǹ1m\[E|Xb!X=eLO!gaM:nbf6TyaFXZ*0D~yxnɺc/u=EjmH32rX[)a\ ׭`it% [YU[|<6kݾQBM#=9u㾬;C|ywȖ;B+! lғgST7TiޗVEJaVn_SkhW02b"I[٬lȊ>Z.+7=9`Iigf3¡}6}@3%߷Q/3\|_= 7|X#~:O<Жb (Ӭ̱ YXBsȹKhGa!ɘSzؙ #ZН <{ɒ\6K ^ X"lz?=J{fH[tYhy8# r;/_2`"#`LɌV`_{I]'g% ĭՐR\T?eTU `*;Fk?ahthM;64Wƕf0^CFVU&@ijɝ>fG)ZPZ fȬVpDaEv"Ų@[sF˵]`šA* LiEYF!Zev"iV`bqaX#é%"[/iF(2L+,T=Dϓ[5Gb+fX2eݕSAdI /GG,>BF7̌/%fImÖ?5Zq%䚏jc ʌj>ck=.# |4jfkw"l^UجR`4,-tiȂc6\hN}.*6jX".fJ`ǥGCVA67!_ҖVFRB"FyP6tc Ze&rj}ظ GHM_}Mpn v)en>6 6WUKHeF!?B+ o:hb8ѳːaLr? 'NzzJusCr?'2x\ C+DG2D2K{%t,D1yuSq+MS=d@+! H1$VV,M,,lGW;adX7*V/_61:7`t`6ɵS wn|FW( e>S-,E"HL.(E dUq; )ʶ[G<a2FޛD?nY8H&[4Wk Ȧdf;uz(5 q%d9(F2]+* ʻ:88+_dL4# nϭb<~۞d6,\t6D[ aY¿7ҥιWo&HYgf36sq%SqNʆv $΋mm< # Matt Wilson # Jeremy Katz # Michael Fulbright # # Copyright 2000-2003 Red Hat, Inc. # # This software may be freely redistributed under the terms of the GNU # library public license. # # You should have received a copy of the GNU Library Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # import rpm import gui import string import sys import gtk import gobject import checklist from iw_gui import * from string import * from thread import * from examine_gui import * from rhpl.translate import _, N_ from hdrlist import orderPackageGroups, getGroupDescription from hdrlist import PKGTYPE_MANDATORY, PKGTYPE_DEFAULT, PKGTYPE_OPTIONAL from hdrlist import ON, MANUAL_ON, OFF, MANUAL_OFF, MANUAL_NONE from hdrlist import ON_STATES, OFF_STATES from hdrlist import Package, Group from rhpl.log import log import packages def queryUpgradeContinue(intf): rc = intf.messageWindow(_("Proceed with upgrade?"), _("The file systems of the Linux installation " "you have chosen to upgrade have already been " "mounted. You cannot go back past this point. " "\n\n") + _( "Would you like to continue with the upgrade?"), type = "yesno") return rc class IndividualPackageSelectionWindow (InstallWindow): windowTitle = N_("Individual Package Selection") htmlTag = "sel-indiv" def build_packagelists(self, groups): toplevels = {} self.packageGroupStore = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING) keys = groups.keys() keys.sort() # allpkgs is the special toplevel group keys.remove("allpkgs") allpkg = self.packageGroupStore.append(None) self.packageGroupStore.set_value(allpkg, 0, _("All Packages")) self.packageGroupStore.set_value(allpkg, 1, "allpkgs") # go through and make parent nodes for all of the groups for key in keys: fields = string.split(key, '/') main = fields[0] if len(fields) > 1: subgroup = fields[1] if toplevels.has_key(main): continue iter = self.packageGroupStore.append(allpkg) self.packageGroupStore.set_value(iter, 0, main) self.packageGroupStore.set_value(iter, 1, main) toplevels[main] = iter # now make the children for key in keys: fields = string.split(key, '/') main = fields[0] if len(fields) > 1: subgroup = fields[1] else: continue if not toplevels.has_key(main): raise RuntimeError, "Got unexpected key building tree" parent = toplevels[main] iter = self.packageGroupStore.append(parent) self.packageGroupStore.set_value(iter, 0, subgroup) self.packageGroupStore.set_value(iter, 1, "%s/%s" % (main, subgroup)) def add_packages(self, packages): """Adds the packages provided (list of headers) to the package list""" SHOW_WATCH_MIN = 200 if len(packages) > SHOW_WATCH_MIN: cw = self.ics.getICW() cw.busyCursorPush() for header in packages: name = header[rpm.RPMTAG_NAME] size = header[rpm.RPMTAG_SIZE] # get size in MB size = size / (1024 * 1024) # don't show as < 1 MB if size < 1: size = 1 self.packageList.append_row((name, size), header.isSelected()) ### XXX Hack to get around fact treeview doesn't seem to resort ### when data is store is changed. By jostling it we can make it self.packageList.store.set_sort_column_id(self.sort_id, not self.sort_order) self.packageList.store.set_sort_column_id(self.sort_id, self.sort_order) if len(packages) > SHOW_WATCH_MIN: cw.busyCursorPop() def select_group(self, selection): (model, iter) = selection.get_selected() if iter: currentGroup = model.get_value(iter, 1) self.packageList.clear() if not self.flat_groups.has_key(currentGroup): self.selectAllButton.set_sensitive(gtk.FALSE) self.unselectAllButton.set_sensitive(gtk.FALSE) return self.selectAllButton.set_sensitive(gtk.TRUE) self.unselectAllButton.set_sensitive(gtk.TRUE) packages = self.flat_groups[currentGroup] self.add_packages(packages) def toggled_package(self, data, row): row = int(row) package = self.packageList.get_text(row, 1) if not self.pkgs.has_key(package): raise RuntimeError, "Toggled a non-existent package %s" % (package) val = self.packageList.get_active(row) if val: self.pkgs[package].select() else: self.pkgs[package].unselect() self.updateSize() # if they hit space bar stop that event from happening self.ignoreKeypress = (package, val) def select_package(self, selection): (model, iter) = selection.get_selected() if iter: package = model.get_value(iter, 1) if not self.pkgs.has_key(package): raise RuntimeError, "Selected a non-existent package %s" % (package) buffer = self.packageDesc.get_buffer() description = self.get_rpm_desc(self.pkgs[package]) try: version = self.pkgs[package][rpm.RPMTAG_VERSION] except: version = None if version: outtext = _("Package: %s\nVersion: %s\n") % (package, version ) + description else: outtext =description buffer.set_text(outtext) else: buffer = self.packageDesc.get_buffer() buffer.set_text("") def get_rpm_desc (self, header): desc = replace (header[rpm.RPMTAG_DESCRIPTION], "\n\n", "\x00") desc = replace (desc, "\n", " ") desc = replace (desc, "&", "&") desc = replace (desc, "\x00", "\n\n") return desc def make_group_list(self, grpset, displayBase = 0): """Go through all of the headers and get group names, placing packages in the dictionary. Also have in the upper level group""" groups = {} # special group for listing all of the packages (aka old flat view) groups["allpkgs"] = [] for key in grpset.hdrlist.pkgs.keys(): header = grpset.hdrlist.pkgs[key] group = header[rpm.RPMTAG_GROUP] hier = string.split(group, '/') toplevel = hier[0] # make sure the dictionary item exists for group and toplevel # note that if group already exists, toplevel must also exist if not groups.has_key (group): groups[group] = [] if not groups.has_key(toplevel): groups[toplevel] = [] # don't display package if it is in the Base group if not grpset.groups["core"].includesPackage(header) or displayBase: groups[group].append(header) if len(hier) > 1: groups[toplevel].append(header) groups["allpkgs"].append(header) return groups def select_all (self, rownum, select_all): for row in range(self.packageList.num_rows): package = self.packageList.get_text(row, 1) if not self.pkgs.has_key(package): raise RuntimeError, "Attempt to toggle non-existent package" if select_all: self.pkgs[package].select() else: self.pkgs[package].unselect() self.packageList.set_active(row, select_all) self.updateSize() def updateSize(self): text = _("Total install size: %s") % (self.grpset.sizeStr(),) self.totalSizeLabel.set_text(text) # FIXME -- if this is kept instead of the All Packages in the tree # it needs to properly handle keeping the tree expanded to the same # state as opposed to having it default back to collapsed and no # selection; I personally like the All Packages in the tree better # but that seems to look weird with gtk 1.3.11 def changePkgView(self, widget): if self.treeRadio.get_active(): packages = [] self.packageTreeView.set_model(self.packageGroupStore) self.packageTreeView.expand_all() else: # cache the full package list if not self.allPkgs: self.allPkgs = [] for pkg in self.pkgs.values(): if not self.grpset.groups["core"].includesPackage(pkg): self.allPkgs.append(pkg) packages = self.allPkgs self.packageTreeView.set_model(gtk.ListStore(gobject.TYPE_STRING)) self.packageList.clear() self.add_packages(packages) ### XXX Hack to get around fact treeview doesn't seem to resort ### Have to keep up with sort state when user changes it def colClickedCB(self, widget, val): self.sort_id = widget.get_sort_column_id() self.sort_order = widget.get_sort_order() def keypressCB(self, widget, val): if val.keyval == gtk.keysyms.space: selection = self.packageList.get_selection() (model, iter) = selection.get_selected() if iter: self.select_package(selection) package = self.packageList.store.get_value(iter, 1) val = self.packageList.store.get_value(iter, 0) # see if we just got this because of focus being on # checkbox toggle and they hit space bar if self.ignoreKeypress: if (package, val) == self.ignoreKeypress: self.ignoreKeypress = None return gtk.TRUE else: # didnt match for some reason, lets plow ahead self.ignoreKeypress = None self.packageList.store.set_value(iter, 0, not val) if not val: self.pkgs[package].select() else: self.pkgs[package].unselect() self.updateSize() return gtk.TRUE return gtk.FALSE # IndividualPackageSelectionWindow tag="sel-indiv" def getScreen (self, grpset): self.grpset = grpset self.pkgs = self.grpset.hdrlist self.allPkgs = None self.packageTreeView = gtk.TreeView() renderer = gtk.CellRendererText() column = gtk.TreeViewColumn('Groups', renderer, text=0) column.set_clickable(gtk.TRUE) self.packageTreeView.append_column(column) self.packageTreeView.set_headers_visible(gtk.FALSE) self.packageTreeView.set_rules_hint(gtk.FALSE) self.packageTreeView.set_enable_search(gtk.FALSE) self.flat_groups = self.make_group_list(grpset) self.build_packagelists(self.flat_groups) selection = self.packageTreeView.get_selection() selection.connect("changed", self.select_group) self.packageTreeView.set_model(self.packageGroupStore) self.packageTreeView.expand_all() self.sw = gtk.ScrolledWindow () self.sw.set_policy (gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) self.sw.set_shadow_type(gtk.SHADOW_IN) self.sw.add(self.packageTreeView) packageHBox = gtk.HBox() self.leftVBox = gtk.VBox(gtk.FALSE) # FIXME should these stay or go? # tree/flat radio buttons... optionHBox = gtk.HBox() self.treeRadio = gtk.RadioButton(None, (_("_Tree View"))) self.treeRadio.connect("clicked", self.changePkgView) self.flatRadio = gtk.RadioButton(self.treeRadio, (_("_Flat View"))) optionHBox.pack_start(self.treeRadio) optionHBox.pack_start(self.flatRadio) svwxyz{|}~elf.leftVBox.pack_start(optionHBox, gtk.FALSE) self.leftVBox.pack_start(self.sw, gtk.TRUE) packageHBox.pack_start(self.leftVBox, gtk.FALSE) self.packageList = PackageCheckList(2) self.packageList.checkboxrenderer.connect("toggled", self.toggled_package) self.packageList.set_enable_search(gtk.TRUE) self.sortType = "Package" self.packageList.set_column_title (1, (_("_Package"))) self.packageList.set_column_sizing (1, gtk.TREE_VIEW_COLUMN_GROW_ONLY) self.packageList.set_column_title (2, (_("_Size (MB)"))) self.packageList.set_column_sizing (2, gtk.TREE_VIEW_COLUMN_GROW_ONLY) self.packageList.set_headers_visible(gtk.TRUE) self.packageList.set_column_min_width(0, 16) self.packageList.set_column_clickable(0, gtk.FALSE) self.packageList.set_column_clickable(1, gtk.TRUE) self.packageList.set_column_sort_id(1, 1) self.packageList.set_column_clickable(2, gtk.TRUE) self.packageList.set_column_sort_id(2, 2) sort_id = 1 sort_order = 0 self.packageList.store.set_sort_column_id(sort_id, sort_order) ### XXX Hack to keep up with state of sorting ### Remove when treeview is fixed self.sort_id = sort_id self.sort_order = sort_order col = self.packageList.get_column(1) col.connect("clicked", self.colClickedCB, None) col = self.packageList.get_column(2) col.connect("clicked", self.colClickedCB, None) selection = self.packageList.get_selection() selection.connect("changed", self.select_package) self.packageList.connect("key-release-event", self.keypressCB) self.ignoreKeypress = None self.packageListSW = gtk.ScrolledWindow () self.packageListSW.set_border_width (5) self.packageListSW.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.packageListSW.set_shadow_type(gtk.SHADOW_IN) self.packageListSW.add(self.packageList) self.packageListVAdj = self.packageListSW.get_vadjustment () self.packageListSW.set_vadjustment(self.packageListVAdj) self.packageListHAdj = self.packageListSW.get_hadjustment () self.packageListSW.set_hadjustment(self.packageListHAdj) packageHBox.pack_start (self.packageListSW) descVBox = gtk.VBox () descVBox.pack_start (gtk.HSeparator (), gtk.FALSE, padding=2) hbox = gtk.HBox () bb = gtk.HButtonBox () bb.set_layout (gtk.BUTTONBOX_END) self.totalSizeLabel = gtk.Label (_("Total size: ")) hbox.pack_start (self.totalSizeLabel, gtk.FALSE, gtk.FALSE, 0) self.selectAllButton = gtk.Button (_("Select _all in group")) bb.pack_start (self.selectAllButton, gtk.FALSE) self.selectAllButton.connect ('clicked', self.select_all, 1) self.unselectAllButton = gtk.Button(_("_Unselect all in group")) bb.pack_start(self.unselectAllButton, gtk.FALSE) self.unselectAllButton.connect ('clicked', self.select_all, 0) hbox.pack_start (bb) self.selectAllButton.set_sensitive (gtk.FALSE) self.unselectAllButton.set_sensitive (gtk.FALSE) descVBox.pack_start (hbox, gtk.FALSE) descSW = gtk.ScrolledWindow () descSW.set_border_width (5) descSW.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) descSW.set_shadow_type(gtk.SHADOW_IN) self.packageDesc = gtk.TextView() buffer = gtk.TextBuffer(None) self.packageDesc.set_buffer(buffer) self.packageDesc.set_editable(gtk.FALSE) self.packageDesc.set_cursor_visible(gtk.FALSE) self.packageDesc.set_wrap_mode(gtk.WRAP_WORD) descSW.add (self.packageDesc) descSW.set_size_request (-1, 100) descVBox.pack_start (descSW) vbox = gtk.VBox () vbox.pack_start (packageHBox) vbox.pack_start (descVBox, gtk.FALSE) self.updateSize() return vbox class PackageSelectionWindow (InstallWindow): windowTitle = N_("Package Group Selection") htmlTag = "sel-group" def __init__ (self, ics): InstallWindow.__init__ (self, ics) self.ics = ics self.ics.setNextEnabled (1) self.files_found = "gtk.FALSE" def getPrev (self): self.grpset.setSelectionState(self.origSelection) def getNext (self): if self.individualPackages.get_active(): self.dispatch.skipStep("indivpackage", skip = 0) else: self.dispatch.skipStep("indivpackage") # jsut to be sure if we come back self.savedStateDict = {} self.savedStateFlag = 0 return None def setSize(self): self.sizelabel.set_text (_("Total install size: %s") % self.grpset.sizeStr()) # given a value, set all components except Everything and Base to # that value. Handles restoring state if it exists def setComponentsSensitive(self, comp, value): tmpval = self.ignoreComponentToggleEvents self.ignoreComponentToggleEvents = 1 for (cb, lbl, al, ebutton, cbox, cbox2, cbcomp) in self.checkButtons: if cbcomp.id == comp.id: continue if value: if cbcomp.id not in ["everything", "base"]: # print "restoring checkbutton for ",cbcomp.name," at state ",self.savedStateDict[cbcomp.name] if self.savedStateFlag and self.savedStateDict[cbcomp.id]: cb.set_active(1) else: cb.set_active(0) else: cb.set_active(0) else: cb.set_active(0) if cb.get_active(): if ebutton: al.add(ebutton) al.show_all() else: if ebutton: if ebutton in al.get_children(): al.remove(ebutton) if lbl: self.setCompCountLabel(cbcomp, lbl) if cbox: cbox.set_sensitive(value) if cbox2: cbox2.set_sensitive(value) self.ignoreComponentToggleEvents = tmpval def componentToggled(self, widget, data): cw = self.ics.getICW() (comp, lbl, count, al, ebutton) = data newstate = widget.get_active() if self.ignoreComponentToggleEvents: return cw.busyCursorPush() # turn on all the comps we selected if newstate: if ebutton: al.add(ebutton) al.show_all() comp.select () else: if ebutton in al.get_children(): al.remove(ebutton) # dont turn off Base, and if we're turning off everything # we need to be sure language support stuff is on if comp.id != "base": comp.unselect () if comp.id == "everything": packages.selectLanguageSupportGroups(self.grpset, self.langSupport) if count: self.setCompCountLabel(comp, count) if comp.id == "everything" or comp.id == "base": self.ignoreComponentToggleEvents = 1 # save state of buttons if they hit everything or minimal # print "entered, savedstateflag = ",self.savedStateFlag if not self.savedStateFlag and newstate: self.savedStateDict = {} self.savedStateFlag = 1 savestate = 1 else: savestate = 0 for c in self.grpset.groups.values(): if c.id in ["everything", "base"]: continue if newstate: sel = c.isSelected(justManual = 1) # print "saving ",c.name," at state ",sel if savestate: self.savedStateDict[c.id] = sel if sel: c.unselect() else: # print "restoring ",c.name," at state ",self.savedStateDict[c.name] if self.savedStateFlag and self.savedStateDict[c.id]: c.select() # turn on lang support if we're minimal and enabling if comp.id == "base" and newstate: packages.selectLanguageSupportGroups(self.grpset, self.langSupport) self.setComponentsSensitive(comp, not newstate) self.ignoreComponentToggleEvents = 0 else: self.savedStateDict = {} self.savedStateFlag = 0 # after all this we need to recompute total size self.setSize() cw.busyCursorPop() def pkgGroupMemberToggled(self, widget, data): (comp, sizeLabel, pkg) = data (ptype, sel) = comp.packageInfo()[pkg] # dont select or unselect if its already in that state if widget.get_active(): if sel not in ON_STATES: comp.selectPackage(pkg) else: log("%s already selected, not selecting!" %(pkg,)) else: if sel in ON_STATES: comp.unselectPackage(pkg) else: log("%s already unselected, not unselecting!" %(pkg,)) if sizeLabel: self.setDetailSizeLabel(comp, sizeLabel) # have to do magic to handle 'Minimal' def setCheckButtonState(self, cb, comp): state = 0 if comp.id != "base": state = comp.isSelected(justManual = 1) cb.set_active (state) else: state = 1 for c in self.grpset.groups.values(): # ignore base and langsupport files pulled in by 'minimal' if c.id == "base" or self.grpset.groups[c.id].langonly is not None: continue if c.isSelected(justManual = 1): state = 0 break cb.set_active (state) return state def getStats(self, comp): # FIXME: metapkgs # allpkgs = comp.packageInfo().keys() + comp.metapackagesFullInfo().keys() allpkgs = comp.packageInfo() if comp.id == "everything": total = len(allpkgs.keys()) if comp.isSelected(justManual = 1): selected = total else: selected = 0 return (selected, total) total = 0 selected = 0 for pkg in allpkgs.values(): total = total + 1 (ptype, sel) = pkg if sel in ON_STATES: selected = selected + 1 return (selected, total) def setDetailSizeLabel(self, comp, sizeLabel): text = _("Total install size: %s") % (self.grpset.sizeStr(),) sizeLabel.set_text(text) def setCompLabel(self, comp, label): if comp.id == "base": nm = _("Minimal") else: nm = comp.name label.set_markup("%s" % (nm,)) def setCompCountLabel(self, comp, label): (selpkg, totpkg) = self.getStats(comp) if not comp.isSelected(justManual = 1): selpkg = 0 if comp.id == "everything" or comp.id == "base": txt = "" else: txt = "[%d/%d]" % (selpkg, totpkg) label.set_markup(txt) def editDetails(self, button, data): # do all magic for packages and metapackages def getDescription(obj, comp): if self.grpset.hdrlist.pkgs.has_key(obj): obj = self.grpset.hdrlist.pkgs[obj] elif self.grpset.groups.has_key(obj): obj = self.grpset.groups[obj] basedesc = obj.getDescription() if basedesc is not None: desc = replace (basedesc, "\n\n", "\x00") desc = replace (desc, "\n", " ") desc = replace (desc, "\x00", "\n\n") else: desc = "" return "%s - %s" % (obj.name, desc) # pull out member sorted by name def getNextMember(goodpkgs, comp, domandatory = 0): curpkg = None for pkg in goodpkgs: if domandatory: (ptype, sel) = comp.packageInfo()[pkg] if ptype != PKGTYPE_MANDATORY: continue foundone = 1 if curpkg is not None: if pkg < curpkg: curpkg = pkg else: curpkg = pkg return curpkg # # START OF editDetails # # backup state (comp, hdrlbl, countlbl, compcb) = data origpkgselection = {} for (pkg, val) in comp.packageInfo().items(): origpkgselection[pkg] = val self.dialog = gtk.Dialog(_("Details for '%s'") % (comp.name,)) gui.addFrame(self.dialog) self.dialog.add_button('gtk-cancel', 2) self.dialog.add_button('gtk-ok', 1) self.dialog.set_position(gtk.WIN_POS_CENTER) mainvbox = self.dialog.vbox lblhbox = gtk.HBox(gtk.FALSE) lbl = gtk.Label(_("A package group can have both Base and " "Optional package members. Base packages " "are always selected as long as the package group " "is selected.\n\nSelect the optional packages " "to be installed:")) lbl.set_line_wrap(gtk.TRUE) lbl.set_size_request(475, -1) lbl.set_alignment(0.0, 0.5) lblhbox.pack_start(lbl, gtk.TRUE, gtk.TRUE) fn = self.ics.findPixmap("package-selection.png") if not fn: pix = None else: rawpix = gtk.gdk.pixbuf_new_from_file(fn) pix = gtk.Image() pix.set_from_pixbuf(rawpix) if pix is not None: al = gtk.Alignment(0.0, 0.0) al.add(pix) lblhbox.pack_start(al, gtk.FALSE, gtk.FALSE) mainvbox.pack_start(lblhbox, gtk.FALSE, gtk.FALSE) cbvbox = gtk.VBox(gtk.FALSE) cbvbox.set_border_width(5) # will pack this last, need to create it for toggle callback below sizeLabel = gtk.Label("") self.setDetailSizeLabel(comp, sizeLabel) goodpkgs = comp.packageInfo().keys() # FIXME # goodpkgs = comp.packagesFullInfo().keys() + comp.metapackagesFullInfo().keys() # first show default members, if any haveBase = 0 next = getNextMember(goodpkgs, comp, domandatory = 1) if next is not None: haveBase = 1 lbl = gtk.Label("") lbl.set_markup("%s" % (_("Base Packages"),)) lbl.set_alignment(0.0, 0.0) cbvbox.pack_start(lbl, gtk.FALSE, gtk.FALSE); while 1: next = getNextMember(goodpkgs, comp, domandatory = 1) if next is None: break goodpkgs.remove(next) desc = getDescription(next, comp) lbl = gtk.Label(desc) lbl.set_alignment(0.0, 0.0) lbl.set_property("use-underline", gtk.FALSE) thbox = gtk.HBox(gtk.FALSE) chbox = gtk.HBox(gtk.FALSE) chbox.set_size_request(10,-1) thbox.pack_start(chbox, gtk.FALSE, gtk.FALSE) thbox.pack_start(lbl, gtk.TRUE, gtk.TRUE) cbvbox.pack_start(thbox, gtk.FALSE, gtk.FALSE) # now the optional parts, if any next = getNextMember(goodpkgs, comp, domandatory = 0) if next is not None: spacer = gtk.Fixed() spacer.set_size_request(-1, 10) cbvbox.pack_start(spacer, gtk.FALSE, gtk.FALSE) lbl = gtk.Label("") lbl.set_markup("%s" % (_("Optional Packages"),)) lbl.set_alignment(0.0, 0.0) cbvbox.pack_start(lbl, gtk.FALSE, gtk.FALSE) while 1: next = getNextMember(goodpkgs, comp, domandatory = 0) if next is None: break goodpkgs.remove(next) desc = getDescription(next, comp) lbl = gtk.Label(desc) lbl.set_alignment(0.0, 0.0) lbl.set_property("use-underline", gtk.FALSE) cb = gtk.CheckButton() cb.add(lbl) (ptype, sel) = comp.packageInfo()[next] cb.set_active((sel in ON_STATES)) cb.connect("toggled", self.pkgGroupMemberToggled, (comp, sizeLabel, next)) thbox = gtk.HBox(gtk.FALSE) chbox = gtk.HBox(gtk.FALSE) chbox.set_size_request(10,-1) thbox.pack_start(chbox, gtk.FALSE, gtk.FALSE) thbox.pack_start(cb, gtk.TRUE, gtk.TRUE) cbvbox.pack_start(thbox, gtk.FALSE, gtk.FALSE) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) wrapper = gtk.VBox (gtk.FALSE, 0) wrapper.pack_start (cbvbox, gtk.FALSE) sw.add_with_viewport (wrapper) viewport = sw.get_children()[0] viewport.set_shadow_type (gtk.SHADOW_IN) viewport.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse ("white")) cbvbox.set_focus_hadjustment(sw.get_hadjustment ()) cbvbox.set_focus_vadjustment(sw.get_vadjustment ()) mainvbox.pack_start(sw, gtk.TRUE, gtk.TRUE, 10) mainvbox.pack_start(sizeLabel, gtk.FALSE, gtk.FALSE) self.dialog.set_size_request(550, 420) self.dialog.show_all() while 1: rc = self.dialog.run() # they hit cancel, restore original state and quit if rc == 2: allpkgs = comp.packageInfo().keys() for pkg in allpkgs: (ptype, sel) = comp.packageInfo()[pkg] (optype, osel) = origpkgselection[pkg] if (osel == sel): pass elif (osel not in OFF_STATES) and (sel not in ON_STATES): comp.selectPackage(pkg) elif (osel not in ON_STATES) and (sel not in OFF_STATES): comp.unselectPackage(pkg) break self.dialog.destroy() self.setSize() if countlbl: self.setCompCountLabel(comp, countlbl) (selpkg, totpkg) = self.getStats(comp) if selpkg < 1: if compcb: compcb.set_active(0) return def focusIdleHandler(self, data): if not self.needToFocus: return if self.scrolledWindow is None: return vadj = self.scrolledWindow.get_vadjustment() swmin = vadj.lower swmax = vadj.upper pagesize = vadj.page_size curval = vadj.get_value() self.scrolledWindow.get_vadjustment().set_value(swmax-pagesize) if self.idleid is not None: gtk.idle_remove(self.idleid) self.idleid = None self.needToFocus = 0 def getScreen(self, grpset, langSupport, instClass, dispatch): # PackageSelectionWindow tag="sel-group" ICON_SIZE = 32 self.grpset = grpset self.langSupport = langSupport self.dispatch = dispatch self.origSelection = self.grpset.getSelectionState() self.checkButtons = [] # used to save buttons state if they hit everything or minimal self.savedStateDict = {} self.savedStateFlag = 0 self.ignoreComponentToggleEvents = 0 (parlist, pardict) = orderPackageGroups(self.grpset) topbox = gtk.VBox(gtk.FALSE, 3) topbox.set_border_width(3) checkGroup = gtk.SizeGroup(gtk.SIZE_GROUP_BOTH) countGroup = gtk.SizeGroup(gtk.SIZE_GROUP_BOTH) detailGroup = gtk.SizeGroup(gtk.SIZE_GROUP_BOTH) minimalActive = 0 minimalComp = None minimalCB = None everythingActive = 0 everythingComp = None everythingCB = None for par in parlist: # don't show the top-level if there aren't any groups in it if len(pardict[par]) == 0: continue # set the background to our selection color eventBox = gtk.EventBox() eventBox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#727fb2")) lbl = gtk.Label("") lbl.set_markup("" "%s" % (par,)) lbl.set_alignment(0.0, 0.0) pad = gtk.Alignment(0.0, 0.0) pad.add(lbl) pad.set_border_width(3) eventBox.add(pad) topbox.pack_start(eventBox) for comp in pardict[par]: #CJS checked to see if it was the everything group and just skiped it if comp.id == "everything": continue #CJS end of add, this is for SLF only if comp.hidden: if comp.id != "base": continue else: if not instClass.showMinimal: continue pixname = string.lower(comp.id) + ".png" fn = self.ics.findPixmap("comps/"+pixname) if not fn: log("could not load pix: %s " %(pixname,)) pix = None else: rawpix = gtk.gdk.pixbuf_new_from_file(fn) sclpix = rawpix.scale_simple(ICON_SIZE, ICON_SIZE, gtk.gdk.INTERP_BILINEAR) pix = gtk.Image() pix.set_from_pixbuf(sclpix) compbox = gtk.HBox(gtk.FALSE, 5) spacer = gtk.Fixed() spacer.set_size_request(30, -1) compbox.pack_start(spacer, gtk.FALSE, gtk.FALSE) # create check button and edit button # make the comps title + edit button hdrlabel=gtk.Label("") hdrlabel.set_alignment (0.0, 0.5) self.setCompLabel(comp, hdrlabel) checkButton = gtk.CheckButton() checkButton.add(hdrlabel) checkGroup.add_widget(checkButton) compbox.pack_start(checkButton) count=gtk.Label("") count.set_alignment (1.0, 0.5) self.setCompCountLabel(comp, count) countGroup.add_widget(count) compbox.pack_start(count, gtk.FALSE, gtk.FALSE) spacer = gtk.Fixed() spacer.set_size_request(15, -1) compbox.pack_start(spacer, gtk.FALSE, gtk.FALSE) buttonal = gtk.Alignment(0.5, 0.5) detailGroup.add_widget(buttonal) compbox.pack_start(buttonal, gtk.FALSE, gtk.FALSE) # now make the url looking button for details if comp.id != "everything" and comp.id != "base": nlbl = gtk.Label("") selected = comp.isSelected(justManual = 1) nlbl.set_markup('' '%s' % (_('Details'),)) editbutton = gtk.Button() editbutton.add(nlbl) editbutton.set_relief(gtk.RELIEF_NONE) editbutton.connect("clicked", self.editDetails, (comp, hdrlabel, count, checkButton)) if comp.isSelected(justManual = 1): buttonal.add(editbutton) else: editbutton = None topbox.pack_start(compbox) detailbox = gtk.HBox(gtk.FALSE) spacer = gtk.Fixed() spacer.set_size_request(45, -1) detailbox.pack_start(spacer, gtk.FALSE, gtk.FALSE) # icon if pix is not None: al = gtk.Alignment(0.5, 0.5) al.add(pix) detailbox.pack_start(al, gtk.FALSE, gtk.FALSE, 10) # add description if it exists descr = getGroupDescription(comp) if descr is not None: label=gtk.Label("") label.set_alignment (0.0, 0.0) label.set_line_wrap(gtk.TRUE) if gtk.gdk.screen_width() > 640: wraplen = 350 else: wraplen = 250 label.set_size_request(wraplen, -1) label.set_markup("%s" % (_(descr),)) detailbox.pack_start(label, gtk.TRUE) topbox.pack_start(detailbox) state = self.setCheckButtonState(checkButton, comp) if comp.id == "base": minimalActive = state minimalComp = comp minimalCB = checkButton elif comp.id == "everything": everythingActive = state everythingComp = comp everythingCB = checkButton checkButton.connect('toggled', self.componentToggled, (comp, hdrlabel, count, buttonal, editbutton)) self.checkButtons.append ((checkButton, count, buttonal, editbutton, compbox, detailbox, comp)) # add some extra space to the end of each group spacer = gtk.Fixed() spacer.set_size_request(-1, 3) topbox.pack_start(spacer, gtk.FALSE, gtk.FALSE) # hack to make everything and minimal act right sw = gtk.ScrolledWindow() sw.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) viewport = gtk.Viewport(sw.get_hadjustment(), sw.get_vadjustment()) sw.add(viewport) viewport.add(topbox) viewport.set_property('shadow-type', gtk.SHADOW_IN) viewport.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("white")) topbox.set_focus_hadjustment(sw.get_hadjustment()) topbox.set_focus_vadjustment(sw.get_vadjustment()) # save so we can scrfoll if needed self.scrolledWindow = sw self.needToFocus = 0 # if special case we do things a little differently if minimalActive: self.setComponentsSensitive(minimalComp, 0) sw.set_focus_child(minimalCB) self.needToFocus = 1 elif everythingActive: self.setComponentsSensitive(everythingComp, 0) sw.set_focus_child(everythingCB) self.needToFocus = 1 if self.needToFocus: self.idleid = gtk.idle_add(self.focusIdleHandler, None) # pack rest of screen hbox = gtk.HBox (gtk.FALSE, 5) self.individualPackages = gtk.CheckButton ( _("_Select individual packages")) self.individualPackages.set_active ( not dispatch.stepInSkipList("indivpackage")) # hbox.pack_start (self.individualPackages, gtk.FALSE) self.sizelabel = gtk.Label ("") self.setSize() hbox.pack_start (self.sizelabel, gtk.TRUE) vbox = gtk.VBox (gtk.FALSE, 5) vbox.pack_start (sw, gtk.TRUE) vbox.pack_start (hbox, gtk.FALSE) vbox.set_border_width (5) return vbox class PackageCheckList(checklist.CheckList): def create_columns(self, columns): renderer = gtk.CellRendererText() column = gtk.TreeViewColumn('Text', renderer, text = 1) column.set_clickable(gtk.FALSE) self.append_column(column) renderer = gtk.CellRendererText() column = gtk.TreeViewColumn('Size', renderer, text = 2) column.set_clickable(gtk.FALSE) self.append_column(column) def __init__(self, columns = 2): store = gtk.TreeStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_INT) checklist.CheckList.__init__(self, columns=columns, custom_store = store) # # packages.py: package management - mainly package installation # # Erik Troan # Matt Wilson # Michael Fulbright # Jeremy Katz # # Copyright 2001-2003 Red Hat, Inc. # # This software may be freely redistributed under the terms of the GNU # library public license. # # You should have received a copy of the GNU Library Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # import iutil import isys import rpm import os import timer import time import sys import string import pcmcia import language import fsset import kudzu from flags import flags from product import * from constants import * from syslogd import syslog from hdrlist import PKGTYPE_MANDATORY, PKGTYPE_DEFAULT, DependencyChecker from installmethod import FileCopyException from rhpl.log import log from rhpl.translate import _ import rhpl.arch def queryUpgradeContinue(intf, dir): if dir == DISPATCH_FORWARD: return rc = intf.messageWindow(_("Proceed with upgrade?"), _("The file systems of the Linux installation " "you have chosen to upgrade have already been " "mounted. You cannot go back past this point. " "\n\n") + _( "Would you like to continue with the upgrade?"), type = "yesno") if rc == 0: sys.exit(0) return DISPATCH_FORWARD def doPostAction(id, instPath): id.instClass.postAction(instPath, flags.serial) def firstbootConfiguration(id, instPath): if id.firstboot == FIRSTBOOT_RECONFIG: f = open(instPath + '/etc/reconfigSys', 'w+') f.close() elif id.firstboot == FIRSTBOOT_SKIP: f = open(instPath + '/etc/sysconfig/firstboot', 'w+') f.write('RUN_FIRSTBOOT=NO') f.close() return def writeConfiguration(id, instPath): log("Writing main configuration") if not flags.test: id.write(instPath) def writeKSConfiguration(id, instPath): log("Writing autokickstart file") if not flags.test: fn = instPath + "/root/anaconda-ks.cfg" else: fn = "/tmp/anaconda-ks.cfg" id.writeKS(fn) def copyAnacondaLogs(instPath): log("Copying anaconda logs") for (fn, dest) in (("/tmp/anaconda.log", "anaconda.log"), ("/tmp/syslog", "anaconda.syslog"), ("/tmp/ramfs/X.log", "anaconda.xlog")): if os.access(fn, os.R_OK): try: iutil.copyFile(fn, "%s/var/log/%s" %(instPath, dest)) os.chmod("%s/var/log/%s" %(instPath, dest), 0600) except: pass def writeXConfiguration(id, instPath): testmode = flags.test # comment out to test if testmode: return # end code to comment to test # uncomment to test writing X config in test mode # try: # os.mkdir("/tmp/etc") # except: # pass # try: # os.mkdir("/tmp/etc/X11") # except: # pass # instPath = '/' # end code for test writing if id.xsetup.skipx: return xserver = id.videocard.primaryCard().getXServer() if not xserver: return log("Writing X configuration") if not testmode: fn = instPath if os.access (instPath + "/etc/X11/X", os.R_OK): os.rename (instPath + "/etc/X11/X", instPath + "/etc/X11/X.rpmsave") try: os.unlink (instPath + "/etc/X11/X") except OSError: pass os.symlink ("../../usr/X11R6/bin/" + xserver, instPath + "/etc/X11/X") else: fn = "/tmp/" id.xsetup.write(fn+"/etc/X11", id.mouse, id.keyboard) id.desktop.write(instPath) def readPackages(intf, method, id): if id.grpset: grpset = id.grpset hdrlist = id.grpset.hdrlist doselect = 0 else: grpset = None hdrlist = None doselect = 1 while hdrlist is None: w = intf.waitWindow(_("Reading"), _("Reading package information...")) try: hdrlist = method.readHeaders() except FileCopyException: w.pop() method.unmountCD() intf.messageWindow(_("Error"), _("Unable to read header list. This may be " "due to a missing file or bad media. " "Press to try again.")) continue w.pop() while grpset is None: try: grpset = method.readComps(hdrlist) except FileCopyException: method.unmountCD() intf.messageWindow(_("Error"), _("Unable to read comps file. This may be " "due to a missing file or bad media. " "Press to try again.")) continue # people make bad tree copies all the time. let's just mandate that # the Core group has to exist in the comps file else we complain if not grpset.groups.has_key("core"): intf.messageWindow(_("Error"), _("The comps file in your installation tree is " "missing critical groups. Please ensure that " "your install tree has been correctly " "generated."), type="custom", custom_icon="error", custom_buttons=[_("_Exit")]) sys.exit(0) while iutil.getArch() == "ia64": try: method.mergeFullHeaders(hdrlist) break except FileCopyException: method.unmountCD() intf.messageWindow(_("Error"), _("Unable to merge header list. This may be " "due to a missing file or bad media. " "Press to try again.")) # this is a crappy hack, but I don't want bug reports from these people if (iutil.getArch() == "i386") and (not grpset.hdrlist.has_key("kernel")): intf.messageWindow(_("Error"), _("You are trying to install on a machine " "which isn't supported by this release of " "%s.") %(productName,), type="custom", custom_icon="error", custom_buttons=[_("_Exit")]) sys.exit(0) id.grpset = grpset if doselect: id.instClass.setGroupSelection(grpset, intf) id.instClass.setPackageSelection(hdrlist, intf) def handleX11Packages(dir, intf, disp, id, instPath): if dir == DISPATCH_BACK: return # skip X setup if it is not being installed # # uncomment this block if you want X configuration to be presented # # START BLOCK # if (not id.grpset.hdrlist.has_key('XFree86') or # not id.grpset.hdrlist['XFree86'].isSelected()): # disp.skipStep("videocard") # disp.skipStep("monitor") # disp.skipStep("xcustom") # disp.skipStep("writexconfig") # id.xsetup.skipx = 1 # elif disp.stepInSkipList("videocard"): # # if X is being installed, but videocard step skipped # # need to turn it back on # disp.skipStep("videocard", skip=0) # disp.skipStep("monitor", skip=0) # disp.skipStep("xcustom", skip=0) # disp.skipStep("writexconfig", skip=0) # id.xsetup.skipx = 0 # END BLOCK # set default runlevel based on packages gnomeSelected = (id.grpset.hdrlist.has_key('gnome-session') and id.grpset.hdrlist['gnome-session'].isSelected()) gdmSelected = (id.grpset.hdrlist.has_key('gdm') and id.grpset.hdrlist['gdm'].isSelected()) kdeSelected = (id.grpset.hdrlist.has_key('kdebase') and id.grpset.hdrlist['kdebase'].isSelected()) xinstalled = ((id.grpset.hdrlist.has_key('xorg-x11') and id.grpset.hdrlist['xorg-x11'].isSelected()) or (id.grpset.hdrlist.has_key('XFree86') and id.grpset.hdrlist['XFree86'].isSelected())) if gnomeSelected: id.desktop.setDefaultDesktop("GNOME") elif kdeSelected: id.desktop.setDefaultDesktop("KDE") if (gdmSelected or kdeSelected) and (xinstalled) and (not flags.serial) and (not flags.virtpconsole): id.desktop.setDefaultRunLevel(5) else: id.desktop.setDefaultRunLevel(3) # verifies that monitor is not Unprobed, and if so we can skip monitor question def checkMonitorOK(monitor, dispatch): rc = 0 if monitor is not None: if monitor.getMonitorID() != "Unprobed Monitor": rc = 1 dispatch.skipStep("monitor", skip=rc) # sets a reasonable default for X settings. def setSaneXSettings(xsetup): if xsetup is not None and xsetup.xhwstate is not None: if not xsetup.imposed_sane_default: # XXX HACK see if we have a user specified LCD display import re regx = re.compile("LCD Panel .*x.*") monid = xsetup.xhwstate.monitor.getMonitorID() lcdres = None if regx.match(monid): for testres in ["640x480", "800x600", "1024x480", "1024x768", "1280x960", "1280x1024", "1400x1050", "1600x1200"]: if string.find(monid, testres) != -1: lcdres = testres break if lcdres is not None: xsetup.xhwstate.set_resolution(lcdres) else: xsetup.xhwstate.choose_sane_default() xsetup.imposed_sane_default = 1 def getAnacondaTS(instPath = None): if instPath: ts = rpm.TransactionSet(instPath) else: ts = rpm.TransactionSet() ts.setVSFlags(~(rpm.RPMVSF_NORSA|rpm.RPMVSF_NODSA)) ts.setFlags(rpm.RPMTRANS_FLAG_ANACONDA) # set color if needed. FIXME: why isn't this the default :/ if (rhpl.arch.canonArch.startswith("ppc64") or rhpl.arch.canonArch in ("s390x", "sparc64", "x86_64", "ia64")): ts.setColor(3) return ts def checkDependencies(dir, intf, disp, id, instPath): if dir == DISPATCH_BACK: return win = intf.waitWindow(_("Dependency Check"), _("Checking dependencies in packages selected for installation...")) # FIXME: we really don't need to build up a ts more than once # granted, this is better than before still if id.upgrade.get(): ts = getAnacondaTS(instPath) how = "u" else: ts = getAnacondaTS() how = "i" # set the rpm log file to /dev/null so that we don't segfault f = open("/dev/null", "w+") rpm.setLogFile(f) ts.scriptFd = f.fileno() for p in id.grpset.hdrlist.pkgs.values(): if p.isSelected(): ts.addInstall(p.hdr, p.hdr, how) depcheck = DependencyChecker(id.grpset, how) id.dependencies = ts.check(depcheck.callback) win.pop() if depcheck.added and id.handleDeps == CHECK_DEPS: disp.skipStep("dependencies", skip = 0) log("had unresolved dependencies, resolved.") disp.skipStep("dependencies") else: disp.skipStep("dependencies") return # FIXME: I BROKE IT # this is kind of hackish, but makes kickstart happy if id.handleDeps == CHECK_DEPS: pass elif id.handleDeps == IGNORE_DEPS: id.comps.selectDepCause(id.dependencies) id.comps.unselectDeps(id.dependencies) elif id.handleDeps == RESOLVE_DEPS: id.comps.selectDepCause(id.dependencies) id.comps.selectDeps(id.dependencies) class InstallCallback: def packageDownloadCB(self, state, amount): self.progress.setPackageStatus(state, amount) def cb(self, what, amount, total, h, (param)): # first time here means we should pop the window telling # user to wait until we get here if not self.beenCalled: self.beenCalled = 1 self.initWindow.pop() if (what == rpm.RPMCALLBACK_TRANS_START): # step 6 is the bulk of the transaction set # processing time if amount == 6: self.progressWindow = \ self.progressWindowClass (_("Processing"), _("Preparing to install..."), total) try: self.incr = total / 10 except: pass if (what == rpm.RPMCALLBACK_TRANS_PROGRESS): if self.progressWindow and amount > self.lastprogress + self.incr: self.progressWindow.set (amount) self.lastprogress = amount if (what == rpm.RPMCALLBACK_TRANS_STOP and self.progressWindow): self.progressWindow.pop () if (what == rpm.RPMCALLBACK_INST_OPEN_FILE): # We don't want to start the timer until we get to the first # file. self.pkgTimer.start() self.progress.setPackage(h) self.progress.setPackageScale(0, 1) self.instLog.write (self.modeText % (h[rpm.RPMTAG_NAME], h[rpm.RPMTAG_VERSION], h[rpm.RPMTAG_RELEASE], h[rpm.RPMTAG_ARCH])) self.instLog.flush () self.rpmFD = -1 self.size = h[rpm.RPMTAG_SIZE] while self.rpmFD < 0: try: fn = self.method.getRPMFilename(h, self.pkgTimer, callback=self.packageDownloadCB) self.rpmFD = os.open(fn, os.O_RDONLY) # Make sure this package seems valid try: hdr = self.ts.hdrFromFdno(self.rpmFD) os.lseek(self.rpmFD, 0, 0) # if we don't have a valid package, throw an error if not hdr: raise SystemError except: try: os.close(self.rpmFD) except: pass self.rpmFD = -1 raise FileCopyException except Exception, e: log("exception was %s for %s-%s-%s" %(e, h['name'], h['version'], h['release'])) self.method.unmountCD() self.messageWindow(_("Error"), _("The package %s-%s-%s cannot be opened. This is due " "to a missing file or perhaps a corrupt package. " "If you are installing from CD media this usually " "means the CD media is corrupt, or the CD drive is " "unable to read the media.\n\n" "Press to try again.") % (h['name'], h['version'], h['release'])) self.progress.setPackageStatus(_("Installing..."), None) fn = self.method.unlinkFilename(fn) return self.rpmFD elif (what == rpm.RPMCALLBACK_INST_PROGRESS): # RPM returns strange values sometimes if amount > total: amount = total if not total or total == 0 or total == "0": total = amount self.progress.setPackageScale(amount, total) elif (what == rpm.RPMCALLBACK_INST_CLOSE_FILE): os.close (self.rpmFD) self.progress.completePackage(h, self.pkgTimer) self.progress.processEvents() elif ((what == rpm.RPMCALLBACK_UNPACK_ERROR) or (what == rpm.RPMCALLBACK_CPIO_ERROR)): # we may want to make this error more fine-grained at some # point pkg = "%s-%s-%s" % (h[rpm.RPMTAG_NAME], h[rpm.RPMTAG_VERSION], h[rpm.RPMTAG_RELEASE]) self.messageWindow(_("Error Installing Package"), _("There was an error installing %s. This " "can indicate media failure, lack of disk " "space, and/or hardware problems. This is " "a fatal error and your install will be " "aborted. Please verify your media and try " "your install again.\n\n" "Press the OK button to reboot " "your system.") % (pkg,)) sys.exit(0) else: pass self.progress.processEvents() def __init__(self, messageWindow, progress, pkgTimer, method, progressWindowClass, instLog, modeText, ts): self.messageWindow = messageWindow self.progress = progress self.pkgTimer = pkgTimer self.method = method self.progressWindowClass = progressWindowClass self.progressWindow = None self.lastprogress = 0 self.incr = 20 self.instLog = instLog self.modeText = modeText self.beenCalled = 0 self.initWindow = None self.ts = ts def sortPackages(first, second): # install packages in cd order (cd tag is 1000002) one = None two = None if first[1000003] != None: one = first[1000003] if second[1000003] != None: two = second[1000003] if one == None or two == None: one = 0 two = 0 if first[1000002] != None: one = first[1000002] if second[1000002] != None: two = second[1000002] if one < two: return -1 elif one > two: return 1 elif (string.lower(first[rpm.RPMTAG_NAME]) < string.lower(second[rpm.RPMTAG_NAME])): return -1 elif (string.lower(first[rpm.RPMTAG_NAME]) > string.lower(second[rpm.RPMTAG_NAME])): return 1 return 0 class rpmErrorClass: def cb(self): self.f.write (rpm.errorString () + "\n") def __init__(self, f): self.f = f def doMigrateFilesystems(dir, thefsset, diskset, upgrade, instPath): if dir == DISPATCH_BACK: return DISPATCH_NOOP if thefsset.haveMigratedFilesystems(): return DISPATCH_NOOP thefsset.migrateFilesystems (instPath) # if we're upgrading, we may need to do lvm device node hackery if upgrade.get(): thefsset.makeLVMNodes(instPath, trylvm1 = 1) def turnOnFilesystems(dir, thefsset, diskset, partitions, upgrade, instPath): if dir == DISPATCH_BACK: log("unmounting filesystems") thefsset.umountFilesystems(instPath) return if flags.setupFilesystems: if not upgrade.get(): partitions.doMetaDeletes(diskset) thefsset.setActive(diskset) if not thefsset.isActive(): diskset.savePartitions () thefsset.checkBadblocks(instPath) if not thefsset.volumesCreated: thefsset.createLogicalVolumes(instPath) thefsset.formatSwap(instPath) thefsset.turnOnSwap(instPath) thefsset.makeFilesystems (instPath) thefsset.mountFilesystems (instPath) def setupTimezone(timezone, upgrade, instPath, dir): # we don't need this on an upgrade or going backwards if upgrade.get() or (dir == DISPATCH_BACK): return # dont do this in test mode! if flags.test: return os.environ["TZ"] = timezone.tz tzfile = "/usr/share/zoneinfo/" + timezone.tz if not os.access(tzfile, os.R_OK): log("unable to set timezone") else: try: iutil.copyFile(tzfile, "/etc/localtime") except OSError, (errno, msg): log("Error copying timezone (from %s): %s" %(tzfile, msg)) if iutil.getArch() == "s390": return args = [ "/usr/sbin/hwclock", "--hctosys" ] if timezone.utc: args.append("-u") elif timezone.arc: args.append("-a") try: iutil.execWithRedirect(args[0], args, stdin = None, stdout = "/dev/tty5", stderr = "/dev/tty5") except RuntimeError: log("Failed to set clock") def doPreInstall(method, id, intf, instPath, dir): if dir == DISPATCH_BACK: for d in ("/selinux", "/dev"): try: isys.umount(instPath + d, removeDir = 0) except Exception, e: log("unable to unmount %s: %s" %(d, e)) return arch = iutil.getArch () # this is a crappy hack, but I don't want bug reports from these people if (arch == "i386") and (not id.grpset.hdrlist.has_key("kernel")): intf.messageWindow(_("Error"), _("You are trying to install on a machine " "which isn't supported by this release of " "%s.") %(productName,), type="custom", custom_icon="error", custom_buttons=[_("_Exit")]) sys.exit(0) # shorthand upgrade = id.upgrade.get() def select(hdrlist, name): if hdrlist.has_key(name): hdrlist[name].select(isManual = 1) return 1 return 0 def selected(hdrlist, name): if hdrlist.has_key(name) and hdrlist[name].isSelected(): return 1 return 0 #start if not upgrade: foundkernel = 0 nthreads = isys.acpicpus() if nthreads == 0: # this should probably be table driven or something... ncpus = isys.smpAvailable() or 1 nthreads = isys.htavailable() or 1 ncores = isys.coresavailable() if ncpus == 1: # machines that have one socket nthreads = nthreads; else: # machines with more than one socket nthreads = (int(nthreads / ncores) or 1) * ncpus largesmp_min = -1 if iutil.getArch() == "x86_64": largesmp_min = 8 elif iutil.getArch() == "ppc" and iutil.getPPCMachine() != "iSeries": largesmp_min = 64 elif iutil.getArch() == "ia64": largesmp_min = 64 if largesmp_min > 0 and nthreads > largesmp_min and \ select(id.grpset.hdrlist, "kernel-largesmp"): foundKernel = 1 if selected(id.grpset.hdrlist, "gcc"): select(id.grpset.hdrlist, "kernel-largesmp-devel") elif nthreads > 1: if select(id.grpset.hdrlist, "kernel-smp"): foundkernel = 1 if selected(id.grpset.hdrlist, "gcc"): select(id.grpset.hdrlist, "kernel-smp-devel") ## Hook up our kernel-module-XXX packages - jaroslaw.polok@cern.ch if selected(id.grpset.hdrlist, "kernel-module-openafs-2.6.9-42.0.3.EL"): select(id.grpset.hdrlist, "kernel-module-openafs-2.6.9-42.0.3.ELsmp") if iutil.needsEnterpriseKernel(): if select(id.grpset.hdrlist, "kernel-bigmem"): foundkernel = 1 if isys.summitavailable(): if select(id.grpset.hdrlist, "kernel-summit"): foundkernel = 1 if foundkernel == 0: # we *always* need to have some sort of kernel installed select(id.grpset.hdrlist, 'kernel') if (selected(id.grpset.hdrlist, "gcc") and selected(id.grpset.hdrlist, "kernel")): select(id.grpset.hdrlist, "kernel-devel") #end # if NIS is configured, install ypbind and dependencies: if id.auth.useNIS: select(id.grpset.hdrlist, 'ypbind') select(id.grpset.hdrlist, 'yp-tools') select(id.grpset.hdrlist, 'portmap') if id.auth.useLdap: select(id.grpset.hdrlist, 'nss_ldap') select(id.grpset.hdrlist, 'openldap') select(id.grpset.hdrlist, 'perl') if id.auth.useKrb5: select(id.grpset.hdrlist, 'pam_krb5') select(id.grpset.hdrlist, 'krb5-workstation') select(id.grpset.hdrlist, 'krbafs') select(id.grpset.hdrlist, 'krb5-libs') if id.auth.useSamba: select(id.grpset.hdrlist, 'pam_smb') if iutil.getArch() == "i386" and id.bootloader.useGrubVal == 0: select(id.grpset.hdrlist, 'lilo') elif iutil.getArch() == "i386" and id.bootloader.useGrubVal == 1: select(id.grpset.hdrlist, 'grub') elif iutil.getArch() == "s390": select(id.grpset.hdrlist, 's390utils') elif iutil.getArch() == "ppc": select(id.grpset.hdrlist, 'yaboot') elif iutil.getArch() == "ia64": select(id.grpset.hdrlist, 'elilo') if pcmcia.pcicType(): select(id.grpset.hdrlist, 'pcmcia-cs') for entry in id.fsset.entries: for pkg in entry.fsystem.getNeededPackages(): if select(id.grpset.hdrlist, pkg): log("Needed %s for %s" %(pkg, entry.getMountPoint())) if flags.test: return # make sure that all comps that include other comps are # selected (i.e. - recurse down the selected comps and turn # on the children while 1: try: method.mergeFullHeaders(id.grpset.hdrlist) except FileCopyException: method.unmountCD() intf.messageWindow(_("Error"), _("Unable to merge header list. This may be " "due to a missing file or bad media. " "Press to try again.")) else: break if upgrade: # An old mtab can cause confusion (esp if loop devices are # in it) f = open(instPath + "/etc/mtab", "w+") f.close() # we really started writing modprobe.conf out before things were # all completely ready. so now we need to nuke old modprobe.conf's # if you're upgrading from a 2.4 dist so that we can get the # transition right if (os.path.exists(instPath + "/etc/modules.conf") and os.path.exists(instPath + "/etc/modprobe.conf") and not os.path.exists(instPath + "/etc/modprobe.conf.anacbak")): log("renaming old modprobe.conf -> modprobe.conf.anacbak") os.rename(instPath + "/etc/modprobe.conf", instPath + "/etc/modprobe.conf.anacbak") if method.systemMounted (id.fsset, instPath): id.fsset.umountFilesystems(instPath) return DISPATCH_BACK for i in ( '/var', '/var/lib', '/var/lib/rpm', '/tmp', '/dev', '/etc', '/etc/sysconfig', '/etc/sysconfig/network-scripts', '/etc/X11', '/root', '/var/tmp', '/etc/rpm', '/var/lock', '/var/lock/rpm' ): try: os.mkdir(instPath + i) except os.error, (errno, msg): pass # log("Error making directory %s: %s" % (i, msg)) if flags.setupFilesystems: # setup /etc/rpm/platform for the post-install environment iutil.writeRpmPlatform(instPath) try: # FIXME: making the /var/lib/rpm symlink here is a hack to # workaround db->close() errors from rpm iutil.mkdirChain("/var/lib") iutil.mkdirChain("/var/spool") for path in ("/var/tmp", "/var/lib/rpm","/var/spool/anaconda-updates"): if os.path.exists(path) and not os.path.islink(path): iutil.rmrf(path) if not os.path.islink(path): os.symlink("/mnt/sysimage/%s" %(path,), "%s" %(path,)) else: log("%s already exists as a symlink to %s" %(path, os.readlink(path),)) except Exception, e: # how this could happen isn't entirely clear; log it in case # it does and causes problems later log("error creating symlink, continuing anyway: %s" %(e,)) # SELinux hackery (#121369) if flags.selinux: try: os.mkdir(instPath + "/selinux") except Exception, e: pass try: isys.mount("/selinux", instPath + "/selinux", "selinuxfs") except Exception, e: log("error mounting selinuxfs: %s" %(e,)) # we need to have a /dev during install and now that udev is # handling /dev, it gets to be more fun. so just bind mount the # installer /dev if not id.grpset.hdrlist.has_key("dev"): log("no dev package, going to bind mount /dev") isys.mount("/dev", "/mnt/sysimage/dev", bindMount = 1) # try to copy the comps package. if it doesn't work, don't worry about it try: id.compspkg = method.copyFileToTemp("%s/base/comps.rpm" % (productPath,)) except: log("Unable to copy comps package") id.compspkg = None # write out the fstab if not upgrade: id.fsset.write(instPath) # rootpath mode doesn't have this file around if os.access("/tmp/modprobe.conf", os.R_OK): iutil.copyFile("/tmp/modprobe.conf", instPath + "/etc/modprobe.conf") if os.access("/tmp/zfcp.conf", os.R_OK): iutil.copyFile("/tmp/zfcp.conf", instPath + "/etc/zfcp.conf") # make a /etc/mtab so mkinitrd can handle certain hw (usb) correctly f = open(instPath + "/etc/mtab", "w+") f.write(id.fsset.mtab()) f.close() #CJS add # we need to cache packages that are "updates" if we're doing a cd # install. we write them to under /var since that's where up2date # will end up putting updates try: method.cacheUpdates(instPath, id.grpset.hdrlist, intf) except Exception, e: log("Problem caching updates: %s" %(e,)) #CJS end # delay writing migrate adjusted fstab till later, in case # rpm transaction set determines they don't have enough space to upgrade # else: # id.fsset.migratewrite(instPath) def doInstall(method, id, intf, instPath): if flags.test: return # set up dependency white outs import whiteout upgrade = id.upgrade.get() ts = getAnacondaTS(instPath) total = 0 totalSize = 0 totalFiles = 0 if upgrade: how = "u" else: how = "i" rpm.addMacro("__dbi_htconfig", "hash nofsync %{__dbi_other} %{__dbi_perms}") if id.excludeDocs: rpm.addMacro("_excludedocs", "1") l = [] for p in id.grpset.hdrlist.values(): if p.isSelected(): l.append(p) l.sort(sortPackages) progress = intf.progressWindow(_("Processing"), _("Preparing RPM transaction..."), len(l)) # this is kind of a hack, but has to be done so we can have a chance # with broken triggers if upgrade and len(id.upgradeRemove) > 0: # simple rpm callback since erasure doesn't need anything def install_callback(what, bytes, total, h, user): pass for pkg in id.upgradeRemove: ts.addErase(pkg) # if we hit problems, it's not like there's anything we can # do about it ts.run(install_callback, 0) # new transaction set ts.closeDB() del ts ts = getAnacondaTS(instPath) # we don't want to try to remove things more than once (#84221) id.upgradeRemove = [] i = 0 updcount = 0 updintv = len(l) / 25 for p in l: ts.addInstall(p.hdr, p.hdr, how) total = total + 1 totalSize = totalSize + (p[rpm.RPMTAG_SIZE] / 1024) totalFiles = totalFiles + len(p[rpm.RPMTAG_BASENAMES]) i = i + 1 # HACK - dont overload progress bar with useless requests updcount = updcount + 1 if updcount > updintv: progress.set(i) updcount = 0 progress.pop() depcheck = DependencyChecker(id.grpset) if not id.grpset.hdrlist.preordered(): log ("WARNING: not all packages in hdlist had order tag") # have to call ts.check before ts.order() to set up the alIndex ts.check(depcheck.callback) ts.order() else: ts.check(depcheck.callback) if upgrade: logname = '/root/upgrade.log' else: logname = '/root/install.log' instLogName = instPath + logname try: iutil.rmrf (instLogName) except OSError: pass instLog = open(instLogName, "w+") # dont start syslogd if we arent creating filesystems if flags.setupFilesystems: syslogname = "%s%s.syslog" % (instPath, logname) try: iutil.rmrf (syslogname) except OSError: pass syslog.start (instPath, syslogname) else: syslogname = None if id.compspkg is not None: num = i + 1 else: num = i if upgrade: instLog.write(_("Upgrading %s packages\n\n") % (num,)) else: instLog.write(_("Installing %s packages\n\n") % (num,)) ts.scriptFd = instLog.fileno () rpm.setLogFile(instLog) # the transaction set dup()s the file descriptor and will close the # dup'd when we go out of scope if upgrade: modeText = _("Upgrading %s-%s-%s.%s.\n") else: modeText = _("Installing %s-%s-%s.%s.\n") errors = rpmErrorClass(instLog) pkgTimer = timer.Timer(start = 0) id.instProgress.setSizes(total, totalSize, totalFiles) id.instProgress.processEvents() cb = InstallCallback(intf.messageWindow, id.instProgress, pkgTimer, method, intf.progressWindow, instLog, modeText, ts) # write out migrate adjusted fstab so kernel RPM can get initrd right if upgrade: id.fsset.migratewrite(instPath) if id.upgradeDeps: instLog.write(_("\n\nThe following packages were automatically\n" "selected to be installed:" "\n" "%s" "\n\n") % (id.upgradeDeps,)) cb.initWindow = intf.waitWindow(_("Install Starting"), _("Starting install process, this may take several minutes...")) ts.setProbFilter(~rpm.RPMPROB_FILTER_DISKSPACE) problems = ts.run(cb.cb, 0) if problems: # restore old fstab if we did anything for migrating if upgrade: id.fsset.restoreMigratedFstab(instPath) spaceneeded = {} nodeneeded = {} size = 12 for (descr, (type, mount, need)) in problems: log("(%s, (%s, %s, %s))" %(descr, type, mount, need)) if mount and mount.startswith(instPath): mount = mount[len(instPath):] if not mount: mount = '/' if type == rpm.RPMPROB_DISKSPACE: if spaceneeded.has_key (mount) and spaceneeded[mount] < need: spaceneeded[mount] = need else: spaceneeded[mount] = need elif type == nodeprob: if nodeneeded.has_key (mount) and nodeneeded[mount] < need: nodeneeded[mount] = need else: nodeneeded[mount] = need else: if descr is None: descr = "no description" log ("WARNING: unhandled problem returned from " "transaction set type %d (%s)", type, descr) probs = "" if spaceneeded: probs = probs + _("You don't appear to have enough disk space " "to install the packages you've selected. " "You need more space on the following " "file systems:\n\n") probs = probs + ("%-15s %s\n") % (_("Mount Point"), _("Space Needed")) for (mount, need) in spaceneeded.items (): log("(%s, %s)" %(mount, need)) if need > (1024*1024): need = (need + 1024 * 1024 - 1) / (1024 * 1024) suffix = "M" else: need = (need + 1023) / 1024 suffix = "k" prob = "%-15s %d %c\n" % (mount, need, suffix) probs = probs + prob if nodeneeded: if probs: probs = probs + '\n' probs = probs + _("You don't appear to have enough file nodes " "to install the packages you've selected. " "You need more file nodes on the following " "file systems:\n\n") probs = probs + ("%-15s %s\n") % (_("Mount Point"), _("Nodes Needed")) for (mount, need) in nodeneeded.items (): prob = "%-15s %d\n" % (mount, need) probs = probs + prob if len(probs) == 0: probs = ("ERROR: NO! An unexpected problem has occurred with " "your transaction set. Please see tty3 for more " "information") intf.messageWindow (_("Disk Space"), probs) ts.closeDB() del ts instLog.close() if syslogname: syslog.stop() method.systemUnmounted () return DISPATCH_BACK # This should close the RPM database so that you can # do RPM ops in the chroot in a %post ks script ts.closeDB() del ts # make sure the window gets popped (#82862) if not cb.beenCalled: cb.initWindow.pop() method.filesDone () # rpm environment files go bye-bye for file in ["__db.001", "__db.002", "__db.003"]: try: os.unlink("%s/var/lib/rpm/%s" %(instPath, file)) except Exception, e: log("failed to unlink /var/lib/rpm/%s: %s" %(file,e)) # FIXME: remove the /var/lib/rpm symlink that keeps us from having # db->close error messages shown. I don't really like this though :( try: os.unlink("/var/lib/rpm") except Exception, e: log("failed to unlink /var/lib/rpm: %s" %(e,)) instLog.close () id.instProgress = None def doPostInstall(method, id, intf, instPath): if flags.test: return w = intf.progressWindow(_("Post Install"), _("Performing post install configuration..."), 6) upgrade = id.upgrade.get() arch = iutil.getArch () if upgrade: logname = '/root/upgrade.log' else: logname = '/root/install.log' instLogName = instPath + logname instLog = open(instLogName, "a") try: if not upgrade: w.set(1) copyExtraModules(instPath, id.grpset, id.extraModules) w.set(2) # pcmcia is supported only on i386 at the moment if arch == "i386": pcmcia.createPcmciaConfig( instPath + "/etc/sysconfig/pcmcia") # we need to write out the network bits before kudzu runs # to avoid getting devices in the wrong order (#102276) id.network.write(instPath) w.set(3) # blah. If we're on a serial mouse, and we have X, we need to # close the mouse device, then run kudzu, then open it again. # turn it off mousedev = None # XXX currently Bad Things (X async reply) happen when doing # Mouse Magic on Sparc (Mach64, specificly) # The s390 doesn't even have a mouse! if os.environ.get('DISPLAY') == ':1' and arch != 'sparc': try: import xmouse mousedev = xmouse.get()[0] except RuntimeError: pass if mousedev: try: os.rename (mousedev, "/dev/disablemouse") except OSError: pass try: xmouse.reopen() except RuntimeError: pass if arch != "s390" and flags.setupFilesystems: # we need to unmount usbdevfs before mounting it usbWasMounted = iutil.isUSBDevFSMounted() if usbWasMounted: isys.umount('/proc/bus/usb', removeDir = 0) # see if unmount suceeded, if not pretent it isnt mounted # because we're screwed anywyas if system is going to # lock up if iutil.isUSBDevFSMounted(): usbWasMounted = 0 unmountUSB = 0 try: isys.mount('/usbfs', instPath+'/proc/bus/usb', 'usbfs') unmountUSB = 1 except: log("Mount of /proc/bus/usb in chroot failed") pass argv = [ "/usr/sbin/kudzu", "-q" ] if id.grpset.hdrlist.has_key("kernel"): ver = "%s-%s" %(id.grpset.hdrlist["kernel"][rpm.RPMTAG_VERSION], id.grpset.hdrlist["kernel"][rpm.RPMTAG_RELEASE]) argv.extend(["-k", ver]) devnull = os.open("/dev/null", os.O_RDWR) iutil.execWithRedirect(argv[0], argv, root = instPath, stdout = devnull) # turn it back on if mousedev: try: os.rename ("/dev/disablemouse", mousedev) except OSError: pass try: xmouse.reopen() except RuntimeError: pass if unmountUSB: try: isys.umount(instPath + '/proc/bus/usb', removeDir = 0) except SystemError: # if we fail to unmount, then we should just not # try to remount it. this protects us from random # suckage usbWasMounted = 0 if usbWasMounted: isys.mount('/usbfs', '/proc/bus/usb', 'usbfs') w.set(4) if upgrade and id.dbpath is not None: # remove the old rpmdb try: iutil.rmrf (id.dbpath) except OSError: pass if upgrade: # needed for prior systems which were not xinetd based migrateXinetd(instPath, instLogName) # needed for prior to 2.6 so that mice have some chance # of working afterwards. FIXME: this is a hack migrateMouseConfig(instPath, instLogName) if id.grpset.hdrlist.has_key("rhgb") and id.grpset.hdrlist["rhgb"].isSelected(): log("rhgb installed, adding to boot loader config") id.bootloader.args.append("rhgb quiet") w.set(5) # FIXME: hack to install the comps package if (id.compspkg is not None and os.access(id.compspkg, os.R_OK)): log("found the comps package") try: # ugly hack path = id.compspkg.split("/mnt/sysimage")[1] args = ["/bin/rpm", "-Uvh", path] rc = iutil.execWithRedirect(args[0], args, stdout = "/dev/tty5", stderr = "/dev/tty5", root = instPath) ts = rpm.TransactionSet() ts.setVSFlags(~(rpm.RPMVSF_NORSA|rpm.RPMVSF_NODSA)) ts.closeDB() fd = os.open(id.compspkg, os.O_RDONLY) h = ts.hdrFromFdno(fd) os.close(fd) if upgrade: text = _("Upgrading %s-%s-%s.%s.\n") else: text = _("Installing %s-%s-%s.%s.\n") instLog.write(text % (h['name'], h['version'], h['release'], h['arch'])) os.unlink(id.compspkg) del ts except Exception, e: log("comps.rpm failed to install: %s" %(e,)) try: os.unlink(id.compspkg) except: pass else: log("no comps package found") w.set(6) finally: pass if upgrade: instLog.write(_("\n\nThe following packages were available in " "this version but NOT upgraded:\n")) else: instLog.write(_("\n\nThe following packages were available in " "this version but NOT installed:\n")) lines = [] for p in id.grpset.hdrlist.values(): if not p.isSelected(): lines.append("%s-%s-%s.%s.rpm\n" % (p.hdr[rpm.RPMTAG_NAME], p.hdr[rpm.RPMTAG_VERSION], p.hdr[rpm.RPMTAG_RELEASE], p.hdr[rpm.RPMTAG_ARCH])) lines.sort() for line in lines: instLog.write(line) # XXX hack - we should really write a proper lvm "config". but for now # just vgscan if they have /sbin/lvm and some appearance of volumes if (os.access(instPath + "/sbin/lvm", os.X_OK) and os.access(instPath + "/dev/mapper", os.X_OK) and len(os.listdir("/dev/mapper")) > 1): rc = iutil.execWithRedirect("/sbin/lvm", ["lvm", "vgscan", "-v"], stdout = "/dev/tty5", stderr = "/dev/tty5", root = instPath, searchPath = 1) # write out info on install method used try: if id.methodstr is not None: if os.access (instPath + "/etc/sysconfig/installinfo", os.R_OK): os.rename (instPath + "/etc/sysconfig/installinfo", instPath + "/etc/sysconfig/installinfo.rpmsave") f = open(instPath + "/etc/sysconfig/installinfo", "w+") f.write("INSTALLMETHOD=%s\n" % (string.split(id.methodstr, ':')[0],)) try: ii = open("/tmp/isoinfo", "r") il = ii.readlines() ii.close() for line in il: f.write(line) except: pass f.close() else: log("methodstr not set for some reason") except: log("Failed to write out installinfo") w.pop () sys.stdout.flush() if flags.setupFilesystems: syslog.stop() # FIXME: this is a huge gross hack. hard coded list of files # created by anaconda so that we can not be killed by selinux def setFileCons(instPath, partitions): import partRequests if flags.selinux: log("setting SELinux contexts for anaconda created files") files = ["/etc/rpm/platform", "/etc/rpm/macros", "/etc/lilo.conf", "/etc/lilo.conf.anaconda", "/etc/mtab", "/etc/fstab", "/etc/resolv.conf", "/etc/modprobe.conf", "/etc/modprobe.conf~", "/var/log/wtmp", "/var/run/utmp", "/dev/log", "/var/lib/rpm", "/", "/etc/raidtab", "/etc/mdadm.conf"] vgs = [] for entry in partitions.requests: if isinstance(entry, partRequests.VolumeGroupRequestSpec): vgs.append("/dev/%s" %(entry.volumeGroupName,)) # ugh, this is ugly for dir in ["/var/lib/rpm", "/etc/lvm", "/dev/mapper"] + vgs: def addpath(x): return dir + "/" + x if not os.path.isdir(instPath + dir): continue dirfiles = os.listdir(instPath + dir) files.extend(map(addpath, dirfiles)) files.append(dir) # blah, to work in a chroot, we need to actually be inside so the # regexes will work child = os.fork() if (not child): os.chroot(instPath) for f in files: if not os.access("%s" %(f,), os.R_OK): log("%s doesn't exist" %(f,)) continue ret = isys.resetFileContext(f) log("set fc of %s to %s" %(f, ret)) os._exit(0) try: os.waitpid(child, 0) except OSError, (num, msg): pass return # XXX: large hack lies here def migrateMouseConfig(instPath, instLog): if not os.access (instPath + "/usr/sbin/fix-mouse-psaux", os.X_OK): return argv = [ "/usr/sbin/fix-mouse-psaux" ] logfile = os.open (instLog, os.O_APPEND) iutil.execWithRedirect(argv[0], argv, root = instPath, stdout = logfile, stderr = logfile) os.close(logfile) def migrateXinetd(instPath, instLog): if not os.access (instPath + "/usr/sbin/inetdconvert", os.X_OK): return if not os.access (instPath + "/etc/inetd.conf.rpmsave", os.R_OK): return argv = [ "/usr/sbin/inetdconvert", "--convertremaining", "--inetdfile", "/etc/inetd.conf.rpmsave" ] logfile = os.open (instLog, os.O_APPEND) iutil.execWithRedirect(argv[0], argv, root = instPath, stdout = logfile, stderr = logfile) os.close(logfile) def copyExtraModules(instPath, grpset, extraModules): kernelVersions = grpset.kernelVersionList() foundModule = 0 try: f = open("/etc/arch") arch = f.readline().strip() del f except IOError: arch = os.uname()[2] for (path, name) in extraModules: if not path: path = "/modules.cgz" pattern = "" names = "" for (n, tag) in kernelVersions: if tag == "up": pkg = "kernel" else: pkg = "kernel-%s" %(tag,) arch = grpset.hdrlist[pkg][rpm.RPMTAG_ARCH] # version 1 path pattern = pattern + " %s/%s/%s.ko " % (n, arch, name) # version 0 path pattern = pattern + " %s/%s.ko " % (n, name) names = names + " %s.ko" % (name,) command = ("cd %s/lib/modules; gunzip < %s | " "%s/bin/cpio --quiet -iumd %s" % (instPath, path, instPath, pattern)) log("running: '%s'" % (command, )) os.system(command) for (n, tag) in kernelVersions: if tag == "up": pkg = "kernel" else: pkg = "kernel-%s" %(tag,) toDir = "%s/lib/modules/%s/updates" % \ (instPath, n) to = "%s/%s.ko" % (toDir, name) if (os.path.isdir("%s/lib/modules/%s" %(instPath, n)) and not os.path.isdir("%s/lib/modules/%s/updates" %(instPath, n))): os.mkdir("%s/lib/modules/%s/updates" %(instPath, n)) if not os.path.isdir(toDir): continue arch = grpset.hdrlist[pkg][rpm.RPMTAG_ARCH] for p in ("%s/%s.ko" %(arch, name), "%s.ko" %(name,)): fromFile = "%s/lib/modules/%s/%s" % (instPath, n, p) if (os.access(fromFile, os.R_OK)): log("moving %s to %s" % (fromFile, to)) os.rename(fromFile, to) # the file might not have been owned by root in the cgz os.chown(to, 0, 0) foundModule = 1 else: log("missing DD module %s (this may be okay)" % fromFile) if foundModule == 1: for (n, tag) in kernelVersions: recreateInitrd(n, instPath) #Recreate initrd for use when driver disks add modules def recreateInitrd (kernelTag, instRoot): log("recreating initrd for %s" % (kernelTag,)) iutil.execWithRedirect("/sbin/new-kernel-pkg", [ "/sbin/new-kernel-pkg", "--mkinitrd", "--depmod", "--install", kernelTag ], stdout = None, stderr = None, searchPath = 1, root = instRoot) # XXX Deprecated. Is this ever called anymore? def depmodModules(comps, instPath): kernelVersions = comps.kernelVersionList() for (version, tag) in kernelVersions: iutil.execWithRedirect ("/sbin/depmod", [ "/sbin/depmod", "-a", version, "-F", "/boot/System.map-" + version ], root = instPath, stderr = '/dev/null') def betaNagScreen(intf, dir): publicBetas = { "Red Hat Linux": "Red Hat Linux Public Beta", "Red Hat Enterprise Linux": "Red Hat Enterprise Linux Public Beta", "Fedora Core": "Fedora Core" } if dir == DISPATCH_BACK: return DISPATCH_NOOP fileagainst = None for (key, val) in publicBetas.items(): if productName.startswith(key): fileagainst = val if fileagainst is None: fileagainst = "%s Beta" %(productName,) while 1: rc = intf.messageWindow( _("Warning! This is pre-release software!"), _("Thank you for downloading this " "pre-release of %s.\n\n" "This is not a final " "release and is not intended for use " "on production systems. The purpose of " "this release is to collect feedback " "from testers, and it is not suitable " "for day to day usage.\n\n" "To report feedback, please visit:\n\n" " http://bugzilla.redhat.com/bugzilla\n\n" "and file a report against '%s'.\n" %(productName, fileagainst)), type="custom", custom_icon="warning", custom_buttons=[_("_Exit"), _("_Install anyway")]) if not rc: if flags.rootpath: msg = _("The installer will now exit...") buttons = [_("_Back"), _("_Exit")] else: msg = _("Your system will now be rebooted...") buttons = [_("_Back"), _("_Reboot")] rc = intf.messageWindow( _("Rebooting System"), msg, type="custom", custom_icon="warning", custom_buttons=buttons) if rc: sys.exit(0) else: break # FIXME: this is a kind of poor way to do this, but it will work for now def selectLanguageSupportGroups(grpset, langSupport): sup = langSupport.supported if len(sup) == 0: sup = langSupport.getAllSupported() for group in grpset.groups.values(): xmlgrp = grpset.compsxml.groups[group.basename] langs = [] for name in sup: try: lang = langSupport.langInfoByName[name][0] langs.extend(language.expandLangs(lang)) except: continue if group.langonly is not None and group.langonly in langs: group.select() for package in xmlgrp.pkgConditionals.keys(): req = xmlgrp.pkgConditionals[package] if not grpset.hdrlist.has_key(package): log("Missing %s which is in a langsupport conditional" %(package,)) continue # add to the deps in the dependencies structure for the # package. this should take care of whenever we're # selected grpset.hdrlist[req].addDeps([package], main = 0) if grpset.hdrlist[req].isSelected(): grpset.hdrlist[package].select() sys.stdout.flush() grpset.hdrlist[package].usecount += grpset.hdrlist[req].usecount - 1 group.selectDeps([package], uses = grpset.hdrlist[req].usecount) # # partedUtils.py: helper functions for use with parted objects # # Matt Wilson # Jeremy Katz # Mike Fulbright # Karsten Hopp # # Copyright 2002-2003 Red Hat, Inc. # # This software may be freely redistributed under the terms of the GNU # library public license. # # You should have received a copy of the GNU Library Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # """Helper functions for use when dealing with parted objects.""" import parted import math import os, sys, string, struct from product import * import fsset import iutil, isys import raid import lvm from flags import flags from partErrors import * from rhpl.log import log from rhpl.translate import _ fsTypes = {} fs_type = parted.file_system_type_get_next () while fs_type: fsTypes[fs_type.name] = fs_type fs_type = parted.file_system_type_get_next (fs_type) def get_flags (part): """Retrieve a list of strings representing the flags on the partition.""" string="" if not part.is_active (): return string first=1 flag = parted.partition_flag_next (0) while flag: if part.get_flag (flag): string = string + parted.partition_flag_get_name (flag) if first: first = 0 else: string = string + ", " flag = parted.partition_flag_next (flag) return string def start_sector_to_cyl(device, sector): """Return the closest cylinder (round down) to sector on device.""" return int(math.floor((float(sector) / (device.heads * device.sectors)) + 1)) def end_sector_to_cyl(device, sector): """Return the closest cylinder (round up) to sector on device.""" return int(math.ceil(float((sector + 1)) / (device.heads * device.sectors))) def start_cyl_to_sector(device, cyl): "Return the sector corresponding to cylinder as a starting cylinder." return long((cyl - 1) * (device.heads * device.sectors)) def end_cyl_to_sector(device, cyl): "Return the sector corresponding to cylinder as a ending cylinder." return long(((cyl) * (device.heads * device.sectors)) - 1) def getPartSize(partition): """Return the size of partition in sectors.""" return partition.geom.length def getPartSizeMB(partition): """Return the size of partition in megabytes.""" return (partition.geom.length * partition.geom.dev.sector_size / 1024.0 / 1024.0) def getDeviceSizeMB(dev): """Return the size of dev in megabytes.""" return (float(dev.heads * dev.cylinders * dev.sectors) / (1024 * 1024) * dev.sector_size) def get_partition_by_name(disks, partname): """Return the parted part object associated with partname. Arguments: disks -- Dictionary of diskname->PedDisk objects partname -- Name of partition to find Return: PedPartition object with name partname. None if no such partition. """ for diskname in disks.keys(): disk = disks[diskname] part = disk.next_partition() while part: if get_partition_name(part) == partname: return part part = disk.next_partition(part) return None def get_partition_name(partition): """Return the device name for the PedPartition partition.""" if (partition.geom.dev.type == parted.DEVICE_DAC960 or partition.geom.dev.type == parted.DEVICE_CPQARRAY): return "%sp%d" % (partition.geom.dev.path[5:], partition.num) if (parted.__dict__.has_key("DEVICE_SX8") and partition.geom.dev.type == parted.DEVICE_SX8): return "%sp%d" % (partition.geom.dev.path[5:], partition.num) return "%s%d" % (partition.geom.dev.path[5:], partition.num) def get_partition_file_system_type(part): """Return the file system type of the PedPartition part. Arguments: part -- PedPartition object Return: Filesystem object (as defined in fsset.py) """ if part.fs_type is None and part.native_type == 0x41: ptype = fsset.fileSystemTypeGet("PPC PReP Boot") elif part.fs_type == None: return None elif part.fs_type.name == "linux-swap": ptype = fsset.fileSystemTypeGet("swap") elif (part.fs_type.name == "FAT" or part.fs_type.name == "fat16" or part.fs_type.name == "fat32"): ptype = fsset.fileSystemTypeGet("vfat") else: try: ptype = fsset.fileSystemTypeGet(part.fs_type.name) except: ptype = fsset.fileSystemTypeGet("foreign") return ptype def set_partition_file_system_type(part, fstype): """Set partition type of part to PedFileSystemType implied by fstype.""" if fstype == None: return try: for flag in fstype.getPartedPartitionFlags(): if not part.is_flag_available(flag): raise PartitioningError, ("requested FileSystemType needs " "a flag that is not available.") part.set_flag(flag, 1) part.set_system(fstype.getPartedFileSystemType()) except: print "Failed to set partition type to ",fstype.getName() pass def get_partition_drive(partition): """Return the device name for disk that PedPartition partition is on.""" return "%s" %(partition.geom.dev.path[5:]) def get_max_logical_partitions(disk): if not disk.type.check_feature(parted.DISK_TYPE_EXTENDED): return 0 dev = disk.dev.path[5:] for key in max_logical_partition_count.keys(): if dev.startswith(key): return max_logical_partition_count[key] # FIXME: if we don't know about it, should we pretend it can't have # logicals? probably safer to just use something reasonable return 11 def map_foreign_to_fsname(type): """Return the partition type associated with the numeric type.""" if type in allPartitionTypesDict.keys(): return allPartitionTypesDict[type] else: return _("Foreign") def filter_partitions(disk, func): rc = [] part = disk.next_partition () while part: if func(part): rc.append(part) part = disk.next_partition (part) return rc def get_all_partitions(disk): """Return a list of all PedPartition objects on disk.""" func = lambda part: part.is_active() return filter_partitions(disk, func) def get_logical_partitions(disk): """Return a list of logical PedPartition objects on disk.""" func = lambda part: (part.is_active() and part.type & parted.PARTITION_LOGICAL) return filter_partitions(disk, func) def get_primary_partitions(disk): """Return a list of primary PedPartition objects on disk.""" func = lambda part: part.type == parted.PARTITION_PRIMARY return filter_partitions(disk, func) def get_raid_partitions(disk): """Return a list of RAID-type PedPartition objects on disk.""" func = lambda part: (part.is_active() and part.get_flag(parted.PARTITION_RAID) == 1) return filter_partitions(disk, func) def get_lvm_partitions(disk): """Return a list of physical volume-type PedPartition objects on disk.""" func = lambda part: (part.is_active() and part.get_flag(parted.PARTITION_LVM) == 1) return filter_partitions(disk, func) def getDefaultDiskType(): """Get the default partition table type for this architecture.""" if iutil.getArch() == "i386": return parted.disk_type_get("msdos") elif iutil.getArch() == "ia64": return parted.disk_type_get("gpt") elif iutil.getArch() == "s390": # the "default" type is dasd, but we don't really do dasd # formatting with parted and use dasdfmt directly for them # so if we get here, it's an fcp disk and we should write # an msdos partition table (#144199) return parted.disk_type_get("msdos") elif iutil.getArch() == "alpha": return parted.disk_type_get("bsd") elif iutil.getArch() == "sparc": return parted.disk_type_get("sun") elif iutil.getArch() == "ppc": if iutil.getPPCMachine() == "PMac": return parted.disk_type_get("mac") else: return parted.disk_type_get("msdos") else: return parted.disk_type_get("msdos") archLabels = {'i386': ['msdos'], 's390': ['dasd', 'msdos'], 'alpha': ['bsd', 'msdos'], 'sparc': ['sun'], 'ia64': ['msdos', 'gpt'], 'ppc': ['msdos', 'mac'], 'x86_64': ['msdos']} # this is kind of crappy, but we don't really want to allow LDL formatted # dasd to be used during the install def checkDasdFmt(disk, intf): if iutil.getArch() != "s390": return 0 if disk.type.name != "dasd": return 0 # FIXME: there has to be a better way to check LDL vs CDL # how do I test ldl vs cdl? if disk.max_primary_partition_count > 1: return 0 if intf: try: devs = isys.getDasdDevPort() dev = "/dev/%s (%s)" %(disk.dev.path[5:], devs[device]) except Exception, e: log("exception getting dasd dev ports: %s" %(e,)) dev = "/dev/%s" %(disk.dev.path[5:],) rc = intf.messageWindow(_("Warning"), _("The device %s is LDL formatted instead of " "CDL formatted. LDL formatted DASDs are not " "supported for usage during an install of %s. " "If you wish to use this disk for installation, " "it must be re-initialized causing the loss of " "ALL DATA on this drive.\n\n" "Would you like to reformat this DASD using CDL " "format?") %(dev, productName), type = "yesno") if rc == 0: return 1 else: return -1 else: return 1 def checkDiskLabel(disk, intf): """Check that the disk label on disk is valid for this machine type.""" arch = iutil.getArch() if arch in archLabels.keys(): if disk.type.name in archLabels[arch]: # this is kind of a hack since we don't want LDL to be used return checkDasdFmt(disk, intf) else: if disk.type.name == "msdos": return 0 if intf: rc = intf.messageWindow(_("Warning"), _("/dev/%s currently has a %s partition " "layout. To use this disk for " "the installation of %s, it must be " "re-initialized, causing the loss of " "ALL DATA on this drive.\n\n" "Would you like to format this " "drive?") %(disk.dev.path[5:], disk.type.name, productName), type="custom", custom_buttons = [ _("_Ignore drive"), _("_Format drive") ], custom_icon="question") if rc == 0: return 1 else: return -1 else: return 1 # attempt to associate a parted filesystem type on a partition that # didn't probe as one type or another. def validateFsType(part): # we only care about primary and logical partitions if not part.type in (parted.PARTITION_PRIMARY, parted.PARTITION_LOGICAL): return # if the partition already has a type, no need to search if part.fs_type: return # first fsystem to probe wins, so sort the types into a preferred # order. fsnames = fsTypes.keys() goodTypes = ['ext3', 'ext2'] badTypes = ['linux-swap',] for fstype in goodTypes: fsnames.remove(fstype)  fsnames = goodTypes + fsnames for fstype in badTypes: fsnames.remove(fstype) fsnames.extend(badTypes) # now check each type, and set the partition system accordingly. for fsname in fsnames: fstype = fsTypes[fsname] if fstype.probe_specific(part.geom) != None: # XXX verify that this will not modify system type # in the case where a user does not modify partitions part.set_system(fstype) return def isLinuxNativeByNumtype(numtype): """Check if the type is a 'Linux native' filesystem.""" linuxtypes = [0x82, 0x83, 0x8e, 0xfd] for t in linuxtypes: if int(numtype) == t: return 1 return 0 def sniffFilesystemType(device): """Sniff to determine the type of fs on device. device - name of device to sniff. we try to create it if it doesn't exist. """ if os.access(device, os.O_RDONLY): dev = device else: dev = "/tmp/" + device if not os.access(dev, os.O_RDONLY): try: isys.makeDevInode(device, dev) except: pass pagesize = isys.getpagesize() if pagesize > 2048: num = pagesize else: num = 2048 try: fd = os.open(dev, os.O_RDONLY) buf = os.read(fd, num) os.close(fd) except: return None if len(buf) < pagesize: try: log("Tried to read pagesize for %s in sniffFilesystemType and only read %s", dev, len(buf)) except: pass return None # physical volumes start with HM (see linux/lvm.h # and LVM/ver/tools/lib/pv_copy.c) if buf.startswith("HM"): return "physical volume (LVM)" # sniff for LVM2 label. see LVM/ver/lib/label/label.[ch] for a # description of the label and LVM/ver/lib/format_text/layout.h for sec in range(0, 4): off = (sec * 512) + 24 if buf[off:].startswith("LVM2"): return "physical volume (LVM)" try: isys.raidsbFromDevice(dev) return "software RAID" except: pass # ext2 check if struct.unpack("= spec.size): newp = disk.partition_new (type, spec.fs_type, part.geom.start, part.geom.start + spec.size) constraint = disk.dev.constraint_any () try: disk.add_partition (newp, constraint) status = 1 break except parted.error, msg: raise PartitioningError, msg part = disk.next_partition (part) if not status: raise PartitioningError, ("Not enough free space on %s to create " "new partition" % (device,)) return newp def deleteAllPartitions (self): """Delete all partitions from all disks. - UNUSED.""" for disk in self.disks.values(): disk.delete_all () def savePartitions (self): """Write the partition tables out to the disks.""" for disk in self.disks.values(): disk.commit() #disk.close() del disk self.refreshDevices() def refreshDevices (self, intf = None, initAll = 0, zeroMbr = 0, clearDevs = []): """Reread the state of the disks as they are on disk.""" self.closeDevices() self.disks = {} self.openDevices(intf, initAll, zeroMbr, clearDevs) def closeDevices (self): """Close all of the disks which are open.""" for disk in self.disks.keys(): #self.disks[disk].close() del self.disks[disk] def dasdFmt (self, intf = None, drive = None): """Format dasd devices (s390).""" if self.disks.has_key(drive): del self.disks[drive] w = intf.progressWindow (_("Initializing"), _("Please wait while formatting drive %s...\n" ) % (drive,), 100) try: isys.makeDevInode(drive, '/tmp/' + drive) except: pass argList = [ "/sbin/dasdfmt", "-y", "-b", "4096", "-d", "cdl", "-P", "-F", "-f", "/tmp/%s" % drive] fd = os.open("/dev/null", os.O_RDWR | os.O_CREAT | os.O_APPEND) p = os.pipe() childpid = os.fork() if not childpid: os.close(p[0]) os.dup2(p[1], 1) os.dup2(fd, 2) os.close(p[1]) os.close(fd) os.execv(argList[0], argList) log("failed to exec %s", argList) os._exit(1) os.close(p[1]) num = '' sync = 0 s = 'a' while s: try: s = os.read(p[0], 1) os.write(fd, s) if s != '\n': try: num = num + s except: pass else: if num: val = string.split(num) if (val[0] == 'cyl'): # printf("cyl %5d of %5d | %3d%%\n", val = int(val[5][:-1]) w and w.set(val) # sync every 10% if sync + 10 <= val: isys.sync() sync = val num = '' except OSError, args: (errno, str) = args if (errno != 4): raise IOError, args try: (pid, status) = os.waitpid(childpid, 0) except OSError, (num, msg): print __name__, "waitpid:", msg os.close(fd) w and w.pop() if os.WIFEXITED(status) and (os.WEXITSTATUS(status) == 0): return 0 return 1 def openDevices (self, intf = None, initAll = 0, zeroMbr = 0, clearDevs = []): """Open the disks on the system and skip unopenable devices.""" if self.disks: return for drive in self.driveList (): if drive in DiskSet.skippedDisks and not initAll: continue deviceFile = isys.makeDevInode(drive) if isys.driveIsRemovable(drive) and not flags.expert: DiskSet.skippedDisks.append(drive) continue # FIXME: need the right fix for z/VM formatted dasd if iutil.getArch() == "s390" and drive[:4] == "dasd" and isys.getDasdState(drive): devs = isys.getDasdDevPort() if intf is None: DiskSet.skippedDisks.append(drive) continue if flags.runks == 1 and flags.display_mode == 'c': rc = 1 else: rc = intf.messageWindow(_("Warning"), _("The partition table on device %s (%s) was unreadable. " "To create new partitions it must be initialized, " "causing the loss of ALL DATA on this drive.\n\n" "This operation will override any previous " "installation choices about which drives to " "ignore.\n\n" "Would you like to initialize this drive, " "erasing ALL DATA?") % (drive, devs[drive]), type = "yesno") if rc == 0: DiskSet.skippedDisks.append(drive) continue else: if (self.dasdFmt(intf, drive)): DiskSet.skippedDisks.append(drive) continue try: dev = parted.PedDevice.get (deviceFile) except parted.error, msg: DiskSet.skippedDisks.append(drive) continue if (initAll and ((clearDevs is None) or (len(clearDevs) == 0) or drive in clearDevs) and not flags.test): if iutil.getArch() == "s390" and drive[:4] == "dasd": if (intf is None or self.dasdFmt(intf, drive)): DiskSet.skippedDisks.append(drive) continue else: try: disk = dev.disk_new_fresh(getDefaultDiskType()) disk.commit() self.disks[drive] = disk except parted.error, msg: DiskSet.skippedDisks.append(drive) continue try: disk = parted.PedDisk.new(dev) self.disks[drive] = disk except parted.error, msg: recreate = 0 if zeroMbr: log("zeroMBR was set and invalid partition table found " "on %s" % (dev.path[5:])) recreate = 1 elif not intf: DiskSet.skippedDisks.append(drive) continue else: if iutil.getArch() == "s390" and drive[:4] == "dasd": devs = isys.getDasdDevPort() format = drive + " (" + devs[drive] + ")" else: format = drive if iutil.getArch() == "s390" and drive[:4] == "dasd" and flags.runks == 1 and flags.display_mode == 'c': rc = 1 else: rc = intf.messageWindow(_("Warning"), _("The partition table on device %s was unreadable. " "To create new partitions it must be initialized, " "causing the loss of ALL DATA on this drive.\n\n" "This operation will override any previous " "installation choices about which drives to " "ignore.\n\n" "Would you like to initialize this drive, " "erasing ALL DATA?") % (format,), type = "yesno") if rc == 0: DiskSet.skippedDisks.append(drive) continue else: recreate = 1 if recreate == 1 and not flags.test: if iutil.getArch() == "s390" and drive[:4] == "dasd": if (intf is None or self.dasdFmt(intf, drive)): DiskSet.skippedDisks.append(drive) continue else: try: disk = dev.disk_new_fresh(getDefaultDiskType()) disk.commit() except parted.error, msg: DiskSet.skippedDisks.append(drive) continue try: disk = parted.PedDisk.new(dev) self.disks[drive] = disk except parted.error, msg: DiskSet.skippedDisks.append(drive) continue filter_partitions(disk, validateFsType) # check that their partition table is valid for their architecture ret = checkDiskLabel(disk, intf) if ret == 1: DiskSet.skippedDisks.append(drive) continue elif ret == -1: if iutil.getArch() == "s390" and drive[:4] == "dasd": if (intf is None or self.dasdFmt(intf, drive)): DiskSet.skippedDisks.append(drive) continue else: try: disk = dev.disk_new_fresh(getDefaultDiskType()) disk.commit() except parted.error, msg: DiskSet.skippedDisks.append(drive) continue try: disk = parted.PedDisk.new(dev) self.disks[drive] = disk except parted.error, msg: DiskSet.skippedDisks.append(drive) continue def partitionTypes (self): """Return list of (partition, partition type) tuples for all parts.""" rc = [] drives = self.disks.keys() drives.sort() for drive in drives: disk = self.disks[drive] part = disk.next_partition () while part: if part.type in (parted.PARTITION_PRIMARY, parted.PARTITION_LOGICAL): device = get_partition_name(part) if part.fs_type: ptype = part.fs_type.name else: ptype = None rc.append((device, ptype)) part = disk.next_partition (part) return rc def diskState (self): """Print out current disk state. DEBUG.""" rc = "" for disk in self.disks.values(): rc = rc + ("%s: %s length %ld, maximum " "primary partitions: %d\n" % (disk.dev.path, disk.dev.model, disk.dev.length, disk.max_primary_partition_count)) part = disk.next_partition() if part: rc = rc + ("Device Type Filesystem Start " "End Length Flags\n") rc = rc + ("------ ---- ---------- ----- " "--- ------ -----\n") while part: if not part.type & parted.PARTITION_METADATA: device = "" fs_type_name = "" if part.num > 0: device = get_partition_name(part) if part.fs_type: fs_type_name = part.fs_type.name partFlags = get_flags (part) rc = rc + ("%-9s %-12s %-12s %-10ld %-10ld %-10ld %7s\n" % (device, part.type_name, fs_type_name, part.geom.start, part.geom.end, part.geom.length, partFlags)) part = disk.next_partition(part) return rc def checkNoDisks(self, intf): """Check that there are valid disk devices.""" if len(self.disks.keys()) == 0: intf.messageWindow(_("No Drives Found"), _("An error has occurred - no valid devices were " "found on which to create new file systems. " "Please check your hardware for the cause " "of this problem.")) sys.exit(0) # XXX is this all of the possibilities? dosPartitionTypes = [ 1, 6, 7, 11, 12, 14, 15 ] # master list of partition types allPartitionTypesDict = { 0 : "Empty", 1: "DOS 12-bit FAT", 2: "XENIX root", 3: "XENIX usr", 4: "DOS 16-bit <32M", 5: "Extended", 6: "DOS 16-bit >=32M", 7: "NTFS/HPFS", 8: "AIX", 9: "AIX bootable", 10: "OS/2 Boot Manager", 0xb: "Win95 FAT32", 0xc: "Win95 FAT32", 0xe: "Win95 FAT16", 0xf: "Win95 Ext'd", 0x10: "OPUS", 0x11: "Hidden FAT12", 0x12: "Compaq Setup", 0x14: "Hidden FAT16 <32M", 0x16: "Hidden FAT16", 0x17: "Hidden HPFS/NTFS", 0x18: "AST SmartSleep", 0x1b: "Hidden Win95 FAT32", 0x1c: "Hidden Win95 FAT32 (LBA)", 0x1e: "Hidden Win95 FAT16 (LBA)", 0x24: "NEC_DOS", 0x39: "Plan 9", 0x40: "Venix 80286", 0x41: "PPC_PReP Boot", 0x42: "SFS", 0x4d: "QNX4.x", 0x4e: "QNX4.x 2nd part", 0x4f: "QNX4.x 2nd part", 0x51: "Novell?", 0x52: "Microport", 0x63: "GNU HURD", 0x64: "Novell Netware 286", 0x65: "Novell Netware 386", 0x75: "PC/IX", 0x80: "Old MINIX", 0x81: "Linux/MINIX", 0x82: "Linux swap", 0x83: "Linux native", 0x84: "OS/2 hidden C:", 0x85: "Linux Extended", 0x86: "NTFS volume set", 0x87: "NTFS volume set", 0x8e: "Linux LVM", 0x93: "Amoeba", 0x94: "Amoeba BBT", 0x9f: "BSD/OS", 0xa0: "IBM Thinkpad hibernation", 0xa5: "BSD/386", 0xa6: "OpenBSD", 0xb7: "BSDI fs", 0xb8: "BSDI swap", 0xc7: "Syrinx", 0xdb: "CP/M", 0xde: "Dell Utility", 0xe1: "DOS access", 0xe3: "DOS R/O", 0xeb: "BEOS", 0xee: "EFI GPT", 0xef: "EFI (FAT-12/16/32)", 0xf2: "DOS secondary", 0xfd: "Linux RAID", 0xff: "BBT" } max_logical_partition_count = { "hd": 59, "sd": 11, "ataraid/": 11, "rd/": 3, "cciss/": 11, "i2o/": 11, "iseries/vd": 3, "ida/": 11, "sx8/": 11, }