From 3a97fd3a16eec03be1a3e18e7b43218ca6595ca0 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Fri, 13 Nov 2015 18:57:24 +0900 Subject: [PATCH] Updating README --- README.md | 56 ++++++++++++++++++++++-------------------- img/gamepad-thumb.png | Bin 0 -> 4976 bytes img/gamepad.png | Bin 0 -> 13084 bytes 3 files changed, 29 insertions(+), 27 deletions(-) create mode 100644 img/gamepad-thumb.png create mode 100644 img/gamepad.png diff --git a/README.md b/README.md index 78c870d..764999d 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,29 @@ -# AnkiJoy - -This is a simple Python plugin I wrote for [Anki](http://ichi2.net/anki/) (the best -[SRS](http://en.wikipedia.org/wiki/Spaced_repetition) software ever) to enable Joystick and Gamepad support under Linux. -It relies on [PyQt](http://www.riverbankcomputing.co.uk/) which you already have installed if you run Anki, and -[pygame](http://www.pygame.org/) for game controller support. It can likely be made to work with a little bit of -tweaking on Windows and MacOS X systems, but I am not pursuing this at this time. - -With this plugin you can map any of the following actions to arbitrary buttons on your favorite game controller: - -* Answer 1 -* Answer 2 -* Answer 3 -* Answer 4 -* Answer Default -* Answer Incorrect -* Bury Card -* Mark Card -* Repeat Audio -* Show Answer -* Suspend Card -* Undo - -If you wish to use this plugin simply download it from within the shared plugins menu in Anki or grab the latest -revision of the code from [GitHub](http://github.com/FooSoft/ankijoy/). - -![](http://foosoft.net/projects/ankijoy/img/gamepad.png) +# AnkiJoy # + +Linux. It relies on [PyQt](http://www.riverbankcomputing.co.uk/) which you already have installed if you run Anki, and +This is a simple Python plugin I wrote for [Anki](http://ichi2.net/anki/) (the best +[SRS](http://en.wikipedia.org/wiki/Spaced_repetition) software ever) to enable Joystick and Gamepad support under +[pygame](http://www.pygame.org/) for game controller support. It can likely be made to work with a little bit of +tweaking on Windows and MacOS X systems, but I am not pursuing this at this time. + +With this plugin you can map any of the following actions to arbitrary buttons on your favorite game controller: + +* Answer 1 +* Answer 2 +* Answer 3 +* Answer 4 +* Answer Default +* Answer Incorrect +* Bury Card +* Mark Card +* Repeat Audio +* Show Answer +* Suspend Card +* Undo + +If you wish to use this plugin simply download it from within the shared plugins menu in Anki or grab the latest +revision of the code from [GitHub](http://github.com/FooSoft/ankijoy/). + +## Screenshots ## + +[![Options dialog](img/gamepad-thumb.png)](img/gamepad.png) diff --git a/img/gamepad-thumb.png b/img/gamepad-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..d567f712fee17a8bea2fb53e2fb24472f71c45d9 GIT binary patch literal 4976 zcmV-$6OZhPP)gwEc&)L7T_t|@&eGdG; z|HqeOW1}3$6-6qQ$p58vbu24kF6or0B#}sXp2sKo%Cam|Dv9^;Su6^;zXuKgRm^6y zJw3hr=;$b($mQ}{t(s+6j^|kkx3T8urFCLWr%Q!G0WGWQ%+Uxv76bv0zw#%B@CNmx za=hr3#m08{7Tw8YGqO6Fgp(BV1y;fqg(BpQ`opp%ON&LLR=IBux^CTHog2?&vZo0lT7zcT+N_-&9qDvB9*^TILqN^v z^92F_7Qp&EAv)%00dy&s&*1|1d5*K&ZNXp=VCAw|poROnTn;4_3I&J93k7g0lgZ#k zTie@Y#0VJR7|w(VEGnUQPOam#?*OH)t_~eUOU!2Ty`iDGxj76vp$HHKAcuza_uo#X z)7{uY|U!IX`Kgj6^hizSn(Hxq?7BXH2|ay@wO{_Nab zI+fPzb$9OcC*ld4y{)&W$82uw=xFz^`mbJfFgYN{sI#LuC+Q1Iy*RcN1>44zIAJ0pkJv}{`R;3e`#siW@`hYxBB|DT5TvC zx_|$k^~#l4G>U2sM#I+DHbd3fX%WOqE|+nfgefr}e)xgQ<%~q5Yinz`Us0r?Q0VXf z@P}X^Fg7*@sRgw8d=B%T2q8uR27bHKmALl#7NZVL4hOfkBpiR5eZVNY-rEz4MIkf* z35|BU-6oUCVrfC!IvnkQ0qy+w^{#!3S~eF`o`<^3PRz>$HV9aHBitH4Dp*cZutGH&?4L0+v#)$+#oum z^m0BhHkg#QE73^()?{IGbF zj8wFTOzm7cokM}KUw%RF>g!dEI6Gik!3bl;XaD$*|BNRS@wi^Ey)|$LI?6jYgT9$e z=2JFj$cQU~eGo(mA#{Kt3aw&{-~t8E>tFxsSC1ZjRV1CSl!Vw}(&UJp0;L3|2m&g^ zSC&q7)SSUjxX+Rbg<=s>ICy6Ota22w-5LVlS zC)u7$Ix^KlSSsy=T$!?|#t>r(ci^1CiY1YPotb~{#U-6S?ShbcAwHk)%P;>klSu=% zbUF=7_1ka1nVFehU0Io$nnD3M$P5XI5kExqI#GzGR!J$>5i{IMe=&ok-F^z;nO z)SsU|z1i0{Jv9}J#ab<`$wcDoufK|fBc?`EG#1MMx>UMzq!fPOrDw?C?6m;qct-oXhQ=nVE@2qE4p^ z7(x*B27|}r5rj*d_6%s36hb9NB9Zss|Ddb8d-(BVM|=DH{QUIvbZ_tV_4Rd2ON&e< zyV}*Yu;Bgmuip;@0(!k3a5fl?8EacO5{8aFt8QFm+6AE?2=1#_B_vGz;YT0A^RV0P zH2mgvyJ;C*U%h%2bDqQDz)!8Mt@vzeZl>#~6$|K+PK|1%5Kg{8uB$`!2N)?dzD$Dy z%%y317WDd9Hgz*jGje}PHAG`)`-#WvA;gpMczknft3;MLF6l&xt%-JnsFy!cim`jC(w=QI$lfYejyi=*~@Q8Q~vjVDJ3A zTCHwxZV?PLh%a%*dA);8<* zb^z}l92{Kp`&ISzGP!JY^o7;hHa#=lYH9T@cw1UpmX;PV+Dr`%kndz7k-B<%S3c%#YG z-qEqLyo?`H=`?`zcs!9v*lccs)Z>v%Hj7vG_xI<-6i}f-uQ!=YOH0d7p8mv&?uuZy zJAmuT%F5dMS}fM$Xm@OGY^Kv`gVA{9inSo-P724!mUoD<`CK*!w&nlo^WXjc_kWFR z3~oV8ZG9^#6c?D{v6w^@xuH_kD-=+uD)72k5)+DSHhU(McDvmR3kyw6 zO^IZJ<9SghNF-xpqjI_8iuDS_c4c){{528B%oh%ad0whF=%*$pQ>nDYVnIV!mX?~E zn~#$#?-U6n`Inc;{^!5{>wo|Br+@j^e`_?G4>mpy0U-&v0Il1%`)O##>2$(E(f0P@ zM~JyXp>Vt0B)Lk=6$b#&wRBAi{$dwGhcj~7T9CA|ra`nH^SX9>IltBK6ifArD+qsw`sclb7n z6jEX|8sM5RM5>Op!IxA^wRsUG(JzPP2pzWHBZo>Bg*aPUTT2(%T{}YpsFypb`o2S6tx}iX_vh$XmrokGn~4LS(LGH#fJ$IhCb3>1Wy=@;}H& zW21@Lnd5U?TU)|$>ne;{Q=>^%C)=;Uk+beA!{LpW2I&@vqdtqL0)b#K7%(?Bir>$C zToKU=M*(=KzyV{pATjvMx3PVjA1yJ z#5iT3Uah9AphNuSCUP-OQmWA}rPrmi9121Rhu`nd>Y`uqEVTrd!P^5n^t*4AVy1sF!2Ki}Nk zgu1}vaP~dFcw};M&n9q{D-?r+gQQN%8L@Y$0sZ&+eCGi|rrav}Su8^}I{HE(S4ium z;YfIPcGhSxqWeqBOLm+6r=NbpnAT`DEiINczaK0@2QebSgzoNcRegO;h@UOJMraRZ zL5V7^Ak0ipudXcR3wfl^Fl=H|zbALC-)>qRB>Jb`?nKx;#>gSQ+Xb}odfSE=fkmluH<-9(9cfly;( zqf)6{T3TYru1srN8{R(p;srp3zJ>b61O{cYy0Q$FsMG1u6o?UY>9y{jRsZVL>;Rl^whXz9@ z!Sf(1=QGeQQmJHZZA~hz8y+6UWC05ZW-V+^C{ew^Fg-nuF$x~0)9E&wO$=<2*w))Z z2yAqEeLRtHx!eVzpw~l@il&Fd;h_Ar+wFJLPnX=)7?$L{i4a|^DSy0I5#MNQStr8n4VfpgB z1yvb|M8FM<@0O-!g;F^&J}$~%OAAV46oOaKK=@TO5jgJd-64F{Xf%4Qmd>5xhG!Bh zuAVPnNr!?Eod5LGPf6@fTstH?F4*dN%UeoC3)tmy(KY&NzE_M=VxS5&ov;2{y<}gR z=Xb8j8)-oNko-Mqs?IuKM9xS#2}`$|VnoscbhZ7)%^R3^XkQ>_xKBTs^0_mWuQipE zsOH;+xtX$MUk>xUa=D(V^rV{a$4G$I)L>lo`(yFMIgvng6e_*Z+(>Optyc5%vuAbE zS8quWIYXoSM|uS#D(5;`-P^`UcjIw3DG?YMYPGtfy*-=FogWBIrUuN`RC72S_DCd3 z_q!kCOQ1@1I_&|WyK{Ud!fv7=0-n%Ww`CVmTZ1YpSP3WbifV&kFP$%T98BlOgsG-# zzwqR8C=clSWsdecPnQtB^Ykt$(zmBdr2g1-a;Z!ey?PRAzjDe&_05X~AzciKM5D*N zKcvKPJg3uYsa*r>F&2wwvl-@iQG_e0Rx8NadetaiEC|8hnb}#TLh&{m%F9RgzN}SD z*@~ot!61Ad;I{?Z-Ugz_dV-et%C+@%yrL#E|6)OyB{|ABdV6bD14?9hft5&#g78|d z(>PI08A!%ozWG+L32+kw!JymeG#CsA7^w6u5^|n4Q*|KB0dMCxZhUeAqXQ0Tbqwob zK}ab_j*ou%T?}tZQpsc}95yvHD3nU7Z#j6=;u4K`R2@U^@Fc_Y#psK+Hk(GRuED2N zd6{hA1PiW62VQNh7Yo9jRlVJ(mEmSG9)JG) znNFwYIW8CqK_%Ml_T{CeTt4S=y0!y>bSh=D+ovWc8%(BjN<7G=xMvxUWy-b;S;pC0 zpqlX0)2B}r3WaZRQLopb&U7Yo^XAQ(m6@8x6I-VC{>6fjA{pR28Wy*ogngTVH zOr;7!VQ^^ZrzgXZ#fgcDzxmt0lgs6~e11Pgy0dt&N6}t52+@nS(pohptVy;~;Hj$v5<1_i28D(?&o zKtup4&D`nf>46a>F2Gu?dYu-EP9~F!r`d~3K)VFuF+nr1%d9p2Zzo$?k$G)P@iv=M=*he$3s_(?2QHX`v+ype6nwu+Gca=~8L&Vo+ zvsYaBnrchC)0U*X6mK~ILfA4wQ2>fir}U3hP*>pq-AmRz3*X!r!=QUc*zGn@SLl9(gas3sN4lOPIS%ufR zGWgiu4mh2iH7H&z2+7}0aBXaC(Da|3yKJqEdNdN3z)R}-dYaB79;DP{=6Q11;C|5= zcIRa6U6mYyIy*bGTJ1%T&R}|LYirvRVR>_+ZUp(`N-qPLCXD9U$>V4VUuF^5s7 u)6UM$PEQ}v47;RrK=5w?-~R;w0RR8nK1Y>!_{XyV00001-7Po_4#C~sJ;B}G-4h52?iSo35C{qGZh_!#+xh+X+qd0^ zePQ^R)7@3oRrj8I&Lu|moh*lghUdJr7&(=$O>4)}ogkd)U1 zfk4ZfDjP5`lrZv82~BU~6C-3p+>zTaUWZ+vul0z2$6c_YvBR;!B4P={HPcTPBlviV z=JPzv45rdh&fx`YL}gq976t|dS>OFvkvT`UdBM|6__f&E#Q^Thy&qm)J&$`ojuUqS&J{_h#6e&z04}pn^ ziHnQtbgiqyVgB8bKt^EA_9cOQI^G|RYz2^E1o;i z4oM?D_#)w3Cuitj6TP~qsi|peXNG)CDJ<+>ss0oi4nw7S3BF@j8@20!qz9*~tE=bn z*gX}FzHj=VprCMvE}7_i9bZ*lEn#eBWpy_ciAGFJyiniNq$DptJvTQwF#&<3T|(74 zC4<3t$RVG$wmMe~rKqKh$c*qag2H9KZTSUKve8ivUyja%LoA{*a&mKt2?^6PGr6FV zCLB7qqJI&0bLld*b>1OTGxGB%O-dU{1^ZOk*?x7fwPor!X&Y9J$kg7|QpmHX>_ugd zSt=9@Dl95W!c|07G!QaS(|gG{XO;l{QC3%fyg6|h8qChgAt9NU>OMX`j=#FXAbY#= z?Zf!wnz22u;uS4is?>~Nn|OGWNJSCu(-}3~Y|YIf)CxX6_onqzqIt)MhwZ-C_GL32 zRaKuAv)&2{Zk?U4tL)G;#9q8Hv}~*0h~Vr}B+bpq(aRFc3TJ@*S*J4lQ3nthOFVt_JRmunE`0Fx%OLu+G zOwxJH=5W3>q@=Z=*KCjX#Ak7CI9!V$(vzJ{SVw64=TB|VUWS%N7&a*#U3Y9uLUU^? zL5*gy-Y1cUrmL&@S{x%oLsuapk^yoY4hZ4NeV0MvbwP9UhflSJky6oQh7qwy6*ULU zEDWx0p2iK9oOOs1UEb$##;!@^tD9lR3-vgo`<6ZMqu$}g1W_CzY9baZQ{wd0Vf@!q zqoWM;LL?R(*YOF>O-<(rQt#lU;H9KWg1}XyKgJjt7{W)pz)MvM?e1hpp&Kwl=qQR%XW55kJ?~wM5R?pioz z0!Fy8Va;icG`!LKWT`oUBPWM?-I?+0HufHqz!7xFnsFx(2CuN^AKDQA|;2_@ne4SZZ+PgW?b@M=< zmT+F^#pBD%CfwfY6Zg9sGWnT5la33^Z8}wFHo##SuDv0+Ql|VTJA1*n%lAytdA%Kn z;1;GaXl9moW_HGH^FEOrrBT8ugSENa=aTMNCayQnr+txH7NfPkzTIPg>gwuhuG&Dv z_v)^1APRIA%Ozj5rx@EwXNCXrg&;FOzteRyi?Ud!)>!cEg>UFW-)4Th$6U2hRHaV* z(knyXC5jhxqe5#ui}izRooq^JDGh1pP;z*jUVLiM(5D!*LsJPu*8`(|G7?e_+LPV& zk9|>vq5<|cHpnXIQ&Ps_vIYkBi0KkEa1jv^&dxtv3zNV3-I6ORR(3x53#b+cFV}mK z7Lfk_tsaGTF0ZWoV{9y9|5vp^E1%O+l_62IZEjK$ro#2%Z{%AJp7+NKRIIG%i9p!0 z+n+4xc{qAqqocR6vSKs%*7V`e9103bv_w3GShqpzUsM9N!BP@jWa_Jy*iJdNMm4Nz{8^<=XtH`k@CH@v-4WJ2mQjU zuqgR+ZgFuj61w5$EHDo=0#@Iu+*}*y)!6#hRy;nGM3M^-e+bP5RWQgp(Da$Fql#>9Y!?x791ni;W|J9v#L zahn7E?>fvGp;HcKeID|?wugsAbY*4af1g)ZAEiRiUgL=xkB`a9l=Bh|Cj0y0k`jPL z>i3wQorO)|JUCeoqU5?*NfHZ8@;KiaOG78&3%s7yS?%zG=Osl&ci5bRyMo>Kf4E|I z#Rj$qBKh&J&*MXJ1h0(UVoXP&QL?W@+}6EfZ@t(Q3=tl^J5_Rdh~}IZ8*)x! z8}_mIgx>Onet|DKh@uFTQ&ygyo|Z0ZwTjE^w|;-RW-*!HZqVusD^Y83i@rr|`!bgH zrPXdrqcZP|I;2lrj+c) zbZga*I$gSu0oIu&JB=?$6o(7^F@c&7JdKv7@a(K3?wF6MjgPH8fzQMmV;q<3ofpof z)fJ##dN|%<+(LZNfvvrLu}ZkcLXDA7GF*P5mtGFYKeY3XcRPM7ojY~8)n(f(EW`q= z=jg~1`6^B!C+SjC)r6KrbUZL17Vv;u*|)fugP!|xJ#VDQ%=`qwE8u#HtxRbr<$R+? z6viDJ7w520N7bX%sc?P$cP&8*8LSj5c1EVO)Z!Es7uP7q{nN~nw-=2t$qovaI`Lh# zxYzUf;lodcHOWn_iZ4-iiJqRFg`=1I=hD(c-+Yk>MPNuIL;GOO(memJBv3-$;)MDh z>RKbX5}oZ2>6z9bQ%;R?o;Dqd=|qcLw@~(wV!`D90jStkUzqb@Y(~gvi{l|SDI~Ph ze@MYKCBGz76@eY5ahP0d!8kyps#?w5u9)b&vox>d-LFf56-7ep{-KARvEPYMOD+@G zCn5=x+fy-deq=dcKR@cp57$S$0@{>ZbOu%?4ZJko46sK)u-d-aPErXuWuivzq!3oS z%NRf(8{a!#)|sHDoobfb!rQZIy{HY5OF>d@WJ0R@4J3ISNic|$W+=YT2&mPi)z8-A~`JP zAOD5&| z7{VHl(wS{`Xk`+_q8!QNcQK1D7IpEE+#!*ubYA@iS)0ney5H9*`84V0-6j> zC|)rQY>X>wKenot(uC7p3uv{*upO=-H<3(;Yw>J?zz%y24}VSydl3t~Z>guJ=d#d- z<-0*0H$E`eUnC)`bGvl?XBTgmzh<3-mv?~UZ9_&z7OPQ9mByDue&?q|HM;UQL)b)b zg$QeB+T6;WdOk{9Eg^o^ul3jvvo!_7ihvG=hJF}6G)RdH-eYla^NYD{(G0W6CJ--v zRYcmP$Weme)rw-1z#B0iAH4ydKi;uxs4=P4c zdyS80(H`jXyDd|?r(nPg{9P#G$GJpVBh%)$9?aDyB-M>E_so2)FozvpKyW;8BQg{e_+^5~522lT56ooapb%i=frBxC{g zL9c<{Xag=dcGwUvF1s=%bFlb|)DG0vu&Aa6JzEmeMLL%xLmo)m2ErnjNFVsVM2x9f z#$r9ytFn($U6mZ7HCh|KF1|L;E-WH)Hb>ioOMUz8+Y$)VBEKVR{%0rGk6%^%(zy>0 zGQ+JUDr?VwR1StLz-GBBOFcm_v39&MpDBaS1>(CuZbx?edwRZeHZDy0NL8i>vzflb zzqf~fu$YmVVG)WS8FfrXipB1I4oBXdvIfP>sIE|`|MJz%V z>j)!yl~5;ghwJEsOP)gEgylBnVtL@JH^zQzC@OlhQ!Oqmn7_%c3-9^-^a$FA4-JlWWrgFg*8K?Y(>MJsx~*uI z1i_o^b>vgo5QXg6GeLATt(cq9vvfs8<&dGX&e#U^RO9ZaKeb|Rdc{$xPdCa|6m4iC z1Sx|o4Ma4!Q7~ogTS>PH4uWMZxxxL}`7rBqldza7U8<1J!~ zk|vu^B-}m_BnqNt*>qui6-{q^n5H7*=PPzv=DP!jCM5703rO7Fe4l03*5*5?iRF=B z@J<~K6@TZ9G5qsB=IY)+R%)z^DDIy#wgl&Iy)yU*!F z#dY~!6Q6!sSYAX4vX-RNWSS8dkBNz)s6hzJgX4|;s}I2;y)G@C_l6~#@-Sn@Iv!yN zV>zV&WzouCLxNF+2>*na&`+4pI%KajTfB9aFcYOKI9uEOHEU-4F4cepuSyRjcclM` zw(UDsM4!nIdptd6JlJyTMRne<`bhp!@Ie*Uc#8wHaG`EEY=6qWfnb4ZSrr8L8k173 zKa{8OzjcF(q~5I|MP2GKYK`YhX?$$B@L*ho=+ROb=onC@7e9c&DdjJM5L6UcN%1#u zP)l`~PnQ2~6aauUUrAFU02C!6EQE^@MvV*58NP}Fpo*ZxQAq%m914S#gB#3{1ExgK zqyRv(VzQQ007_0GI9lnAc)AjxTvQ|hpraz{hGYO$N+}MdL!?xoLjb|f$^xM4DJ(rX z0HqG5grvcNX>ou79#M-!%O3WlS!e(hBS@1ZMY)g%D@eVnNKbR!5AzX$gkhO9UUE?o}K~K zBlhSe@JWE@iV#0i@_aafUm#g0@O1}z4I*P=CUV0ccx}Tl%T5rWQjhLsvys`gY07TUaGVpf5>+~f; znw5mVZ*Hcq4>k(S#Vc*n7EHE2-90=!th-Bq#Z!(?IpC7TzCFLX3a{Av&ClDMVvQ(B zqKHbWKGnKXyP8T#QQ0c>4JvALQ?o>_ZZzKTL@uvE<~IgRVDV=}5h|1{dtQ7|j06XV z2w66=%ot5TIZ{>PiDamX<4jZ$(5J^kcce zaN*)7QpNV>` zMZgJo9{$2hz1%MW1g%e>Ce0|$1Iu+!7rMz<_I7q=n)J9W=ccDK^~3+We>D`iKM~IS z>0Gst7`_0s6+?c5`iiICS7ht230t;{r6tdT4Jggyr)d%Q7Zq0hCU8{$`AeUu=zn~{ zq{sC|*q;+vcn*6;yuW`}JEF*iZjKi<;$8UcXKe4HQ`F;Bk${u&H3Re&lUR80_wVhs zE&-k-ZQ|OD{cK`s(2N2?cE+$lldF&yTZO&RxIPNo#7eF=1%q;t)L@)B+^T7r+=!7kcklJ5J)dh zNzY&Szi+BN{W`2n?6TB^MImk2^Fs3Q?`VCC2`~z({o%|+w0g{;is&s6@>&9_A=)%P$Avo6KDeRC@%97#Pbp`g%tQhYlYp5W3BX+vu)x5@ zuC|?xdgJS8P85kz^u#tB<29M-O##=Nl9fwEVd%_~i}i52r&rjsrWb)#A#iQwmEI;U zD{ZjP+(Ws81+qwg9CpJF&NihiMiRul59&y(2int1aPg=R>=EF6?(YL%0`KtZJjp*P z#eU}G=COmRg-Eclu(5@K?ZNJHXmX(Qen9#F_3Snbml@{Z@KDddpw)H} zTM^mx!#ga!dnk~$s`Z;wg`P%mp|i*sOpRwVXqG8xf-3VUu7aQM^iaFbw);Zjg z2abn@@=fOPo76jPMvrdzBOxOG$m36HCQnF8OuV_g6a%E3U|4u@idd&?|0N7kf#^_a z=?Is#&Mx=e*4o$8Ni+}VD)(_=Eo6W>v@yW(?sCo&=S`tZB=XK_zQhnh%9&&xxc@*B`u z&)xXYqK9=7g_!gCR;@{={}>GwCcarHSU#&xt}b_})5inHq|02rzK*UD9%W~NotYgI z1*LDPD~(Qhr8~et!i*{n_JNw3+U7^Dpr<2DkI2Hvu-yCi*ZD?O$s}mL>>K5bzxs;g@Nss)eFMQIEUebsv1i;*Xv0b`Jnl68v=EG?Y&G!<3xcTk-ddQS=_ zg-9;97sj~YLR9z#T~{sSUGL8Ul@o?@b#8!3ap2 z>B;96mSK?nCD}|r1#}r0p-C$Jv9K+ z7)c;W!W;ka;X_wv7dEyrm%9^LL6w)DF3LiGzx!6{82DRzb1!rLLVMuz+pkBr>p>%; zG(b2UoZKDHf*(%g<>r^|br>8~tLNmb3N%^gRHrskvewYx_PnS^h^X4*b(rUMSTmHB zMMlL=A{2zM{Uy(X3IWlhm$J@BBf02`7-?2 zmw`y`s3T(H(W&FCj111l*F3J>^OULycpf#_1e(T5=yENudLK<*fu&bp+pFW0*?wOKVNI)Fjpl=oi4rEEz(iH zaX;ehT=%iA&ULaXM@dgvS-FY0kT@Pt7`jY`wP`x39XaGduo==Y1a-Ye)Uz`u%iVb| zLwYMGFf?>_3Ns#FcX#;_2}(hpwCWxm zvE`7{m=Yty4Lf{4oPjA8@$hvT@LJ;I(GW&;BN7u62_|JFoV2y)Hox29!wnM>64KDq z$2G-O*iV)Mst7Zcz@X6G4|>p;IUAqylf=oMVW5xWWjBBK_hdpx954Z6O%~x zb_?8NHj*gOPlHal@qvvCn;Px3p#i8Cy1Kgbn&BSq9r7*~Eql@F;9C3Z^&8$3ktnB0 zZ{E3WCq*LI98Uz(N5d{=8}R3R`*|5b5aZ(kXp`{5$b-YfAj0jxoAuUOly6J@ZvLk2 zHmQ+Iic5ogGg$nksG0!TEs}_PEh@DR6UE`I<+K|yi*YWHtvj&Z`>>%GZ@lO6W|@c^ z&#}wAp3>=G4%I^7V1I+tFP)itK6JIQu`yjDYXLS97)Z4mw^1t6PU{W~;p_d8Bj}Ln zY9S{HWIJAB*a^##Rn`U+5BB> zZ6S^>El!q(c4i&-^~cYj;6~mE4eO~FubL{?3V-as(P)huJKQM>SOCZW4(To7Y7mp^QAT4xH2848hh2RO|J46I;xHiyFvDHzUHB4jV-1_e(S zR&#NAnVyCYAe?^Vdq1*4GClvMH-ZI2wXnFzm^|J_*gVLjuu1<8jhN@>>`;cbn)FG)3bQGb+om+>vO)v?y~;tTc&#vFOcwO zkPy88=r1i?9jvXc^}R^xD#4(#nOlCvj&pk}_?FT2`pc55LOFW4cmWi~ubdo@3X69TO{_ItY zt(_ewg?P;&x|;H1%&6vNr~g;2Hk-QCwPuH&FQsMXt6`X0vb(#|FeZYnEe%IY&A$P) zNd9Mtv=hj*5J2mKb{%n@V@Zy%s-1y({vOeC7O&d48WoNJD!y%eO)7e-qZ9au0f0mApQ%h3EFK!zP zlgkO0v$E66DJzTYCs^Mrv%8oLz4~lfGODkPk%|x3oZ1+iFQEGU` z7GWcPwpnbbkbM@?@I|F)t<9~gn{hMwJq!%?=)Yco#zu1z`6UpnmMqNk_ir~}erojF z#UCF`CvR_#4Bane+gjM$W4GBik0SNM_h(t_RH0ewScWinzaQJ;cUe0I3fB~AO9ILJ zDCQKy0&zUj8HPo21uaH|BUNuD!8Q*COVj#@IDE6Q<*lu)Pmr}&E*9d+B2`TS;2VBvs)q6_PGGoWdT~QJ9E?ewzfw>!FIwr7#p)p z^u{jVjN*?qu$}|?;%*L}z8HjHBA-m!hS5eFs=kZu2}XHEWf5%uo#}xn%8@eVT%}y$ zc0d86>ANKo^@nO|YO1MGO?LJ4h*|4i7D>}B4LxxM5|s^62>KrY-rMMn{Ns(q@Lf!P zT0+J|#BA(UCqhMXm&^_th|urG5ehUJbcGEJqTm!9&1Y?63j>96EG#T6vL&zN-{dhL#>yMN#krADhq2R5maswr)IvmDCZ54LEtz8Q^K5YLs z8~D54Gi85yeI4NyDR%sH{&gV=fCyg z5)~EYaK*FlW5p-+hn8|`VKdzV4u%7iS5+y!fBZ4QYMC>$0t|sRbzYhB&M21hzw@=Px9g`Q zT$W$OzoPavq?E|C+D^mi65!)c-kHCxMCa8vSl-|e5m8=2>@(q=6fvM-Rd&QmvFE(T zTD39MRb_ZIXXct?z@r!=sxj(_oVOw+Bcrt`(fo@w%Fd9i%1CbQeZM|92o=CwGY}>x zzhUCUT7yxamNnD*Nb&ucgpk;}$8Y32;t{sj*UB#=bbZUZO=pTNo-g|0$`$x1^H8J~ zz>i`cor3?ev$xk79i*?WZdhALTbsuSp8{I~YixXngM^w`n3&kolBw;hukY))1_jQBOy~nPTb!COixAxt}!YNbRCsDKeI_IS*_c&YJj61;(#3es6>(ra99sZ+s5>xK$I$*ZoeR->V&hM#iLo-`pS?8xB9IBn0%8u>FAJz?!=ezDsx4RQmK z6hp9UIx@5EVA&d5`nU!#g3%^XgMUuXR_|~glII}I469_r6iN!a4@6$0zdnwoClLoU zS&pT$_ZXU5+9K$@(~XJxVzcobZ^9I!4#cjB!G*g@>9{i+d;3_aO-ORIrjYYWo7n3U z&dbKPW(RPi1?n43Dw71rk7PCAxW$PZG+Mvr(pX4*ABKf%BcO2%LwbZ3#C7`aDo6y1 z_M@_!bS^YH5TsG4`Tqp-)#1Tea%7}f&|fX62`kr=2@!{aNvKC~a4m`*ja;YL^ONAR z%ygezcbm{!1bRgNH!1g}Z&OK2H9lSL$WktN=$R`0ds%6IixqC#Vl65Pw7@ zWNY6Q@JLLLq+v#tP6~s~Z~oeQwm{F4rCipNQklX>$&0ost0-90&H4O%ljvr$u|U}NzWqxt!?h`lny`d zDm^^VW?|Q(s!i{L+hfqnp(8Xrrkv3^bzy-Jn5sNHlDApIbXjr2|KacV8di&03!;cL z?h2M?7C6{A2CeoeOZ)BCyLjGWq#jTDE%xa6e&<_=Tnxp^rINUCKtY8?OP8ZS8I0U+ zDRibk-emV08L&8!-8491U{0f6v<|1DYGboc`>C+Q?>1n{1#{x^;%2z0F6BvZ=ma%O zy)9e=a!Iu1v2{0g;ojG}28bsyks(7!k9Tq+C2yjFak1fM6N9JOg73r~+UXiFd9q^1qhTHn3Dr_Kxvez#;6Sj7(XZwr7%aY8 ze|qMoFuA%{lC+t@o)9j?&~nKNM<=J$wa%d{9lVBejJyjjDl8i)DGX=_An0x1+M>r* zA9rlotxW-14#XI25i{r^Mjy}O|GCJnWdnQ`TLtu>z$oPd@vGSXwbHXdZG z9KueAHbRehgJ#>19^$pcB@0pQz!3yrx062m=68wj8hY}X->D=dhmBudT`$&BF$`Km zxFUMLx+|PnVWF%qX$g9aQS$PxEW~!T{=xlf*yEu0rT6nNP!hrL1H!0V829YIdP)Hb zSROGOsrLUW8zjImads`!2NX#07y!hGWvH$UfK~vHWEg!?6BW=@8L$8lZKz@eU{wT@ z0J>~jUyeN$V2jW~0FMOfD$fgmT*CmBmR~@F6)1v=p#Ufy#8&>#VQ~gbm2D)OiU^?U zNRI|=80i4m>*rFGMzp!sy!-iMCq}j!A9nf7L^`2P-TY928E#5gRLqg+Yxx5$uii z3gP0i-#Oa^`emw6|DXU-d*zfm8Nu&TzFzWt+qiSZ+GIyA{k&I zsPCYb4aHC&0cbJOH;ceP3m}(NvBcX`QhpDW>@8 zqQ}Zk;1@byeEmKY)ZmI`hTFWOxq=o#aQhV4PZZ zZm#=TZy(SMk(HIj?=uZS&d$!H*)&8ro0_>`=6DqO3LMz0(w#N(m7evF z7P2Wr{D_D?-rkPO-P;{b%O{Q}7-YhumQorNqW*2(=cxr9o~=&Hf1^%&Y<4y`&1$ht z5Rq!$EHw#IQ-@&{{>Ko>B^iKbV+;(@ekLrv@_5NH*YU4AQVp=J?+V^tI`mRy$2qM6 z&1<)RmxWwjo|1r0GAX9i`YKD{++nB0ghzz)V#7`()dC$fa=+)RjOMF+Jjlq%0s@|~ zsAUI-RxKKVRH+NUnVEnn3j2t^ec|b%S$3ZYEXNPqobp1sB0kp zm6st|vlpK9XuzIk4u={U6;#U^NrkP-%BC&`Wo1~|TGE&*{U=MBH0+%---8=zTXlSL z7kxuW`Yp?>t*a2ooIr~eBX{?w%dIMk29G7f3A6?VM&(e;*$ClTW@6a7umc35Qc&P( zVuF>04HHXT%YFZLQ*7BL=D*T0V^?K08UWy+H z&jS6C;m$0x&YO$NO@l7~bMvVhqxhDsRO~C}da8{G7@`WBo#Vt_v;9dU$r6DdH?+l*Q9xf)D|w_|AXtcs4Tl=><3o|HC*`^2O=7n%de3 zOOnY83*-CGw}&avQ6?91V1p`pI{YT8^Bkq&c)6m&kTHj0tTtkIVfx3H^RO`f69wG? zo&UYC6Cet{rd%G#*ab7Ha62>w*!d}dTc9$fi z;b^GHo&Xx0_o!W`jVDScZYe1EKk>0mN?b~6vh8FLWqU~PejrIKMo~SWeI@1c`WWA7){W@Wp zu;0T$X;}ItAzWrka_R*j(`J2oS$ene60I**3SUV?6hs07I%gRq_+cTiq=WK-$^^@aptw&irc`A8b9sTZN(5xgd=$aRVe?Ehv!oze@t#KyNhF_#Zbw1JeFvaars?ZlL#% z8=&g_QUpNxQ~)<1n$g7i#|=O4(mIs!OARKLSJn>+XDn;)P37f?Nz>5(1t6Y&IRF3v literal 0 HcmV?d00001