From a4026ac6cb2afe5804ca826f7e8fa04254d36d46 Mon Sep 17 00:00:00 2001
From: pin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Date: Tue, 23 Mar 2010 15:03:02 +0000
Subject: [PATCH] Prise en charge du mode.

git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@113 fe552daf-6dbe-4428-90eb-1537e0879342
---
 src/app/globals.py               |  12 ++++++++----
 src/app/minwii.py                |   9 ++++++---
 src/app/widgets/data/accueil.png | Bin 13842 -> 11907 bytes
 src/app/widgets/home.py          |  11 ++++++-----
 src/app/widgets/playingscreen.py |   8 ++++----
 5 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/src/app/globals.py b/src/app/globals.py
index ef51d78..0dde5f3 100755
--- a/src/app/globals.py
+++ b/src/app/globals.py
@@ -11,10 +11,14 @@ from math import floor
 BACKGROUND_LAYER = 0
 FOREGROUND_LAYER = 1
 CURSOR_LAYER = 2
-PLAYING_MODES = {'EASY':0
-                ,'NORMAL':1
-                ,'ADVANCED':2
-                ,'EXPERT':3}
+PLAYING_MODES = (('EASY'   , u'Facile'),
+                 ('NORMAL'  , u'Normal'),
+                 ('ADVANCED', u'Avancé'),
+                 ('EXPERT'  , u'Expert'))
+
+
+
+PLAYING_MODES_DICT = dict([(v[0], i) for i, v in enumerate(PLAYING_MODES)])
 
 def hls_to_rgba_8bits(h, l, s, a=1) :
     #convert to rgb ranging from 0 to 255
diff --git a/src/app/minwii.py b/src/app/minwii.py
index 06e33f7..2e65952 100755
--- a/src/app/minwii.py
+++ b/src/app/minwii.py
@@ -17,7 +17,7 @@ from synth import Synth
 from eventutils import EventDispatcher
 from musicxml import musicXml2Song
 from config import SONG_FILE_PATH
-from time import sleep
+from globals import PLAYING_MODES_DICT
 
 class MinWii(object):
     
@@ -49,10 +49,13 @@ class MinWii(object):
             instrumentDescription = selector.selectedInstrument
             
             # lancement du lecteur / clavier
-            song = musicXml2Song(home.songFile)
+            songFile = home.songFile
+            playMode = home.modeSelect.value
+            playMode = PLAYING_MODES_DICT[playMode]
+            song = musicXml2Song(songFile)
             bank, preset = instrumentDescription['bank'], instrumentDescription['preset']
             synth.program_select(0, bank, preset)
-            playingScreen = SongPlayingScreen(synth, song)
+            playingScreen = SongPlayingScreen(synth, song, mode=playMode)
             playingScreen.run()
             pygame.event.clear()
             EventDispatcher.reset()
diff --git a/src/app/widgets/data/accueil.png b/src/app/widgets/data/accueil.png
index cd3224b5172098f5ff49567df1dc27e46ae4b9d3..9be4901d8207a038fe66707593d5717ef48bb6d6 100644
GIT binary patch
literal 11907
zcmZ8nbzD?kw;mOx6i`Y9L_oTfZUjWS89Ee(p+jKkQU_F8V1@>1m?5M)MClmm?v(D1
zd%*Ag?tAb2bAD&fIy=^0d++CY_WGi#EOQU<F&+p6x+f?5N*x5csRIJtpvAcfl%T-E
zg}~#Hv$T%0hCS5T^{t~BNCIMSV)j(d_N}>@y4hQZ`@1$X5fF%jUhb8IrrYRRqNjs_
zcH)wLQU8R8xSo9*l1-nsjCc(WdwS#MEt(P9?^w{cZ(WhP!>GL2iOV+^k7GthO=85$
zpis06zLizx8!~7RRt)`(h<>66cZBi3*vcmSiXaw;bRZ$CW}<94#t|Dno1!bLXrCN<
z-J<PtFO&l8bbR-0V(@r!N^mJjfA8>eHv{OkpD}YY7VsbfM)DL66yVSRZv{++Z1}9e
z+Y{goB#HC?4X%qEur(U{h(VxfYnr=Qs*)hk7U$g%pql?{evt|<<+?U{g?$6mfO*aX
zc=6%@$32t?1oGm5$IoV%itBPKKYzF~Ix;r?{d5tkuccLnPAku;<6a$^s@V>*aJDm)
zD|>I8=mvFn7i9mQot<4&wDbF7iuHNq`yU!VwXt_%%#1NJfkmT|MJHXWoUcuH|D<6x
zHSzNDdI}LD{ZahTwz0k=5J;aEj-hs^r6l+ynPPCiA3ZoYsHKS{<A4_q*A#)1+6A>K
z6RqC0lBQgCZvRN>Ykx(`^t_Glx${D2Lq=Uh#Dg!%<?LNuU7kXlIVcOJXOYB=#%sb(
zxv8lpEumDFS@H@BtE;PYUt2d0PVs8If)sG&qV%a3Mt=YPt=sGFx_nMiHotD^1@fbm
ztf>5|R!KlbMRgL-7%KE5omaz6;?_s+fq{X<#6&O{?7kD_#-x{T)3M;YHcAf;Um=Ns
zP`I@udCn>H!C)}EykL(ux?lzdbUXfo#ve1~kc7-k2788lCuXodM<7{mGpi}NYZM7=
zeG)B9s*RIjWN2u}9+GHBK=J)=7uF;z+I-raXOI1#KfJraR7y6hVU|+$0lrnl4qr(`
zIOPinE$kI%RIV7;n98`jSF$V~G+8r@+_6GYXi^J0MX<7#PF3RSa>$dY7ve{s2D<7v
zj;3ek*CSkl!gb;}o}tlmADbD<#4=RN^78U#W<QfoRnXh3%-sS(HjBzq?sBv8kyCI!
zznI>#gr!9c3uDG@yFAIs$@?;Kqmf9GhaoDY5kC<<_z%=JvrQlO4rMGrcwW>(wfc(Z
z4nzaZy}&*xl4}Xkl4tfn42v|{>hM<e_AqARF<W~;y?owQmFCenjdNO;*I%6Impi1`
zeCILHo`_InV8^T$II~#>)0-oa#KM6?;g@~pD$5)aj)-D+<?h|W!lE}_adB}Ba3Q3W
z<)>#-w{`xwb^@VO33m_{k=*a*-u?N$xs;C3U;|$ml8>cJzF=lXKNE3q;NnUXwwG2_
zH5!PxgS5|RTD8`1$-=BIKFxc-^E2I_G{vhAUU+o&tA8s=)N^N?Ue*j&Mil1YaFkb)
zJMZ7I)AU~TO{Ft8vc@)q5cHi&a@mm3vWA#AHPnYgNK1DxO8j`BCuk*T;$2VYI9_^X
zhMBo`IvU;4B|jN<ve2UtR5+q<xh-pZ`rE=cj%WqFPQoxq)QBH_G63glQ?#SuxmY;U
zyVXO^Q2<%U3$QU$7;?0T{M%T#G>-iV#R|P)=4qt$EGqiXGWl#D=?pJ?D{r^n*3y<o
zkO@si&<=U`?gg4`5p`KNv5AjBG-t}sF*CCl?Xt@Ma?vSwcE~Ta-2B3y40d{U*Ul+|
zpywzG96MzAL<He$&_B?av5=l?NY;7GGc&L)k@Kx+XVR*5t?U=ar&@+lKYDw8ATVq`
z$z<0J7_D29Vmg%{?LQDwl@S*e@7L*z$52sLTihmNWnl?!F@16;{9{FoK~k+);xUs)
zomG^ke%njhSm_-5ye2fuiVF!g%sl*0vvg$Sai0;Tn4yOL1}r)xSeL+#hntK&>v<Sa
zcPB)bna;M1otkwj{cqb4$6f7^$27S)7Koz^*x@@*QCTjPQ6R9puu^m%<m94&AKL2Y
z54}IjRq!pB%#3%gv|nYpL-WkvXUz9XCRM}zmxFCqLxWbnjZ1he!qz%%WiHIJcW~%E
zE$33(#|hrHF##KFyo6|u$FS=6*WR`19qZo~(w5yg_>fa{d&+)~l-TiKr}kKgJgLuv
zJ6J(&-fTr3LpIcr$+EVdY-AnIc>Dawgf{Q!-{xng+O>P7YOh9npYZDHCYC%;U`6YA
zy*(QZFWTwm&9_-7*6jAZ4LS;BclVO~K+ciF!NFo^5LoS9GEM@kcIxSg+bJ`^#r~vH
zUcy&N41XXwCakFSZ1!E7RVX8V@z7<t{h1RF(zd$eAgS4A%n%yF`DkOku0X_VP7tfj
zXlktGq??j^*4*Glj<PLmZgOJNYjdW>3N<)Mm6?*i-mg1Gr+KTk56-2=_QH^~yN+;#
zbcy4KFo&L+8V!|!UN%*oquMMZ|EOUiBvX6I)Rc6l*@mBzJlMAONlJdGC{?u%656}3
z=V&Si0@)=J+5MQkJ$B5>k)LNp^+-4^bS&5jm8CT#P95J0p7rlI?-)$2_RoxcT0$Q1
z3~jnyq3aPTjpa1&a<aA!Y>Zsx)i!o^ZE?@I>#TZ#{eGlJ{|V{^$Fz#i1v_p^BgNxY
zG)icqwal-{<frNR)Omfu<izRp$ITP%lsCFhPD}VUbRD<utf0A*1QXHH=68(NH#S`S
zRk5L;;*Pu^%(`r0Bh|cU)U!V6b+had`0q#L`;$5`xROh_jeE(zJlHD>pMgN-ia6!j
z#w;uxKnzh=>;(wVm}7Aj3Q!v-5F$0_cid`-;R_23^uiys)chgMhOQbh1nrkhn9_+1
zu#Q);TuhwF2uC-kk=viPR1<Vo7UP32F(LLf>k+|nfs0E^G7OU*2d%BxQ|FacD_#_e
z{4y?#kwbk?(B$}Ea9LXnKR7q>$)Y??SZLUawB0tcIqWIoA8H{C2vrs%2)#vx9_Nh4
zchONA=#tO9!&X|<D)EX$j_W)C`ROm+xBE(T$A%_~&kY;Y^=zuM(ZLjkEKMU%6nwsk
zmBMXirT}ehGdCn1{%Ts?VIW*?);y%WJKWq>M<;%MT;3n%>g?P<ILLy%*-kR2j1b6f
zJUAHXv6!kfuGy^fjnDF652?l&iY*!*n>-I2_@vOs?_cSVgIUXk2J#UkD3&}du5Ab`
z`ph#t4^_0icuhPKof4{SfXZRTctuTq9hg=68zdV{G|q!N`ZKCv0Ud-Q!vu}+F3(%q
z*z?#G1v>l9k>VC%2@7gr)`#Te(PdLSj#BiN64pnT=ZiAHp(yOSVPj<ltZwzZHLYh4
z@bU4X+gYo_vFz<6Z{NMU*jZi`jwf7fuPI73a>Z5Gm3E1Yr|`Ehq1C|YJ22**YmSJ`
z$foMm8DbXp+$0@Wy1O_xXPK4;oKm|ze~@LeqY-M=47udDLB@D9UDUZn!p_xB<#8**
zEtwdwre=)VFNBiH>|CsWl9;RH1Cu1IEtkFb6|ef+*9jIMQI-zIJ`?@TG=7|7TJ5rK
zWnr<rzHV!69Z7^@@2#(_tZZv*+unXh<#tHG%MR{hgkrn!)pJLG8I7wd-l((1kZ?%%
zu@DDwDjHBYZa%n~^KNc7HKGY#%WUzTM>D?AKc`I`8KXRw2kno2x~DuHJ4P@zs_?_6
zxv*>!IPl6<uVU7*C=YE}>%1SOTQMUPbWnYti%+ytNNAbr#7X!hqbXeN^Vx0NZ+6xu
z^C{gDEW;xsk67|zo)j-GB9YNZR}!$6f8)^4A^Jcl)&SaHB0lwa*=<ld-sP4;JD2Me
zUv;EH6&DhnTcv;_Kny<!N+9bPk72)8{i#L8-PKM(i8xf6MO%qjSum{EvqgFxT-S}K
z&Z<===4ltZeFIdcf>W-H&0g)gA-0_<>SmGj!XYtfwXkr@il#=Of0OEjn;5QD)TwDd
zqE|<6SlBPgGThfkN170S*YF9S2U`wuIEoaz-AeL38o!=LZx+GxB@oVH*`;5}|2Uec
z-Fi<xdWn~$%>-l3lpk!kw~@Q3Or#e?Q{F0TJ9gYr{{oYpu0)(!dN{jq!9(M0FN};<
zC~u8eehL~dvl%$WQQ|aEGtz&OzwMzAMBvl|4jX8h#gFWx+lY{L{jk*>HNZZaqHZ!i
zIXT(e>u8$}@e&Bq)+4pE&8}KK*<XFVHsMel`BLp&9aYoHsume>hH=E~?C>nAWrg!z
z{X(t6a|JaBdf`_HX;SqlLAve2Tq48XA|IbSvu(k8f7P=m8Q37W1HOgb@cINvv&gfj
z{7uzEqfH&&0D_ntNqp-3WTVb3hH=o^+L}C50m|U`+S+=YpO+UQ`;2SzR)hk#`;NW!
zc$%g<XTgWK{a5cW7hKvc9NjWm6D_PEb|Zw!Iuh2F1A1A_C(7K)s{!emxc2jWLShwc
z#rb57{b_r-Q8z&1MWs&g)Y24Bx7;c3k;Z%c^n6B!WkpS${tD-lDfJYr5)nUcDvZ2r
z!n-et8vutK=!vo3R%is9b@eQJjmA^1wJ^)?(&w^aicVctcuD$T%!g}@3l}Ac1D)#R
ztdEpCYBEwz#}~9~!XPo0je?kKXkmsZQ-_)rlv;eol>}|25$Wmo3F;nLWF|T}nU-&R
zj=Pq`_4HVnpisF3aD&J0=qf(%4-O+qPfK<Vle-nuOY=GSwIe#8T7I;O_{^yn)O1|!
z;F+_Oy1wr*!Nwf24qZ?h9{*h${!qhlv-tSHnu)BS61QtD$Mu71bI;I%g#i2RN!;L3
zB{&R{t4PeiI1$rV{D(796;gcH{KX>z5@>9^9Y6r|TaknzcNBi|B9tZ<zCsIlPyP3E
z@<;BTXQ&Wy+_BHI?DU&aH(B4OV-Fp+f1|P`YpcJwG4@)2Vo25CiMzgXlB;<s3dM4Y
z+xSYL_%ReRu-gAv&ggSN@Ve2X>KFz%RCQDyxs3tn+>BPw`0vD#2~O<U?etpv{ic3&
zv>h5(GL5>MZ_qm4Vnna|L@$Fkr@)pUx7HNJYL~G4Afp^}$*}$d*Ly%os=>#BR-s8q
zZ$sWw=~FC&foyGrTv6P?2hUwDBWvbX@mm0@(U(py8(2%7^`?)ENvwb1fV7X9&@sSn
zQY4ym3{z#XsK;c7TM5j?4xU7pl?jO%Eb^q-@KRTkIUGoKjO!|u>B&Qkht-Yy9*4ZH
zJuQl}lr+8CxMQ)240XW)&=vu$c95Sv^GG9eJO##MQ*I2@xz}GjsAJkS`M$%xU&e}?
z5eGkS7|A~JJgklLHd3B1;q8svW*c?vQf=>zl!HqLZwKTjDUIoN*~r(C5Sn)xWNrw%
z_E*=Vk3B_&GLMKOrJz1NwRA63Ooro|r9Y099QiX#f+{B94ruZYthFEIs<vRKQJxg9
zUn8-_r3k|&;hP(hGMiX$X-IdGMehUinBmaAe%?8K_aJ>K9Ez%LLaIZKea+aSf&Jly
zO8=aZ%0eWPZ1eT}fe%cYJ}4+dHwf5O-*r!J;TU$s$5ir=Cn|elr^G&G!^6s3fZ3Oo
zXEbAjhWP@^vmWm9qzo}TALuFE4Xshr&`7HrW{Y=b#EFi4n{41$700(5kyEm?ZI=9l
z)m~Fu+cWv8;(9J}v+XcbR(lkl!4<uoRS?!~K)tWbFLcP1ad5N$Rm>$8=p{}$@?>;x
zW3p4Zi{tLlz<`;Ugj)wAPI(9rX``Xf^S$%Cj3VBRySm1_Q}cYteP6Gy-%^q(zw0hN
zGC!U)i~kOmy!@JexY=YV7U;sPgF2gk&1&Sby)CPk52V3q6XqX)s`1PmCWe0r#(mx~
zGVPS7&WC{9lFpqXh{aN9gblDy8ZO^G;Ql<As$D*wI1n-P)4d3hbIP5GYqsQn1c$&D
zc=vJ?-WXx5yP_u)73>mU+yMEwiZ=S~cGr~LYnTs;8Jez~OU=QR^v!!?6S~&zRrAVm
zp{9{`nTk9wH@9<Kmp!C?M`-u4>`*^fuDe>Q>x5FnBXUFc=uKLTGRQAXv@uV=CLHOc
zAvM&n0;aJXcN<xg%-+(o{dPg2Gh0}Qb36ZDPHuKk*l<|1oB8I=Bp63NQDBDKahyBf
zfU8k_^>W>v-hsvvi-^~cM850P%}h1$J){OrcW>jYTI+FZ`@2<cb3IKKWMU7QSlo^<
zK;pW&U>O=2c#0Kp@X}Q`EB$UC6cmxb0hZ{2^Wi<+Cr?y}8xgpY$!fYr+GHrC*^Wqr
zeZULbi9iJDo0SQ5tzDLEk#?)HNsd>#H$WS2$}9_mQ<!@Zirr@G8xy#V3-caHYm))k
zRe4=a%()e#D@gyNY}e=9_qcyXA2)wlYuD4#Cd)^XRk11;SAB#A#Wq1KKGxqz%Ea~)
zmcl9DySH!2BU8m0Ov!Jrh9QyUmZ%V*F2map&)c_OiC}HJ6Ik&@)Yn^Swf{H$rZp2+
zE&l`)8-3$#=x~qM5Tfm(B<oI}f#Q-`O$sl+#>5?f&W)>wJ^${lKHU2o<}sapC@R6h
z${Ekj<@Ba5vJu(5aj}a|a^Iqb@l5LXCSh2aepam@-=|E)d4}e4ROl91vy(>9sN;ZK
zxthjwbqtlPNAJAhfMTNjjE(O+3ww^iLiHCG6%|!vI}7SAdl@-NxsG1sTXJOX%>Tdz
z`86EaRIO(e*0ENdfJ<&*l9&|=e<M3*Y`NOBDij|H5NGe|*76qzw;C~MIN1G&aOhe&
zH|&G|wh^j|!m)2@-DHRafoyV!?3O4~)=9L=mG5P#1mwu@N%?NOEi3o_fFTAbN4($8
zzgl!cZhRzGDC~s|)Cl&%%!-UNyAv3klQreYwyf?s6M;6I!yKGm(S8jL4NVkwt)c;>
z9re=V?FX!5rZ%=pp83kPInPQ<ODBCQ3k%=Ls0r`^v=)p2&$I{DdL9NyvJ%$jP)9@A
z6#b)3-^WJ)3#fugPD4Y()zuXSE5-fls;{9@{1Bf3idPDeGHh9PHum(a9^$%T{z3IM
z65PU(yZIv`;3TmRpB!RUuEkOHlFQA6hJ^EJvh8y*P(vPRqtZkgwSdF)*38d)_wE^i
zBkv}}CWdiB+bT0rIps_Fx3CY;)rWPYDu%m9vb034Vp#({J#|Y|wkv%TRE_gAIgzy`
z70-!_?c^iwk<6&;>-QBd8H$REu53(@wS~k#4kPR$v6`%kLjo|zbE8rQFK+REyTG=8
z!$8wf6^E9-sfyYNso}ShySH-8899>mnV$W;?iqXfvak1f@^?T^JQ|{#zn}zx&J<rT
z0AeH@kPREMqOjQR$N+L;i{$6KH$i^MZ!JhbAR<761l2cE0-EKKKF(JOK#}CWQY8KA
zMJ0`}f&bjD1WuoQ9Cic1vVjiJJ-2dXD&#(GU5cESj#RdZyPaWBtaJ?X`r=1@s^1l9
zC|Z>)5tuCTlZ7r#%jNdi<eH-{PeQMw_nzWOE-R&V<i<YhSwh28yVC&qdc+|P1kJ&{
zeL!=RGYrVDVYloVx+ty>Wh6T|6!~5_elcf$VG_BocH78jJvKM1n=mN~PySN!$4+wX
zUVZ$Euwo)Gq9H(+6Ko7c8sW}VDli@j&hopg7vWM?yZmWo6{oCs(R~6q@;qiwU1;x2
zVd{^?I-(`B0MF}U*|k~eY;ZEn_b3duwNC9Ny?wbaQ$H^|+EGw*5Dekv{^TZtf(yCL
zpZhX_cjYHI!_HrBBUs+ldwGNVIE=mZeaG}YNokyO&vpj5Px)AeK_G{g?<0bZ1Txyq
zjGxri_p0jnUJE^QJUMCc-4aKkX=Osse=|jf2QaHPy37v~LYEj|Y%d~t<dynr_@%?m
zb8tewCiaTc#hM(P%(qZqqydi8$$5sf+*hmM!svlXv+7gc#KsdwQv)o&(FyM9LgkTn
zDJ>VB!0l<^3}8^HoNmtz@0YQwtGn8DbWL25pB>3abqw$K7)xKYEM4f)Ty78>mtv}T
z3va%ji5i^$)_IDlVe8=)gv)nOtO^I`daM@2EjwNG%0<fQ^{us9&alPY22MWyWdA)m
zNv6xrbE}$iZ6nV`M89()yCmX3f~jOSyv_dfPmpg~%n4Iv-DLIUPySb|_Yt{|*A04V
zUiByJg!<>>50L|rQ$YidcMTlXU+d{fL6;G&yfijXkZ5%+804GFuDsBZI`8K6I$6a_
zh@p%isvA5ElFDgC(&_DxBf_{StN9?1&ehh1cPoyGTt%n`9g`oi9&1fBSRlXn-GeWo
z$jJ+*gExz{r{d{%57$K8)=HBJ?k3f^PJIe}a+#uheo=qc8^|$23#InnWHcT!_IKrB
zT`#aL#}sMtbQc}0d%tY=I9V&0@?JJQVI>tQxs;k43eYP0J`Q`Xg*+(`+dsUt;A~Kn
zSXZW>kQhBcKAEh!0RqwU(?@R@VuujP+XNpT{60?>blHimKc0+Em{U<$>eM5R4)b0P
zOaH3QoR$_iCt7Vj^kYPdT9{d-@RGcjeF4hZrhC8fp2?18-p%f{G|?NlAW&V_a>2!_
zO5xvS3~{)U{Mq51kvFcEY@aQ#{>o)Oiv!mS|E$c|t3@ety^cNLM<1{64d(CN1)laa
zuW+vx{Bs$=9JoK&zPe2ql5A~dx?b&Sz&BgPM6_3**oP6(1JzLfM5zIVl`@|dfKPnL
zBoD^#fI#9ue*<4!Uv>Co{4%+^g*an_1FQ{n^eEsp;09n8KwGTzWEd4-v-t1*$F#89
zDewoduiWaqe>2@}F}ePo_r>U@_zB~WUas65(-bu0JSzf5V#j-kLMNfn{xWfg&AF56
zfqkFZ*a9%P-*@fsB8VatPvjD9Uu_IKcrO)J&bK~shpz5yv~P$!Uvy`Z6PhICc=ly5
zQ?%Cb(7qz}3#9)X<pr6{?W+I7-fOHes5CEwxiqsMnyK~_4|kXEio)@puQk@J9<(Mq
zpA>VrT*8x!N!BnAUAEUg6|EP!_=UZBnQ&3J+K@I$y&D_U5@KdRBGJ{hdkX|I#z{Hx
zu$);EJ1{>%*C`r{@3$t8qYkny`e;!0>N1&nwo)nXSf-91I+7K!oeOa>T4!aO<|{dX
zz}mlSr&3)O=|+p1!rbYcy;$M%)qnc4iZ<`=x@YyRu*{~Of{t@{3d1#<`lZaN7odhR
zycq_W*D%xkIwNd*V*wvm47S+ik@52Iy!*=9SM5_D=t=G=fe4HJV(S;iJD;XBTT<#>
z>ic$YWYlu`DDzJcQe7A@=^V@#8~1ISQkQu0P_1s7Qx^*hFQkn-e=DIDI1?;)wqMB8
z{EQ2<sec|-rH$Aa{6&&pw}yyRiMLuUs1rMzCdU|wq{MqfR-z#D2Iiz1hIw3HF+HOd
z+U_i@f^nI+J8wuVW|xO~ev?3aVRrZXwNa0)ay_-=#EPD5{wT@L+Wii9F!6Y0Y(@#z
z4~RHl=kOeNX)%K!Qi)7old?xnmS3tN&<{vkHi`&ElgPw<E8FLnzc2>pk?6{i?DS(U
zdwIr1kxCGU$oO1uv$dL=++B7YkwxI!20!Db0urR>xZ)D<`4!CEYaO+;7OfXm7DkMH
zr1rJ%SGk;=BuRx)U{4sx$11d$(KosJ!dwr<oO>$OBXrD6lq>10>Z_8vPi>7IE=F^>
zWx5Do4yt-DlI8zd^(f#1jk5$Q4VBEOeCM%&YV>DilRKO|74~xUkfm9{0j6PSfJ&Gu
zRqjDHOM%9>9>)Eoz%(C}J$(wR6@MtH67{}uATy17>1HyQiC!#Cpt~zZ3YBzXfXJU`
z;ZYwuXe_8tM9qA!n#PD7fHMR=x82N7Z_vv<BX^e1_nT|hJ!pW=J)zg^Ouk$h8(Lxv
zIbfx}joL|a8KGa<Z42|#b!Q2EwMw^n{y|8WG%rqI$6=$8@WR~b0GKy-)&lsH_le2?
zzOeMXjb`S%P|C}s$ElKFDRA?By^bTfWRLj{Lh+;9hdxbqO&2nbzc9yND<M)D;I0hH
zEJp)|SQCdMO%!_;q?Qs&C;*F(df{0`K=D(EpI!<Tq5P-dZXHMQa#WsB_kR1X27vS<
z7xvNI(Te6^y8?|*C!=L_Wy6G(UtzWVv{cyx-4X{KZ%N9FYPu;TSeS}gQ`o*|x*u=N
zI0<{%HO>)Nc`L&lhWb0s#$&T1iN7f;8P=y!5B1-#jue7UD&wUX$%%gTkn@CeaxX*%
zc<~Zz7^WAAI&Hs7Y8Tnxtv}i5GwzY;38qdHVnRf$9=!yd9E_`Ncfw?T4*oowEzjU|
zUTT<KxQp8L?w*c`SY4ZLWiC(S2~BKkSD4Zr6MQZ|cQ0B*AjDStORrzh&#W5rkmA(Y
zaau05?&j}ypYf`=e2ngBPAJ~u46XSSI-T>>b+l70+HY<R8kTHrpe-E}@Q{Llz`Vf7
zd~70c&1a7{dc;;EI6-|P_+E&Tqgi|l8y*k2p7wYpuO;SELk$ru(W%liKR&045%_Gr
zdy!wm$G@;bC!?Ag&&NM9cc$5i`E%09yHR>$<19t3I)3a_6^QEu7Fbaxn(9$8;XGEh
z_=-(6<JaIE;u7`p{tWuJ<*KgFxZm8ac|SQ*;6`iZA-d_MJ{VJ`u)P({niwi~KFV4k
z&R+XP_+vRbvW0C^R(r)Qy3c!Ps01yrAD`*!voj)Y%zL&%MX5j)Z!hmNbs>Yfn<Oyj
z+#;lvY>^R{X_X-4xfewTjYVw!sWNuaKy?pR_vL>sUsos59SeE0_6=?auRLaU(y~h^
zhqaIBaA}|IskKC<td-E4<%o2wosxDq&8WAW+{j+7pEYo$TDDd$j?evIW><+q#pfNG
zhflHLo$*tjqXd06TKQqvgT3DwF)B?u4W%_ck$7sNFazU0s7e0GZ9TMaGIRCvP{x$b
zC{Esj=y#EN)*$H-P(8k+n}*|8n}^BM!>i(h#<15=vXz$@>~#OEZYpq=#<Yj?+~c@0
zm&jL%nHN>HM(<_e&)~S`p{g*?R_@|u0eX9=t$z&%>}#{9YUSkQAWUU<f><`&<B57#
zSd!c9z(w+-Pd|wwvWhNyZix~ua81`={u(MyYR~=1uM#;pCN$@6Ug|P<^dvq(y%db>
z9d#*=r{>d6=Ym;EqKo%Ww%fJ%Z<Ku;a39uusx9F{PpqcmZ(8X?;odo$(X{<%i7XTE
zGAG-TtAG5A7k6xa@AE0QQ_lF_V@=Rj2W1M$0=3T>Vky*1s-^pB*1}yr7wr*Z#`o5J
zQtH1d5d(f``#f%FO+SCmq1-V4K0Z|K%a?DHs@_PE?#kn~P4UB}m0azt(jui4UGv03
z&Vg6*xg3+nR{M#fsiQ)~@85SG^9@Y>A^X(DgXm?^w6elH4o%jOlo89biFA2Q7l!tb
z&kyJyqcerBFuhr%5*{OvWlWfn@SN?^$@Nots-nQkx}s@*tXLE*uYIprsdO^iVdJP<
zcPS$FOK)53eM1S;@Szi5Xr?BN_?s5i$G0tcBIXqCTk!Zw<v)_EX}4NDDm(33`fu|}
zvwpDNiYm$<W7BTI#2OohCd(rgpc`tG3uUWs2nRO2FIN(72?kTQ>L)koy|~&v#=QAX
z#TtQF+#I`X%_-(Q{~1=layO{7c4?aN1HGAO;->+^y3tE7VEI%D!s;S5=tla@2e!RW
zpSUmVQ~O?47EmO2-qSopIdBhUoH-q6zi-gsJS$z5WzLizlHt{K^d>plx@D}ouO%0=
zR1nwax{)nEq%G~aZ0x0#qu3Yqr90pGe1ykPNsBvKc&E#+I7-cuH2)dbhet1wOK-c|
z<ri&IbOe7Y-BUt?;bQzxz87m{!3enKs_)bC+UBP~%z0(9#C95d1%Nb$klR|b*f+Uy
zXInit-X(~e-Y|DA=_)Za)~7g_=c=Y%MmL&0a*8DxiIG0&VRn7ZO=y*wgYe8lTs{^j
z#T1@agIP7HcQxdKp3Z1{J6mPM#vWr8F~2FBA_a|ilbn}x`ceZKDSpYHu0YzE0<J0l
zH9Ca21JC~l-AvN}!z-M4oz`*``XDI@z;ed;DgF-tHW>DAve<o<n_^D`DY$})f7v2N
zRFd*9n%p_Mf_&Gouwm*64FL`Criarb0hj`~^$Jzikx2q1|9=sr)_>^cA`XB~rzAfU
zT#-|MA}XLB@t@bkbd2uqmgK*{s`<mmw?QCZPk8S26Q4%@FIa_KReRS7evN0tzg~5(
zlt_>1stXUVaOyuDn!bM%C>o%HT<6oU{|m|fV*zw|#2TQ-XaD(A_wNX}*^q!EfrfA3
zCj)J50X+tt{kcC&2z0r?KO7AB@E_2P`G;i}0!aL5j1B_%TitbUbpJAKz#)H~du=mL
z_v;FRi{sO90mA{{`ZYd(0YK+#HjW?tZ>RkWcK<c_$6^0Q>O~JJ06$$*gKG)Ee(L}r
z7+d8;e<w-*|Fv*-HA$sJTwGV#Mr4vvKzm;Q^(NII5DsBL(O<An{nr!tG}qq#J0aI?
z6#OL{WRlm@`8RdxDnIHv#c5hfo{a&ZB>!8{%WD^6VXg=1AD(Cihz$Sx5s+#1_R4Pn
z0lH=zV}D&leH|8m`G`OE%75x>D1Sl|1bly8`PIvH?EN!y|A-o79e~9ZMe(!$Z_K7%
zF`$2sAqs04M)9Bd^;)@}-+$2>al1y7*rtr5>E&&-MpoBQXn<5=*I`zZ8a(Ao<f5C(
z*s1=?0W)}Ny4a})*IyIKTaz|7<M3V2m^51h&nA1rr=|N7?767;*}(!iNj6SkW~;T9
z9763212rP!fztHx*Jwqo0o8ry)ytCxjrDujq#DM>gFiAhXNyr`{FS2_MOLh%gwCP|
zW5p_bLlX;0qt8%z*5H&yGz|-rFG|NmYe3bE%ap~yyzgdlbEl#k@z`yULp<)xqH4=1
z|B-=N#f+h7GOs+JfXCYYdupm>uUv>s>#x`ts&GBZwTmd8&g`!qMz=XQ=%eI&(xuWg
z>;YwlQJIAm*3~W(`wEIpqQSy+Bb?#U7cRLS{NljpdS(%tQM|JA&$JnS%SKB^g{@p3
z{KhwOZ_WJ}sLX2O=+Xf8cbDn7hZ^gu70C~zFzh$)qID*n^qdwq6J5wW2Tx7KjorTh
zrjf5&2Wm09FAFOdi;!yjl5Xd_WZI0dRFU)V7F%}iVnJ8hC3m;yM07HVkmT~+PyM3X
z@$RBuV)bQjMsCzh37t*go1658fy8a944lF)@bTHGblUN6Mfsl?qr&9*Vc|rtiH8(i
zei@6NLVkT6era{M-6`az1QEPI&oV~OqJnp#QdxgFD%Y;KDYyR?9Ohp+a#A-o#bd4_
z(ZuErJ+*kH&HG|yAbw^|FR8u^VO3=Y_D+nY9-IhRRqU8X1;}eMpz;DWlG?>J^<dED
z+r)VzblH~2)i719+EC;CaZND7Wc&~+!wGgG?#dGZH6;GXT*MhL4ITa9>M-4|hU+)a
zsHwLOr+l2`CK`>MQx9Z$xH*<VWE`YJT(Oo+%T(EgR!nXpz-;eCi+^?gs6G1?IrQ@f
z3+WOG377AFY*@(Zrf{|R0@WE?IsvMN=jZ2yd5QLv@LYC;L@*n(%Ab&Q>81(aA!-ix
zF){Qbb!0D7T)!Tl!CaE*8DzN9UUf7skRU_duD7zMe=DbQ#$ofpJfvfZuZN_?!r^gf
zW);k0joPbQ&P^|Rt}Y3K+R01`HG6=krX?T2%L?+F0*5(7N@nNl7Nu<Hbi*Zsvt@57
zZpMD`BH8bM@Bo&}&oYCfqW6GUXHL;LX9>&#`(0Vo<^RrPzAt@$BA-?Z>EEjt^@yGL
zPxy98=90}Jk9D5VW5P%8)Tz>0QGTemUUiH80(qf~&^rdzW~mI-LgpfTRO8W)XEZ;5
zeJy2c=DB#AEA1EI;zKs@IpWLqv9nZKQ9p;N?Lsca;{tvAb}k>rOF`g#%U_1~h`=&e
zL<cNUW8iN>UAYfT22nA}Q!s49V>tyA5pM7K0;ZX<Xyb6EI3oT~;ao<pQ;#&-&9w`N
z9!l{?M~0Wt=I@}#N6igk{Vt`WNBXzNd7f#G&GZM-Xbis3Z@D8A7TYGSt0F(>x~=Op
zcvl=s)vH<AJkxEQe_s!gZBg}dB9G84pIiM_hFAT@sXqU!N#J6VTIeU2#DzX+ngEcP
z6(1l;KJ{y$HMAI6wN>IYAGs{z6x8%T5nS#XNpgAY@z#<#znDQpQ_oh|Kga#MswKj)
z*nEO)j^X#<ki*B&c<aMIrjnuc=Tx4QTnH!6`EW5-V=aD&!&(K_%O-yXbmEz<{p;B3
z$t>LZ_uL)PXaY+n)t-K%v8=oN!5*w{^2B7RqDioY<2URNIciF7@-D1zj-NAY=rbcl
z%PKDe5-7}H<T-=?guKsUX)NP(o0`Pby_?A~pkGOQupb+wbT^n1e6hLgCQw`3ZP<Zw
zI4!!feq*LYOFt=2r>6T6XyYkO3ExmgsWd@S-CnL&ly|il3%`jNAI%R9^NEQQF@AGz
z@7+d?h*Zxi@jrX1E)`Wfg@5{#N?qFq9wv&dvwbR@-!)7WGBmE$Kkn=#<R6+q7z8G|
zomSUUQES0*Jtgx|w3NEV-R1#C31J~q#ix;h$t)bH%2T?HPQNQO7SOwe>ZBdHQm@}3
zB}wwVqT&$|x1FZdXglOZ<5NGLtl04uXBHXW+obkV=KHhmc2w%5;!<8`tefM}-6fHM
z;OKr|(i_>$mZ=-T?a-9e&;g!3W|di3U*9~-HZAnC#<TadW*L1JZdG8}ol!XVX=>XY
z41?^z40T6TkzQHe18l3Wm1<f*AXh(`3c>zbdHeqNC>7)F-p2$RR(kuCGt2$@JJ0vr
zD=#+{KhtJYM-#<q_69JtENQs1eSO~ZOcpxvi54wPfMujvG8y`5C^sTDyzjj}y&1iz
zDkk4!#dN2W_cFSaAa*$_Dh-;)xMct#11okXSQZqE70VBV$NWiq$!v1bB5Cju9nk!g
z#gN)8zBI!2tCV9OjN+}l=5BFWW8O#kXvCiO@hU-sj*2+~c}Wba_{e;6#&{vD1stJM
zjbzrqsc9`AvkGk7|HzMQmw-<8U%>GfDv(~IwEq@1e2RL0g)jgZXp{|D`vjx_K<zIM
zzzh4o0-}_g7l72RVV2kG{hcc?_!qkk(*3&99Iq?&-MPH|5Oi}EJeY_44kV0&KyuQ`
Kukt0|eE1*w7RT@a

literal 13842
zcmajGdmz*Q7eBrdN-e#UF0SdG>pRz6Mp03&xkqjZ<uaGK&rm`oBq5g(LauY&3^SKd
zE}Q!>HYyu)i(#1YoqB(MpZDkY{p0)BbFb&?c|YfQUXRB)XRnM5w1GSVJOBUycvt6^
zF#xdN5&+nD?jRSt=Au#wg<YKSy>01h;_2)g;Nar~xcS)gk<;0`9u6)}#!e28gS@{v
zsQ~~A)pu{*Gz}b^p9u02A~;Z&+cQpgPjUqU&h9(jaQE&7r*H50bze)3+FDDCzN$31
zI9F0-X05yvL$`<<8@rdGf%Gw502>!RCOo)o9mnS))nVcO%}4So5}c5ubML|podf%R
z0ldi(j>s@i3J}UA7qM^T?9CPCef@+Fv$LVB;E#+SP*2<F9SRov)`z|3$#j4jySUM`
z9{@OOzYhR7R?dDbcg{9_t-Q$o6`I3+7yt+l=lpk@|322*L|W#tdo@wRr>|d-WOvZG
zcI)83+x{8PUyM@A0RU_Wm4CHhH`;mh@)*05OGyNK+{v(}6>^o#Hg?pE|J>;`a$h5P
zlvG!+bw^lED6V^9q!IDRx@$4bn21^38mKZE;3L$;$4=UXtqiXA_Zv5hbiIE4+Eo5H
zJZNUeP`<>8Yy-MXfimk)b`{cFxkZag3c)YS)=$ecu1BC}Q@=gm6*zccziv|B$Y3^$
z_d?MRziZes;)2h@J^<=&(^h-HuB*!FBbO$kJVWz5CfZ?FkH69b?R-t_tKlk19W6Aa
ze4sC0OO)_HRJJ{;NVu%AnXWIP@V0{#?69~{MsS(%!AZO<aS|159))-sWU0_!mwkJe
zNbpEiPU(Zy$43dyp~|)dwuxQjbSUdfJawGajrOayyl_D3PHx}wEw%e$t7Tae$T3H?
zH4HY>A3<;Eq)B1bHIkB&9EXO6EJQ-c9U^pk-Gnqj1mGpNe^}+sv8dLm!a%i9v*yAQ
z%@>;A8g*?PP?B&r+D+wvbF(6lF%X5H@nK+E$g?9(_*s5?d#MCG?C;ZQ#YIH|zJkk#
zJOeFz)D@p=F&7UvK&O7bg^DC@ihTthISjVfIeOIYG`PeX)}#Vi9C=fQ(zL1w&kO%P
zJUYJd(>~JLu9(M?l@d&$zLS&VxewM!@2*d#GsYo?8@)SBD-5AIe$K!CAr#Q0f6#KS
zPyN9DXPipEx@&<Z5B5nU=o~QNucGJjMex-O^%R3A$;tuU2P9F?vb=U5dVlt!Q+g8C
z*Vj9}E*!U<-ImzTugk;569Yc>;9(bgwNYDAVr%CLL&vpcr_o&~D15)ZzJ9`HTk20&
zd>(TG^{xtHQdLt^<CuEZ*!R?;Vz$Kjr8u@4oZ`au)Dv!G6&zBspFS`X7Z=ybVlq0?
z=ZJGA>UJpN^cV*K+yGpbYKe^G95AqH3=R#HTGAL`wU-c&;lyuv-91dKShz6`G`q>D
zm`}s^^hnKKyFRX3F~+hzJ!9MZHZ{scH&Wt(mDRnTiv_3J$IoKY9FN34wCX;xD?NSS
z<7=J{;Ltus&1?JHYVBrR0QVDu->qMya;g6<KSot-V3g4?t+^H_C%6L3^7Ea6`y{3x
z?rt(G;@3{anscFQ=3mu|xpotwPPiu412KzzZVnD$u@kS~gOrwHQJHd6=B;leJm$D0
zAte%8RBhMd^v=b?hF)@>SIx&wb2Rk?u$BNiaWtAE`-UX4ZqAGPTQ-L*m9mI4=91FV
z`M5^r*kpvZdQB0-e=Xzh#Mz;kcVqxlOo#{nl+>TC6`jLY!qKfF1cFyVNl805dq%1%
zc?3CZQ_*EXK3sgN*vJNbv+$Ao3hkDojV?@?nVt%_qAjSZT7zrhaJWrTQISu?YSWiR
zvjejOE_UgDbLy#KM}Qu#Bi95BZawGkdr2lN_}8ri!im@IpXyx3Qorn&A<$yq&?@6f
z{e!*cc8lszCVot;s7*Gm%5`W+;k>BocE!k4YqVQV-;-W-(U`X9;2(kwV|IVt?U@ib
zRqv<kGOddU(<qr17~kqVWJ#yfuY%eyNgE~$mRGAqL@ml27G{L!9fRv#GC3vP2-<F%
zGE6pe?pf}?)-v_$;m)z_mNe$UD2}0uwOTN0poSYTJ{g`=_w2k-nnbR$9FH2U$0)+B
zHC`Y9XabD274R&P(XbbW&TXc4Zx?e4mdX46RQ$>x8JEb{ptm88+3gVB885Rm`*coC
z^w6i1Wt^zgSsraN+3=zQVs^N8L>0LZUq2=OQ~fy@E)_WU*xA|n8%)wxcu|zx=l`jM
z1)o(<Hm&Vf+U%5yfJZB+g!<)VIJ7iA%lzc>E#B0&iRaF_gmA&~q7}q5(SJ@-P^cXI
zv-$gSpw~dY{?v`z7e=7jE>_JQjrnIki4`r<JEWIJmmAl8)(K&=6Ps)shaMXnn?IJM
z`OwD3=5v1jrR!M_i)Q9DG$0_5<*TBo7qhUtq^(o+$o#9uW~nbFrKF?<$NFoGnuJf!
zi%128x!{D;yLNqU=3lOCS(L*r`W@+M6Aus>9-4|tn{0ebhUPiW5DT`tUvMbA`v1<<
zQpxw|t0-RqLBUp4q_C^$M;|juHzV!f0?H}M$<9$b3w-*w?qBx(p%MCG;I3q;gi`CV
zB1HwH#pT4iavd?caAX1fNlPiiE4wZw&(z1;+5b^np7aTD^d0G^-=f(94!U304g><l
z)-F(Z3ADOm)I3dx9H>0Ku%J<VXtAsD=I2Z!#%YH&drpa>4K6XjBo1il>ZS0YHrwCr
zk%NQShg5fXRcz?+^OWiNCCxB`rt`)XVpILTF8PLZ!GK}?H-?gR=OU9Y)tViNe`wqP
z@G`TvXpK;XMJC%MfhQ#FIa4Bw^L(SuWYyJum*uembx=W5ih`ko&{{V_*~kutF?iJ-
z?IT^z($peA5x_FvHxKl4mNZmT!eVb@EVj5D<VW645>5lk`^JAc35-Ye7rs(5>kuzK
zKOpzxFzMSYZQ|vvbNne~t4C1owDIcxM$&93Y*@9~YDy1e=^FSW3Ap?-#HSy~w<Qqv
zN~EHny4yd8@2;Dc+(=v0CRCKJvSwamusP@6zP^=H6|fZcw>kVXq8li4nG&D1jr!^4
zxpQ3^B$v=RNX!9V>4}wU=75q;ZTE7Al@&E2gUnhRtd(jy1|ytWO9KuXt|2;RHu7He
z#0vN1tq%~%dEp9Fo6MW7{xpoMr)PXygmAhY^hZG}_=C?%Tw=d}+W7##pDj8juQvT*
zDZ%p>ww%bv%mQ_Jd516Y*tE`Jz@ZBq0IveB62T9M!LPJz+gOllynJKmcWo`#j|;yt
zDby#G%t&3AJ8>c*4L=*}$f~IssqlLgJhq>(z9xkTbb|D>Y;TvJBuJ)~nqS}jaoO$z
zw163#!^mZBUJlKDN*w+k>t4ZdTYM+T747d%M4?nNk6O}7x1v2+_(Ha&GWq<$ua)uw
zsy>i*3rwElN}hE0Ik(ce?2;qXxWk&kkMG`E!!k$hiem0KHv5#_)F!Iy`|`ej=;iy_
z^O2|aEUUr$J9?Hzqh(Cp1QM^>v(0Fv<KfbtJ|n-Ok(LjXrx)q*xl`Z!D!Tae{n|Lp
zcbk+|)jsgO^@H<&;xB)0Aa6V)V7uf;cM}DKtIFF?ypg$Sc3?kPE9~P=k|SQPHkQ?Z
zI(2KGyYKc&_u%{&Ju@f2KD2_>&4(BZ691Q>8P~vaSpi<NJFeg9hv^BLS`O0;yVSF$
zE1|yNk0WVTt<0MF8xTlUU8Nowr;E@4F?zx_?FJy<o=!jv8As$%tYt1EYZ#9XxR<Bi
zp?YOVDeKJAEJ%4<H;c6}tgr83Ha)nzGqF@0idY&9tl-pUN@L~TiJt*i>0a&*hMrY$
zFWBPcc74RppFP=V!>C!e3l2C7IjT#_tel;l&D-gkXoW8@z;@Xw?&@K853TvQN{IuN
zqxUPk8dQ0xgk9eUsFj;|kG>0bH0wk9Szsvpr}3?osGeD@FXdh#ECUn}A}z;#MGz;y
zdrwS4!2L6Bb^XcR=S^!#3U4u@@Ws+6qNSy!{B@%6OAip!EFOzA`X`Y>i#V3oRxx>_
zsxWVGyIfF6dT?;?;j6YsiKI*k&!d%$6TYZ30r-H&KEWF_?DmYr#B}CBSzNsWw{(u<
zsY56Ee<Ze19sJ->$Y}qex+oq?8t91R&<9(%zCN*N;@D}kuRZB*E}^wvvkM8v(}M>X
z-9m`xbi}#lG;x@VH>fP#jtKyaXM-%2w!(Rg-n}GrqzPC(;xo}Q0iREXO_W6|sQG(W
z4u+BzWs9Nsv33Fu+rR&9_Ujk3o1Lq+9$!6=#l^?V;Cgx@xun;+VJu?UwfU&12aIdA
zPF=}C6MB|6Z@b;mH!zTni;b1i)6;vxyy%HY433nA^q!PHy523U!3tTL;^6hPn;luJ
zNk36`0?Z$B62q+C7x1Lov-;Bgz%!9@)b1?{WsHS?(2>Zv*LnBkexggA3_YADO1ICx
ztGo$*@+s_7MWf&7-&0>}tj}JgW7&38VgQ<i#sL8CP2qly+{*oK=cQ5={qeX~1%yzT
zm6jRA|KMGO+aq6cUO*H%49~~OSRN+Iq>?0nRijhqRd?^TYERv$N!^$iafuX(@>#rS
zftxEd!;*or&MjMvu<ZcqxP2b~w+_*up9yJf^roaJFMrEd-D(5!`0<6Hsg}sm#l^+h
z=H}+j!otF~hPO_^)hFJ^Wo<2QwsNc2K5C+kAQ3aMSqrZh2dW&aB0DoToyqPy+Y+j3
zf=A7w_7@h_k_2N-xlpLZS9WJ;3WSk*(a77Vqx;YQNVz01mx2%?XQfVNp4o4^l7V=z
zsC85NgwFfg-N`lEe-xEtxW`r0c<T-^uBiLnK4ld6KE7vue6YnbVW^SGRkv__->8^4
zv5A`_!Kn9D+iFRDdQ%-L-i;jHsE_)X-ISc1+?yM(UN_sDt)*a=<X7=3`}M~BEpZ{A
zR%h5W1^rrTjSpN)8)~@7Y1HG;$@@TM_r{aZ9hw)}%LHbvRmh=zzG4!YJh9w7b+`+>
z?S8qgo|$^Z*Y>gj_5%<_3ZLdG`<Og=&|>gn!x9nmBlAmM^E5-FnqJN&9ROS!3-x_)
zMM$9WQ`_xRD=98Uzp9l2kE#y6Qn1rlTss1=#E1LIjd9n^s(_hD*egw4t`UcpE-h-b
z8_$6fIcnVHh29SZ+-=?1*9T}-iJ2C(=DJaj62arf!otEyyr5O1iRK7yH%hyk028O0
zNgq1sa>4vmaiMChoMq6;&n%HDvDTy0LF-OYGx?M|1%mMYeY#^vT05Sa!YQiS2lM(A
z@F-LaeT?U}PgH`;Lp79p5SNWArzFsgOX7PH>3NMiDb*&R3*$_(|BxDO7O07d5|bmJ
z?LK5l2=2^je*IeKMF=Ng<RzGPVPcHdu4AI5YnoU}Cph-IlG*65%Dwr%>a8U7?XGto
zlZYPdYqBie$5&NU$?~HA;`o`Y({GewZM|QURGf7OaFpn!-AxWK=9WUk2kedFVC0F0
z{ruDV%5D?yfa;tY9L_n=XPnx2U+lFMQLuvOz1Aw8Ah81Ea6Ky%cU}VDDzIRuI68r8
z|F(C-_UX1p%*x2ho73kGvx#_+wYlMku`0TbpL0tMO7hahRXcULcVWbgvH-HI+xf!f
z9=qLpbc817qAu#Mt7jDy6e3aXqsR3P%!l;iIV~g^&p=CLT9hG-!)r8!Z(e*pH<80}
zS_tb%d^R7OMQ=@GV@E~ri_{n{jua9cs}kZZ4S{A{^qlG2vY4`06Yx5hu<f|8(15x_
zo{^LnDkN1VEO+s3cBI17k(l>g;DjIQq6byHFR@9zqE}Pp51~+Xb3IFf2z(*>JNSGt
zVg;JwrZYPEN%=Nu0q-2eUGw7E#C4Y)GjY(atCZ97kC09n78vQ=IBMx+qdfgG%CQ-@
zUY}n5MRSM6Zx%qiE33=>zCvbAq`f;fD}`ZS$S~rYkG{jzj#-+e1q~b^ZWDieNTUB(
zcB3O!L{go^ayGj(1E~%{s3q)(qh@tLtemxrb7o3#r|)j_S|b}iL~!$ps0EID#~aZu
zb)UQIw3E2t0p&wpZew{j6E})bkDmD2KhmY+<~<;|RiUcZ2xW$-=~o_Z+Hn&7ZfTBC
z-WYyvRJ+2$w>X8(VJ64tHE$Qmo{$bu#2btAe;v2;z7!TK$$1QjPJ-$)=GEQ>QpY9E
zgD3F8jJ&BkYmzn%V+ynh3+JGy46pP<pqm3#ruX4rm-608r6W6DOCEO6e3X?M?Y984
z(3X}Kf5=b6RO;S5AaVRv%^)+jflY^0(cE*Fbi;Bz4AsI8-UT)U8wX1Z;iaz^)g(k|
zOOJ{b<;>Yl@W^MR+RBNWqth4*v|5R&j{Qab$eJp)ts8IvhwfqG_ML45hM*j{Hf<Rf
zV?6T|433+zhCMS?vwfnm;Nkq>r6!7c^*Zld%MBD7WU#~HRygtW<Y}N+gbUl*<#u~Z
z92<O{M`1N_ptZ_G&M`lMAY~=1rOlo`V+|o*<e3^pIPmU9Q=yk;aUGX{fN8v4wnB-y
zn=UCf3({idY>)yM^;?0bxX=kAd~3E(1I@DwMv7=Y8<VYTsmI`uv#PvqPkugHFY8?L
z#i*x0xT+rZ9BS11@n%8MJ3E`b6>wTB1w1);^_>!L7Z;Dqq%r>O&f<ez*U|kcX<_`m
zTNbE$ZS_<4#GGpqYxs?}4_frwes9MM<P14_ea0Wi+KHjQ+jNT`oj%k37H*<4js%aM
z8SsFN&k23ih@&{H9c}O^^TuzQKvJ1P6g@9O#h`V*U?jK1ce8EUet=?SdR6Ze(t+=B
zNS5nNN~t9H)L?_}H0Ilcuy%$c8&QfQcg%M7r?_2>7Nu6c{`ff9Q=a_PY{_u5TECqQ
zdd#zyG;F+@?@#0ups;T9nXq`*=S=s|3Ft{y$w6s;5s_}&AKj>vF+HucS<tolkfx9b
zFKM}5R}%D+|J8$#7@^B@&8$lgmB<V>8UnFDGMPW66Lj)YqZO`aKy~?n!sz(C9|c*W
zV;DLq_2+iC@418zSJigKMXbBf8{Ru^DrJIyuL3pK9&N&a=2cksh2x{*vW)P?I1Hzm
zde1X9ARg-DCGDm@Cg&}Fvy@D(Qj4J3cFDbX-e(kP@}P1@Nuj1qJa<{=nZx9JP$u+E
zMM8zd`knqRirpTX&CR}5opVkI{ea*B+QVzC1B&-<`Y+U~))zrTkELd&T3+|wB6FQj
z_-g9BW9EM*dY&z=-tFSp3v?h>C*S2NwWd23EkO!q7Fe*EcQvDn^O0vfA8<IOW`;__
z<qoAD+UlY>u-!aTHX`$If!cAoX`5TaeC6Fr{1FBo8O2;|yP5QjeG;Bp2&|hW&6m){
z(f7o+a)dokKYJej@-Yea;dTy&(H0g{WT*rTJS>mYYG0IJ(mU|Z78E)<W-Y)oEbst?
zx!fUb8x(L|<Lj&B8XbhGXspi=03bM_j~T5ZWC};ekc@A~E^N1Sn_f8X%~KXule}qh
zyVKibJz)iHYf+&gWm|{wLqxfB@RT~_Wq#^gmT)YBE*;CEXbuqw(LLM6rVS;eRv4Ty
zywermXzVUxUR1#N!XJRO>T)C1-->u{b}oVKducV$Z$WL{^LPsb0KlrxVog6_RO3%J
z<h>5Q?+bAN&HtJ#4c={z)sZN5X>3Egr*d)%EB%t3nF4}n81{x=Qf~3rf(*p0K#kd8
zUCCWi;_ItcTQ`fpuw6(v!JoIZBAl-ttZKRfN&<w(%Dk_;Yj<AKcN{Jpa1pmAo#kco
zGGHeuneDebz?cK=&P{Z<lC#7iu;ro82#=%CMQ*gES3%HV?&Dxyc+}XCkS8Oqb;vU#
z#Q&C^^H*yf`6R3?MyY$&$|6dj`0!fg#G5$^K^*`<6#$1KYVy#SnHO^*XgWfCcBuB~
z0<pjA@d>Nw63g15l_LU|N_0xg7OfQnzQ{rrI(Oy^xw|C0>)zWxS7ke*YiLo89-a+@
zFXkG;{XBN~%VMGy1?EugvTg}U{DJanpL_ZAh6YO%yU`s7`Po~y{4k(&u;y>K8*_I1
z0A7bjjvbB--utlC1x&757Dka&cRNd7WUgR^l-xy&VOad(SgTTN700CvXxn&a{)iDg
zPfS(ci&wdr?a}aPd4cXMOii%Aa>B|R3fwoxg}>B2o1Rm+wtIxsyC)@lcun(4(!i*<
zMMDAOmhaQ2Pe(1*N~h_FVVRhROX|Z{c{fRv`hCSKgQKT<ZUw+nKbqE>HOVp#=$Um8
zd`jxqVILPSBVfh7Y9&tcgs$;PWlO<<B*W4i5%Bt+>#2EP*XWfw`NzK13wYAT1HOsF
zYmb90j`3davs{MM@|_<ZTPIX_*o_<bTD%k=jyTN|$(B%K->JX5<Vtod>%OhFv^>{b
zt**!B8Do-od?@SJDLWBLb;a>7IRTdGO?M=WURf7C9_9aX{@IH8F>U3wMyY(Sn*MF2
zwJWKc7TKK&Vd%4v#M#Mvd=vbuzA+iAD@P>T*q7bUy;j+>(xqdH77%PJJS1hdLgiqu
zONlIApNY$T4`IPiODwd;%a-JY66`&xeYcjHh!?5YLPjs}LAFs*wts0y-}ihXaxsoK
z?%`K7<FPuv=MzV>>A5L4;qjMlyntE=$1qp71#VbM)$wvnH+R2R0>$p>XYonJIwhab
z&ER>*h;DBse<V3+W)>!q6M5rssaA5mnpVk5Fs{Dp$KsdiY`VXWPa#_!jD@o8<v+LS
zDYZOQSm6hJED5g>QS}p?e6>JC;YE~vJ~cBN1ay^zA~~wE-;wd;iUs?mMeTr@-t4bP
z52EV|hq<=4wwcqXd>`=jhd!LkIu~S3%*+&4dbN1l_>aufx1f%Wju#ZHYrb#VEvau`
ziLkhS!l3<8MPF+)Z?v_Q)p1hrXhRTW@PSUrrY%e=J>b^Fq)Gt6Ccq3?QzJz*JbUc3
z7eYI)lkIJ@fq`ao*dEL;KzB$085ZC^H(biuRpKzoc8pt!Kd`}Euc>2szSujTT#n@3
zU9JF*-pNEmb@UJrkVK+R*nebx<AfSqiir94y~6|SUZ@iMbEhd<6#9wug3I%nR(5#Q
z=O}4u^PW<p^{uV;DQ(eu#M9j!)*+x=kO1yur%yIiQBAe6k@+k4h%GomW34YfRDQdO
zgLhCOJaF#z-0fIfc>F_5Inu3Y(-VBf0L}C?55IDvob7CU5~_H50h7UFhj%Hc`cbx(
zs~yiJ0-dkO*X-yVOc+)<yvDdte7V3Jt-|7}-2*rlZMz%&jHhDk@KDH!b2jXt(uTwh
ze)iMv2$Ev;+r&q2_ku=*@Y@aSVAZcvS})iy53plS;jyvG>|h)qlw0yUyF)nk^tl7<
z1`obwA7;m{nk-iL;#wP$?{ohB=x#%?XOTU3p2?{z|J+_F2qPEXm3PkCCGT#i8pt1)
z!!vI(2X?ZyH%`Gcq8npe;GQ7nDO^H?sK1EX%D3l4A=R}K`u7UYbgbwIYag|bvAaL(
z3Oks^RpQq>8anbKp4~_9*V_Rb4L{1efkiy;mVd_X>fx|z>7<;>#=v>iizwxQo!Ubd
zJZ615N%V+QJMmS8*;3F(_83QxTFzbLF81gW;VZ9$#;Y>rp3ypgMb5ifL_y(H+pRje
z8TA5@&)jip4w|W&T>~;9ZBL1H9jj+&l`-q9bh~TBG)6rFw$h3P@9a#6ZQIayvUWE-
zou2o_;B>)%8^4u6lF{fhRWdBrdC_ftzPOc$fq1(eZF=Z}HqTHW+mY6tRk|2j?Xfy7
z&Old<(%DhEfHJ?-h@s>|!Vy}q%*mDfpfYqt&w)#uYj!(w1^IP-L5tG}m)18|4$LZW
zexi<-=T6;WmE8C=nfEK%uvv##6s<>8R07LocXG+Gd6bX(<_IFyL1RJtS;;X>nPW<h
z?5ij>43irGutfQltDr>v<KUsg2SnG7r%pB7@TPst^IB<2;2u(VoC)3fZlO0)L9ZF?
z$|JabkEIx57+H;s0?MY{*5Fbeik_@G{kZkrx(lP&F-x79b11|g+vk-uFy5OC^x32$
zeCE8%7=ixeNZQv1RPS8KRX%nwcQ|;#GW*UxUC?b3)jj@Q)Qas&H$?W?#e^NGd~m6S
z4(Kj9bX}&0x!S9~HlDyCiUX>BJHz+WU8gJR^G`kh^zEspxv2#-TQR>LvYZ>5>aV*9
z(i;i5DqOxA08&amV+9R+_VzI}wgIlG4<u&DsBK=Pj}2w3^OeWJw-O*Dbdu?%U!Mzf
znS_e6BMheqqfl-WWnlve566fM+jPJ9^h`!g^ij65e-vw3i#Z_hPIUq<Qm5)OsTCJD
zgkBJ#PCJtQgK?q(ar3)x>Dv-^O2qB)j?g))ch|07VYOOd*DlfvY(0r3ESCI)YSKNM
z7~MrOV=1`z1sYW!N^98t#YZuWEN)%&=8k5TEm$t;Dx)=0*pv>rnI3k}u*l+pl^m5K
zJmx-8Nqm6cV&5;+y(TMdRTMc9XvuRSr<eYVg`I2&*;d8bg|4AwH8h@TCc>{Tu6>CP
z?RoKcq@dtfHLTHqVfh1Gu2LpaHlQJ!t=(}gaUq%+qM-y;gGWEXrKIk%6>Tw)KWxRW
zQ9orb?i{cANrHW|vp7ydqS)njTTdqYE{C)qW1ER^{7mznAvgos3t5NU;XS!m_u+R)
zIiTq~CFqYyIKEen_){%M`E3e>%TJ5#SqN48guSlYK+7-x%p$yJM|Ri|Id-A$cyzBT
zd0z|^v=_UM5z}PX?q}CEwV%9qZ7(j~L=L~*`2ROXQtuzZ_p$=)`u3LcJF-49qIu*P
zyB$0JEyP~JuMHe_2Q7C^VSamDJB;}1g`?>~K*?46Qa%>%R@)D<ue9x~qK49NjS8>G
zX7wiBnaNz*er6)<>6N)LO70G_b%JeOw!;M(5J7<(1Gr)Rdc`lC(B%;&_^Vk5>Umz4
zYoA9Zbb4uG#a{)gvdE~xy`#%1<Dc%<<>%2>?+nL`tc)Kd2X4hrsMO+>tEmY&#Lu`B
zmLdU&6dE;n?jcqqetb8km}G%A$b{jxNBe?P=#C7?>Sw4VD`=@XUYa=pVv;0AgBktE
zqC_9{V)ibrE-I|>Jiu;zSxVO!`Z|NghyFw<h2(vHgWP9wKAY<fwc@Y$d}pKXF!h^O
z(u3vPK@Fia?)+<IafI}C-`qj`9l4Z@Ygu6$v~ec1+V-Y7p<nQ{pCmp0f|5Lc4w-Lh
zsTydr0KQS5;BX3{_^`<;{x3~dv2|=iMi7Ia+PkQofe+h?@5ZkOUarrCkh}z+5?>1W
z?Q)liBv5TxP-@7oH6^TfYhc@u48yJmc$X8mCAOxRp?$CJJi-wgncNhrp;{W)eYGlN
zk#CmkE|cJWiwXS#%d*%(7pUQhgfVO0)H_<hyv|uElvIpBYD!#~92B=@f(NZXv-7JX
zL5H>_NFvr$`-ptx0CUjGl}t+=8EfbgGVCxyq?U55h0iF|V?vRBPF;^OyAD_@_=s20
zaP{!@<qf~pD<i?96QNm$EG@LTyCFqTcvV?s8TRQ1?g30n9a20x6GhN-8dOjVp3Kb;
z5l=xX0qIkQr$WNe(*uoJ0gR`JXi_n3X0sr3^M|`laF{u4&WiYBM#Zkd2iIUepGL&L
zi7TuOM&z;7ic`AQ{YQV4)!_KdfRtL5C|KEu%XYoS4g|6z9-(fy5^jw^S`37?`|4L4
z+HhmYOsMY@d@Bx`ijRE`U-v*QCwH+0RL|P+#V1*}C%R<eL(R?b;=7-i^&hEa49G!%
zpv~EVTN_(1Ur1CzlvXvoS$KtsgP-g~1s3G+b7AFKyQ?XBTIt{><IxW$HfEl-RoQo9
zvyc|K-s1H#p7Ncn2TOfgv9C!5;mhrXOQ(YDie~7+<m?IFbcpf!A|KZ*acf7L7<y|~
z=qSXNmG8hBzZ{C6&+GE|!WK~)>;ko*N0A29VMyooYX$Ydo$Z3javGbJ#Em0PT1D#!
zg6|@FEm1l}Br9k;h7vet`;59A-DoeMmvn#HfIAYbw6T51zdj{Sqh@}*27zT!mOivA
z*hD4G<y%f@Fgh*tZ9coJ$RvS;e;JQveqd{P3>d)DG`OO)<~4a<q9JTLy6jb1%6b9a
z{KIv0i_0CqkjC9l1?mQAbEaEqs;TrdvIKBI2W-?W_2@W^B6KT^W@TpxcN63@kj={S
zQUCEO5QARa0##;-c@(THe0z^-1{F~C&MtHXA=EXBPTdFP@7iw3Ikeiguvk50^Qn7;
zhfHHk86|CHvN@uoblno=B(RDgy8(O4H?x>>shj#VPNRt2C=FrpD1DAOxaT9P+EvNV
z-bRie+k1}G|LoDddJCkz4s#vx?XFscOb60ZHM|8I$qKxfj`bIx8^+?-uX0at={TVf
zbJv4sYS|j^28Bm}kUR1i1q)m%9h7z^xKF)iV)I#|GB9Joud?H7K#|0Ru6?VHI%lNs
zL`|B{)dLNLFrQI>WQvy4N^<sTVS=r$Ow#oCNo7c>uR5}fBp4{+VtLnT8F&6(H1Fks
zE{iQz-senHF6&e4!SE#+n8AWnbT<^k3qtiPDEZ9~r{FqlWvs~(!c`e61h@67&v+-5
zKvXj83_*FM4vBSKudSD(K8DuRb#Al1VoAu5;Ln76&k(&r6%(oWS{B?0FAeznR_#6R
z0FZmsfx(zut^vgi4vYRU3z=|%$o1s<@!eT`8kfZMX0-Qp(^R?DNns?!7*|PHi8hs2
za~8ZT1G1yR@=;S2GIhHvo?jJJWH6iheD^4_T3KBT<#f4*4;tgOpaCPLL1db2VP943
z65GZ^cXeE)N874t5DTgefpZz4-J++aJ>~D2RRR_73*t;EiQv;JsfTX0;b17@SK1ca
zC1=gczwPrh6ejLIqXI?MtQEt8Q1A?aZ{Pw_-ga=m_ky4GEQ>R`PmRzrFLQz}B$Iq}
zy08KNj_Lw4ANpn29iqM#0789NKy|$Q;?r3GSrw7nm9qxJ=W4=sm&si_+ZgIj%eJGF
zu8GToEN^QBX|9Z{1VYdU@W2|WQHB%~bB}+6MK`SrHC$y@&If;5i5jQV&YFEP08Ap;
zKnD%sJVccHwUWN;zGE6;PaPH-XT3c1;BtMI(r&9=mqm+*XEKX`o`@DuTUIo1%WldE
zPwMV&?%!0)P)d=Qh*>uO7HkwBFQ7=w{kSr%lu06?Dm6>?$1!_@+;Dw@1z~R&lFD;v
zQ(h5-<_TUzVChb4L8GZp`lIO{jm!zVP|&DIr!fIN$b`%>KPkH;X*1;r9fMDu)*%VM
zLhj^n#-)<^iX6qu(`@1E%t|MlLP^T_JGmgLO8s{#Izt7Ix;P-Gq715};A?3*ghxKE
zBL_ZZ_dUxXpFw<4fm#0r00+#;a_c($SlZbPm<aROMQ<vDs#7|Tz!&7{#g7B4@h?ih
z&7(?qw)xOsABrj*-^vQ>-<AkfQGG=O7q{!iz6|cYR1lRBwm}k2;|ki`;pu^**C7_p
z*KbdopEhmH43&1GJfBq?pciL6pRT56fxm85(Y>lQ?gz?2s>XwR8~bmT8l8d6X*=~Q
zKg}wN;gXv-&YEb)ZMu3YKhe|*){y{de6vj%0%cUv^dX_XjkMJJnBoi-#CJNy2k$q{
za6xv3M9ps_vn%$|(UpF%dEem11f2CVv$bQdOr3)}>IMkw+r`Qq!-`vyv}|kvV&EP@
zjinA7c0W^7%CNFK3?bN2Q^qTa<lO$O<?mTyf-M6MvNpDIU(j<AoN;p{UJG#9uBDRi
zFtxy6liqV0nm85TKDSz}#3Vz1%%tL-*)W^pDd=RTVQRJ@j6*+mSg;^VvGs)O%fXLF
zV~@P=yxJA2UblN5d}GrE<*;dtbot6m6S#-TJgNhyY)BwQ%L+m_3Y0O5!C9S!(Kub^
zpcVqOK6$EJS*q(sP*{<HfuDwFXCZYpGn&j$t`fD@9z!9!6t^#~<kO7&^2N>%3`{2L
zGY96zqG`jcJ`2Gkt41RWzQXhVZttu%{h+o;5i>53&#>=3{t-LMQX6S$0$G8)NVS^T
zDl(|<`N6xRP2D6kCYKWCnKpIFW455z^>P?fr0qcK3#rkqL5Ov_ibVru%p5=KH&oB+
zp1~k-X1inUs)Q1uA~~oC37;Ehx9+00<g&C>K)X4O%39VWihnHH9=l}i(zd?z{;S!=
zPz}JOzsa&4c7u0Y<|rFhYLCyKVHYl9TQhrb_o!uvz5x5#?#N$k5c!7>BaL2P+ry*(
zi!w|4*;SK}rhC7EZAjZ5P6q5_BUO7x$BO~%-&l^5jNk0|4}Dg5Ox=U3?Ak7QcKHv+
z&HA0gIT_G&j_ots1Fe?%?6PU;AF!)rpMYRD-flx3+*@6{&|cmrnd9UpJ3IEji1-gG
zKj~w<>aaJ6K>5pmXMTpn>~VQU`0bWG_^f3A*Pju850&)?TQ7wto%`MO^>5()&!Xgl
zf1~|Bld{+Sd(uA#v+*WroITa{QOoh)qyJy)y|8xzS&<nhV87i3zf)VAT)Ka=2vz%K
zslD@L4|(VxWdFy_khnMIe>eF*FO}{4p6z9@%3MP4F@!h&<A%WRi`gS=fUrN?amhYm
z^P638NwU38|M61%&bf7W|IZr!IoN-R?Qov)n?0#-yb{?P>>v8^D17husNrq0Kz1eD
z@$vs=IU#L-4mYyagso!X*x%&opXv2{*u<MnhyJYe-)g4#AI9{DK*>byiTvQ+K7M;%
zRPSAB`<?dtFE#u<=J<Wf-vntXyzSmz9`T=y-`|PD<rR^C=$G;zJz}f(pZQPyR+-;}
z3kn{N-P`n=-<!_5_Dz_*U6((OoHvno{z&=f9%&2vqpNcNNZ{Y?|0Dl@dy1rfdZE~{
ztbeY}<o|U0bGAru;`phP)C_uxowqcbufxhpXUhi~H+P;B-H46F9aS0u$dKMqV=Q@|
zI=H!{k|<}<Lw{wNScO`+Rv>Ham^t7!b|=l1&Ad<`=N)yGp`{G;FD-f+atOLg8ZsI+
zldca-(w?qFzy$-v>PvCDR4Qm!37Y9+mA-gwDbaX(O=XP~pub6H6mH!QqJ1yLHOCoV
zM+CrnMjv8jT+-J*(pPP@@576vO_P0kE_LXqnyo)tV%xW}x5i5nNQB^h4FEur*K+O#
z@Mj^N3^|^pkHge!qyV+3GT8a3IM3_cM2#tSP-lMKq64ZISnEP{(LY!@bvw4u*4k1p
zjWq+}kxJ1fU7N}!!{Xzzqb!(&M!|`NHT6gdPC(>oLHBv}PT))N2%xgRs5dHvM~_Ek
zT|qEpwP77W*BD^5I^E2+3^Hrij2b62OxcU`$x6ZTvEP9yioUZIX|gkrU%kz{4}Aoe
zc0zq<h{~ISfN*PZ`%>*)GxCrU{Em|RO!mjTkJ*#HO+a&`(x)Llq3Q{4Ss<dbYShE1
z1|IBv;?`>Lphw06Qf_gl8g6UBQG%7&m^rO7{N&Qvr`F80=kZ8S$>Yu|oD&Ner+)SC
z;OoXgm&6fitl|u01COQLw?mBU5S*Zmom@u+28@i0NmAMsm~p}6Gw}5t_ecHIBK1L8
zo$mBI`O$Ye?(M>`g6abxeV#C69KRy}@F&FqrV~e2r$;M3^Bg9mutB58@AJgdvfNBT
z2wrz;l-TvztyH%7;TQ^M;?%$FyZxkgOnENKh?&_Fw6Cmp88ba}ZT)eute+4(w^M8k
zPtm(F5JY4I;)Ma>Yd@Jnk_!GQ`r&mQv*?Y6LjWG}J}-UBW-C~0lkys5e;ncNPoZ>7
zg#U$3J~)9j?8)cAX<iDkRB0~}^m(0BJko1|rcf@Ab798bU$seovTg{<cjoTN3Rv2n
zugt~{C0kI-jyZ57K7ZcwB2&i9v&c>Gv9DU>aZcW(*&P`6yQFj;lrn#;tmP#s_t)n+
zGyj(&YT!;sXqD>^4`&UPIL!ek{M#I0FUhOeR%cCbjPV32xc~6o=<A+A>F@z?pyAS-
z2R-$A9TP$sU)ao>13k?oT&s>Z?qJ_ult{_iL3So0|AoQcqLiENlST*2W9_cdMvWXx
z!n3(#3z|~Hjh~3F*Nk<m2`l7}#S2U(#i5TA59eeiXvS76xnF$L_k7KG9@KWFdPF3%
z@0;(Ebs_zUn|cONUL2tr-B~0{%q;B5oYF_D3@1WhukQ;7Yb7q+e3zT)00MbNq?n~V
zk=lAt(ONEQ=`dqNMZk!eS2+WdwAUOFRdL0DEV8O=mm`$@0j-_hpA3)q)NTUI5ztTw
zbk$i)6KF7QZZQx-0UJ?_PC-+ih1T_Bv)P$P7j(6>c^<9@$t=B1JmL1!qqY`Gb>Ueo
zunf1lsyEGeGHqf5pV^EmG#tuZn0;U~sh>ulXM{X!O4e?55@6?d6#BwXM9F_6Rcg8B
zMg1~WCrUg3Z@M>`pjSm;=Kf$<?aZmaOf7g!G(c+>%J^b!1M26@ww5)KDU=Yvi*J82
zKCxW$+2^Nkh9--eO+DXhzPS{Tu55W~BC26o<nnH<vq)_HLJqS4S%q*r-Lv{A=+geD
zJ8^N2luJ_GPIhwHI8a<D=^=`&Hcv-nY~BkF?179Ax3^Lf%sxuv?1I`30Fny(rF6G8
zW<~xICK7X<?eGbyf7ciX9qw}rj;G;Q-=H<@a58R1O=OTp^!~pJU;`{=j0#(ZMds8+
z;jEs_f|j^5IMug;@*Xl4**-KOgH<)BsMAAQzP<!%2H%o;%_H=x5qkAQ28OnJM9nh}
zi(05?SxY%Y?XnH%r#^|YIy~ekju^k%;caPi3Q$hkCsA{>R6j=WBWaOUHaj|kW&Owx
zxY=sPW90fa0L(hm0euK!BonVl)Q;EC<x>6sX4MHSO5}Q~rqk9_NiVw=$peW5lYEzZ
ze5Hb}{vTLwaj}$;9vPepB6HK)#gG`?gS6<`&T|d0i^aL(81CdMXWJngRdq*FSgBrY
zelzxcs+%*^vxsM2V_G@o(X>AQU9K%dgxju)L1*Go<4jP24=JH@6Ma+b6Bs^p$x7eG
zmGq8g-3slf!%}Qxc+(tbGWwq>-v6jpnBn$aAuH9|`7)95P!AtwRrru9t?n88>1cJB
z8pI|eLj{Mxjs?aXvM<uGzKj81Y4BX4_9!1cf_bVQP-j~Q4oJt}7cbaJ**yYi3SP4>
z<xqIfbI}zr^wI_TX8dhAY+%K&Tz={S=vZ(=;1;3^?`Ewq#$)NP!E-2G7G&c3g#YwB
z^o0HVEmw>Mu=IzT8>y;bp~4Iv0moh-L3*#9;2Hcdx4l~4Vg1y=tZ?OIuE&W>t`-$L
zi7B*))EwJO)?u@rWV3WxiDR>3Jl50Fj#HRn6&Y)Sc!7wDb0Ng-shWGR68{Siv}r*e
zt=ZZ($%Jq-jJCm3ysq+8b%7TUo}Txep0(w<4H02m2kmijHUwcK-uztl*Lfr6&v!g>
z<IZoW^k1y<8~iR_`2!#S0D^z;@Uip1ownSP(RcUYN#pOo82tk{D)iX!>>q#eKafXq
vfZb^FKWI{AuZw!_Z^+{EKd;tzIZp#XDONEjScUHFMu5Aw4Q`cb+CTq46H&C_

diff --git a/src/app/widgets/home.py b/src/app/widgets/home.py
index 6d9d7d5..1aa74d3 100755
--- a/src/app/widgets/home.py
+++ b/src/app/widgets/home.py
@@ -15,7 +15,7 @@ from pgu.gui import CLICK
 from pgu.gui import QUIT
 from pgu.gui import CHANGE
 import pygame
-from gui.constants import reversedReadabilityDict, modeDict
+from globals import PLAYING_MODES
 from songfilebrowser import FileOpenDialog
 import os.path
 
@@ -53,9 +53,9 @@ class Home(Table) :
         # choix du niveau
         self.tr()
         self.td(self.createLabel("Niveau :"))
-        self.modeSelect = Select('easy')
-        for key in modeDict.keys() :
-            self.modeSelect.add(self.createLabel(reversedReadabilityDict[key]),key)
+        self.modeSelect = Select('EASY')
+        for k, caption in PLAYING_MODES :
+            self.modeSelect.add(self.createLabel(caption), k)
         self.td(self.modeSelect,colspan=3)
 
         self.tr()
@@ -80,7 +80,7 @@ class Home(Table) :
         self.tr()
         self.quitButton = Button(self.createLabel("Quitter"))
         self.td(self.quitButton)
-        self.playButton = Button(self.createLabel("Jouer"))
+        self.playButton = Button(self.createLabel("Jouer"), disabled=True)
         self.td(self.playButton,colspan=3)
 
         self.tr()
@@ -114,6 +114,7 @@ class Home(Table) :
     def handle_file_browser_closed(self, dlg) :
         if dlg.value and os.path.isfile(dlg.value):
             self.songFile = dlg.value
+            self.playButton.disabled = False
     
 
     
\ No newline at end of file
diff --git a/src/app/widgets/playingscreen.py b/src/app/widgets/playingscreen.py
index f5cbdb6..2fad9c2 100755
--- a/src/app/widgets/playingscreen.py
+++ b/src/app/widgets/playingscreen.py
@@ -21,7 +21,7 @@ from config import DEFAULT_MIDI_VELOCITY
 
 from globals import BACKGROUND_LAYER
 from globals import CURSOR_LAYER
-from globals import PLAYING_MODES
+from globals import PLAYING_MODES_DICT
 
 class _PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) :
 
@@ -169,17 +169,17 @@ class PlayingScreen(_PlayingScreenBase) :
 
 class SongPlayingScreen(_PlayingScreenBase) :
     
-    def __init__(self, synth, song, mode=PLAYING_MODES['EASY']) :
+    def __init__(self, synth, song, mode=PLAYING_MODES_DICT['EASY']) :
         super(SongPlayingScreen, self).__init__(synth, song.distinctNotes)
         self.song = song
         self.quarterNoteDuration = song.quarterNoteDuration
         self.currentColumn = None
         self.noteIterator = self.song.iterNotes()
         self.displayNext()
-        if mode == PLAYING_MODES['NORMAL'] :
+        if mode == PLAYING_MODES_DICT['NORMAL'] :
             EventDispatcher.addEventListener(events.COLDOWN, self.handleColumnDown)
             EventDispatcher.addEventListener(events.COLUP, self.handleColumnUp)
-        elif mode == PLAYING_MODES['EASY'] :
+        elif mode == PLAYING_MODES_DICT['EASY'] :
             EventDispatcher.addEventListener(events.COLOVER, self.handleColumnOver)
             
     
-- 
2.20.1