From 7ae2d13ea182ce30d0b68a07843b74e2a852b3a6 Mon Sep 17 00:00:00 2001 From: Paul Scarrone Date: Fri, 22 Apr 2016 12:52:29 -0400 Subject: [PATCH] Corrects array cross platform support and adds testing I believe a visualcpp variant alias was used when assigning the dynamic arrays to avoid pointers - This brings the pointers back - Adds minimal testing example with #pragma - Changes binary build location to the project directory for convenience --- CMakeLists.txt | 3 ++- README.md | 3 +++ main.cpp | 48 +++++++++++++++++++++++++++++++++++--------- scrambled_words.txt | 2 +- scrambleheader.h | 22 ++++++-------------- word_scramble_2 | Bin 0 -> 77900 bytes words_fixture.txt | 3 +++ 7 files changed, 54 insertions(+), 27 deletions(-) create mode 100644 word_scramble_2 create mode 100644 words_fixture.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 890a709..a47bdba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.3) project(word_scramble_2) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") set(SOURCE_FILES main.cpp scrambleheader.h) -add_executable(word_scramble_2 ${SOURCE_FILES}) \ No newline at end of file +add_executable(word_scramble_2 ${SOURCE_FILES}) diff --git a/README.md b/README.md index ad83eee..46e7307 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,6 @@ Game built off of last week's notes ## 20 Programming Words to Unscramble ### Can you get them all right? + +### Testing +`#define TEST_READ_FILE` diff --git a/main.cpp b/main.cpp index 78f05c0..d2b132b 100644 --- a/main.cpp +++ b/main.cpp @@ -1,23 +1,41 @@ +#include +#include +#include #include "scrambleheader.h" +using std::string; +using std::endl; +using std::cout; +using std::cin; +using std::ifstream; +using std::ofstream; + +//#define TEST_READ_FILE +#ifdef TEST_READ_FILE +void test_read_file(std::string word_file_path, string* words, int size); +#endif + //long file paths again, ugh. -const string INPUT_PATH = "C:\\Users\\Samantha\\Documents\\Schoolwork\\Spring2016\\C++\\word_scramble_2\\words.txt"; -const string OUTPUT_PATH = "C:\\Users\\Samantha\\Documents\\Schoolwork\\Spring2016\\C++\\word_scramble_2\\" - "scrambled_words.txt"; +const string INPUT_PATH = "words.txt"; +const string OUTPUT_PATH = "scrambled_words.txt"; int main() { + #ifdef TEST_READ_FILE + std::string *test = new std::string[6]; + test_read_file("words_fixture.txt", test, 6); + #endif // get number of words in file int size = word_count(INPUT_PATH); // create empty array of size equal to count - string original[size]; + std::string *original = new std::string[size]; // populate array by passing it into the read file function - read_file(original, size); + read_file(INPUT_PATH, original, size); // create empty array for scrambled words parallel to original // when scrambling, do not write over original array for comparisons // later on. - string scrambled[size]; + std::string *scrambled = new std::string[size]; // for each word in original array, scramble and store in new array for (int index = 0; index < size; index++) { @@ -120,10 +138,10 @@ string scramble(string word){ } // read unscrambled words from file -void read_file(string* words, int size){ +void read_file(std::string word_file_path, string* words, int size){ // open file and store each word in array // (Mental Note: do NOT use getline because it will read till line break) - ifstream file(INPUT_PATH); + ifstream file(word_file_path); int index = 0; for(int index = 0; index < size; index++) { file >> words[index]; @@ -131,6 +149,18 @@ void read_file(string* words, int size){ file.close(); } +#ifdef TEST_READ_FILE +void test_read_file(std::string word_file_path, string* words, int size){ + read_file(word_file_path, words, size); + if(words->size() == 6){ + std::cout<< "read file test passed for size" << std::endl; + } + if(words[0] == "binary"){ + std::cout<< "read file test passed for read order" << std::endl; + } +} +#endif + // write scrambled words to file for viewing void write_file(string* scrambled, int size) { ofstream file(OUTPUT_PATH); @@ -174,4 +204,4 @@ void start(int size) { cout << "\tInstructions: " << size << " programming-related terms have had their characters mixed up." "\n\tCan you unscramble all of them? You have 3 guesses before moving on to the next " "word." << endl << endl; -} \ No newline at end of file +} diff --git a/scrambled_words.txt b/scrambled_words.txt index a20513f..7f19256 100644 --- a/scrambled_words.txt +++ b/scrambled_words.txt @@ -1 +1 @@ -ybrnai rarya rgutamne tionrep aollgb eubgd aermtrpae rtarcahce saslc otjcbe naorgpmirmg iuofnntc ergiten eedoreplv olop oicinotnd llun rintgs lmdsuuo lbaaiver \ No newline at end of file +ibnyra raray angutrme oiernpt lalbgo edbug teraarpme archrteac saslc cbjeto migaoprngmr fuiconnt erinetg ledeevpor olop noiidoctn llun nirsgt ousldmu lraeviba \ No newline at end of file diff --git a/scrambleheader.h b/scrambleheader.h index d59b424..7f1f543 100644 --- a/scrambleheader.h +++ b/scrambleheader.h @@ -1,19 +1,9 @@ -#include -#include -#include -using std::string; -using std::endl; -using std::cout; -using std::cin; -using std::ifstream; -using std::ofstream; - -string get_user_string(); +std::string get_user_string(); unsigned long random_position(unsigned long size); -string scramble(string word); -void read_file(string* words, int size); -void write_file(string* scrambled, int size); -int word_count(string path); +std::string scramble(std::string word); +void read_file(std::string word_file_path, std::string* words, int size); +void write_file(std::string* scrambled, int size); +int word_count(std::string path); void start(int size); -string get_input(); +std::string get_input(); diff --git a/word_scramble_2 b/word_scramble_2 new file mode 100644 index 0000000000000000000000000000000000000000..08af0cc3aeba8e983beb2cbb4482f17737cb09a8 GIT binary patch literal 77900 zcmeFadwgA0nK!=EHV}|{!VF?`P!C!(h?a0Erk27f^uVqp5DJB=V3MXO3G@+x=lA=g=hN(Geb-vgvz~Q()^+dx>+`>U@kqz1Sm-#Z1&-q!i@!KLywr(sInJB# z=i;xqxoOpf$qyyhUP9l}UqvZAB%+*YB+%S^d2;>brBQ@`s?^Uh7^*mx_^UF(&CR{- z{k;Z&l*^kt0hxjS7c&}%cu^rbL8=%wH}~}RZRp8+mCO6oS5@A$$)v@Wp~}cR!g#2> z=8pEwUG3fQE0@>ufXX|Ig^eGvajM5b`d!o3*4*CT*51|I+}paLT;A}5D(~|qlf)(R zRBHa&+}zgF+ugbK8sk$g@9b}?yk8n2#KpgI*^swwYfqs<%H_o$R(V542ysb$6bpyD zxw&ua4V_yzHg|5_v`uhndl@tGYD|3)m+Mq4vbnjvqj^(z>y~!)E!S`QTdH5ZVIoFf zc*!5zaV-*TZeG3W@>NCArc{noZTx`cXE56_HQNfM_R{jwD#c-cDAtQ|8f+M7 zbMw~C%{|+nwcvSBeLSl2)*JmC;FoWA z8+r;>fbvW0cm20jUR@!{68%hb%!d~2X2Y6`FG{XnbGZqcQ8`Xm0n^pcqL}4YEbHx# zlae&S7e`nebRGt==7)|mjEG}D0!5*@v#^mUFlM&~e^pO9&g}@l`+(z2K)~zZ*MvX* z-V1;J#o#_0bglRv`Vqb0IRAKvpx47Mj=y8@cWPfx_oV*24%i~N$0cDwk;bdU{^sa4t!R8dG9 z>9?J7%F@%8LW#}|qE~%U{ECV%qxwtZU$(ucw|&df^9&1OJI*`tNBx?9spWOD!6U%@ zoq|7x6L-+#@b7R594>*wC2+U|4wt~;5;$A}hfCma2^=ng!zFOI1P+(L;SxAp0*6cB za0whPfx{(mxCH)xQ3C5+|5xt7Q*rElyFumke^27LesVtRHT>TL*er)fxa^!!60Z(E zuAg;%&wb{=f#}VjV(dwApNWlP-&+muobpUEa`XorJG$RGV1DidcIM?5gpBHkE+w{Q zNFL@k_bPu5((4iC`ZKPdse^0HbF-^rL%ZD|BmNaLt73OPlC1jvs%LjsxUtpq(Fvl5 z#C82@w~~pt1J5%d2&;vN*x(ZE>$`zRd2Z)4lY%@3xfT1|AQYFMiPOUmYe)i5i0?H~ z#~>8qhwBvy@xvBD86keALy-_a)1^p=pXn#^!y)lh;)lbEg!tizA|Za52FiMac$$n< zL#u&FdMt!bZ0CFN3?zcj!eM+jyJ#O{t9K>xj7lL#?om_$vP2nfrDi{r+%BI+88N3Z z?`~w6*;Iv+~{q0vjE2#Cy?4hJCJ~#--yjs?hhvI__~C@0j1WIF zrAUaMnN}pk&&&|{VI-bP{BTZ@5M)M?5GVnZ^?rh<$;f_aH84q!;z}o$N@x5+rPJF~ zI-R!CDI;I$l3S^C<}_dFS{B|sDk1AVgD2Au#I?e6AuJZ&ivuIKO}tPtjOp&4UFe33 z5^e<>U=4Mtcm#H0N~#ieg7rGX)ctT8B#J%>5#i*1h6m#ei7r~2Z!n(vOH^>gpCzML zLlSs`kcfKL3CYxIm?AGBC?mwrxEiHNJjaFj{h;8Spo|bdGp|U9pK+d})`qOD-YcwVnVE>ud~a4_3rXy%L;mQW zNY}BX7?ky=|`fEnI7?kxoKuku&C& zq(obdpBdIF5`sceq~vthKg|ugt6cx1Rc^4h+VwB3<|skkd@sSMeps(U1z~Jb&n6)m zSHl#AEsBKrVTU3ie%Pf*82m7$NC<`iMM5xiC=%j_{fbnjutt#(^c+P({IJ%JG_cT7FJ%)2}>BVxgdLKDgmoR5_p1wP>}BpOISE0VUvP_aiVD7 zF2`BPT*mHxB=vMfI>QupNjjqyF^?Dca+{7vI>E|&?_qMwetD@y}OKpKwGoNY4Z8ogJ3JO!StWsw&Vwn)D?PEjA9ieLspa>Nx{>W|5#P(xXts zQxxxe6OxK2CpGO!C?G5q=3N~B=+Fx1OF-G z{EMQD@2!_ChfN^)asKC;0{xKxA!QeWVMCD+3>%7+aGWPAhsQJn&~PMNhz^hR*Ws~) zL0PW_L{tep@d+~Y0c#ftszg!0A|XZN{Le}>t(Qm{A?TrsgkV0TNJxI1Z&FVoerCNQ zlD!@!Gb45MgvpjLA(|2TYeuRWl=Z4WOh&{f$k3-S&esrORYl@^aYZCL&TBn*>z^-- z^IyIdZKi0PZ$N!S`(WB2#zc1!9nD(^OpGEW8EG{zTjHq%g`!BwON{f%=*^0z;eOFH z6cl6xVeThknMlJFg^ngK1PdiaLNM+s5(XGuMM7Y76$$afIz>XT7FDDwg%g^d5I>w! zBn0zDMM5y;0m^#!`8y{h}iF z;P(ffXIDyl7fI*g{mn5X#gT|f8Gmb7e~*#6(Ca&xFW+mC?0JHMP!MK>5*Btz*rcFf zoGALJS7un5@-9g~Z&<&(80oZ$*_Xvh`0;O#x#2hsdej4cq?!Pi8l#}{%`{#xx=bvr ze2S9=bX!fDo(HfG;niCPYx1sPW`arjNBahar_RPf;v8KLwz`ZFeNJQ7=3@sQ-AH6u zR9M_8DuhF-0zJj*#w~-Wko9_z1PU3mExLk`!`#4b*2nVcSXc!IMwgYc;99otHjFOs z(1dHO9A%Wzg?<=aJdIIpV_y`m>}NL5Me7wM; z8#x@+9NxN&g2EBaAw4CB^G};vksQiHbun&6%tEQy;40J-Y#0I3tKsZ82!+5jC=vqGph(FYEJ(ur%vPxYM zIwMJh(;)eb6Cl|R;R}UeC8S6Q);EfjNXDnYWHW9AG-)Iun2IVAf~lw?lH!b03No%F z6y=uhjt%lYEe3CtgOj@z#tTuj8F<4YM~Ux^C=!D9tZ4{=$yFo-yF`jekp93E?3wvZ z$%*39AV6tE${+-7N|6w>DMd=wU_Ba+u{1uc?Z^n2(nvxu94Hdvhck+VsFh$NP){LP z*C-OA@=*v(2D&*fNT~_IR85I8*C(1sKV@xz27l7kCqw77r> zphTB42tfl;Bm@g*MM|WAMv4l^2yiu$5KI;n2|?pgBqU!zE$S%*%Na#NV7;gm)>Nun zTEaXbzBi@?WLi*_h6%xHP>~SyeMKa(2df5tA+1DqF=K-pP3?-XP-SMMtNPv$D+|jL zA(@m^-K2O1W=*miqjx%FW6#}-Fp1y}Oj0!C#s)j_MBZ4> zv4^n(A{mN3T)q7Jr9I_pjVC%)!Z5Rzj4hEiB8D4&rol)StRF${6X4NqS5Z9C8-}jY zFV1nCXQfNpC6jhiPCqJgzrZ3YkVWr-DGZ(P3uMSA5=$Sfl+{qU>~W0w(K~k_M<}*@ zd5n_;!7$AF2^aqxb}3QZLsDCl^pp`RWf`;xgO%U&5ieYJ9h3ap z$0f;r8wWz^hR{(Jno^-7DwLigw97IWp&mV0h|2W=$2iqOsk4 z?7*WNd79QdUH@K+3#T+s^prd$EQ2lHt!cyymwgKpjOcO|T5scEp}8Ja8XbL-ZPB4e zkHVC5mg2EvDyevaf>00+3?wX!G)$4_`~eI>C3=yLhrr1}5pk1S)?(Nh}LZMl38e>22oqblQccbm8m`rVHo7--0KsoVuC)KEEeN zO|eE3g}t=uEeNew!onf(oD_sTIiTn)2sPs$_vD^^#EvTa@&44avWr>~8$1>Ra3C9n z97wof2-Eo-7c}9ruR@FHr`N-caXW8zu%jUz+Z$z?;o>jVGD0|_8qia0S+!-bR-GOY zG@)F*$~C53^c1eDGOm@IRh4t7%34*$v2l=59nTLxkOc&v2pT6K%Zz_L#J&h6r~$U&TEn{;?@G{YEF}+ zrzAOL8MFx0)~x*PfE2+~m@7m-!d?f&OxTE!OgFr$AOo%7^D5aP!m=1dB#&7JTLkm~ zSB-LQRjz8~qNi|;mT(oe`U`v8<`h83anr51yv-e(qdJv0b2!g;pjyhu7Mvy{C>SS- zjzzw-lXyeOHm-#HJ|#J=XWX#zdl+27S*M)zl) zZisP3=;D468YWaIJtfyemO*QwUmN0e)F)i_X(SL`s*=+-A|%rd$?H|}TUBzCN~Whs zPFV(#JTS>_a~!f8vzb0ZGulPQC}zC;A@^t+S!f;A+hty`m-!uC>8> z_=n8XCwfpr<2Dp((#<-U2SNVd&U}PjL^u-x5q)bcgVEQc2e_(u{2MO*j&eD2P(4Xc z;i@j!}PTakJo zZg*f0uY+CvC2)qWump3DBVbOj!`60MlMbC#cfn?lG}9A-QbGu#bXnGOJi@t zY63rV|7>UxBUU~uJqV?coX0WI1Sbq;55b?T#WXSNEy1%2e9*0qGg90}8_15*H29PC z;xU;Z30B@oSv#}XE18h+U}gFspO4VT|DC&YcMUHQ?aU@@Y}CWf-Qe}stF#l87aMSs zO_EILN`TonP|x6vu79i>+{`-zk?Ws*teag$WuYy+;Z^Z{9774C*-gMSQN?tKP~5NL zjR>=y z_aZybx&AnJgrdi`6vRs8%4*2M1ee7eWLV4t`=p>T(GuNc!^O|^65zN|h}SPcy6pku zt7u5WgqRgHOumMVNLVNY$J2_0VELnn zW?jkdp{?3cMmHnxucRil6$EHYYtV3}5x)xkA?q!|6TO8!fFAI#5&z=~{`3f%;yd>( z;`NvxMn6J&l28sOzH(_s_MQCjIB1u<_z-@7b+8{QU0Tk_bxgbRbyzZ)TX$GQOJ>n} z_eO7F-mtMupGxhR+2|_utYJav9%}A$3lJ~#=CzpO%n8gh3HA^b2|@oC6bivIMUfCJ zZxji^@`ea!O5&*mo6L%YU=LA|5Oi)J7+*Y*U#wl|S_qfDTuCfz7e*|sUFdBlS#-+U z1y?$d6^enyonZ8EoSBOzu7wx60o=B->2`~2wx98_Jw$^3rbq}5rWBE&P6wW-q^5GY zH4)3~O{AX1HLCG@AQATq@XQ~Borie1i32aADxJAz9TKRS+@y)<2%p3=x|E8l?$P%; z(PDlpnXzVghI>U$rDE4qmank+rvL2Xvv#buEWeKGGnQbvr5 zL62jQ4tm7eOridWpltLwWJUjh$DzhAeoFkjPIJ~KWl9^+#q!Lo02B_kGmOb4@N-#p0Yld{@*4x<tF^0>(YnsF#m-ajtuE<3lNZp}aCFmsvv%RvsvV$2}UH{O7S%P9Kt|^F>$aXLr zMre>>G3N)fIT0qKgr9km08V4x~R)e@#Vf;g#HBm~EJ zibxI~%<46zI*|NeMt~HWlurmwB@_w4k(MGQGMLqZ$qr^lK&?g+g54lRLQ0KielSaD z6d}fj;z9*Iv9&~{a6qlPb-**Qg{FDf8}+xNNnkNaO|*IFiBRca=8B-A!K@#$aEOhk zF#_~}oV5547X0Z^Yy^(pWQ{<6FiS(Y9}ZH3{9sn(mmkaueyDV5Isbd3^xJc|Ow#uT zkaeoctL}TFCgu%`8~Wr2vpdw2!k}*rQ{4ocla=!+mO$3q3{ScOajoz;X^Mrg9lV&p zK=hn`5_==d*r?m6jvf(7S;|9&7$Z*R+!xe{PoQMPh_}Gg53j;AIt~(Y-(f;|lQV>9 z1;bs%So_)}9f!iGCmT52b^>AyH>3V}4EGh(iU}1S)-1PCm0;xySQzBZGIl}m0>>U2 zRWZoSpDAi+$`Z%CCORKNqYvP5i1h@&MdkW5!XwOm5DLMBQ;^v+&x|P&QnKH^I`-g# zRRgmeNmdQaQ*k7(4RpMVO#USM0y;`Epzi#vufj$v;ATLpe{1at&+)D0R(v1fqG9{BScCqO3-GH_zWVuPo$;9%(~ z+)qY`ih-nY4s;H59u$9K$6Q3o(P9*$Pa${;(WXJCL1#c`aI=+_0=OS=KjCCP4Gno%U%~e>-&SN*fJcH`!i6y0m)e9OI;*aaTloEg3)i9ES-x)|C z!Pww3%?AOSjWC2l{Kgd2O+oE6DE=h#^@wPVxM6BiCLtIF6bV6-QzXO|N7$jBLa?Ku zNQkxidL9ylafG3CkXx;7TP_pa1jQsw_Cj@A8i%=xgqV%vU|jZ({c+viRe~9S#1v9i zF6qqsv?OY!bXIBU5FoiK)l>)$I}{1QfT~D|lvKQ^q>KRFE)IpDdx;iG?7psU@8(NN zwtn&c3S;`AqiG1SgSIY1f{;bAOO#I^SC!Z`e#qwJiX1N?33~=LDH4KJhM-9y{$z_H zAuuC~NMLl1EHyfq*uPDSsk*r62vBsx!Ws&(=M8%706V8)N~Gwjii*w%=+a0+aGyev z5ZtFwBqU#SY4sF>!*E4H%;~6^83l6ev@1j9QFJ(%hr=HzJ^u2?9ZAw0hAHyLtHslhb6o%ZZg5kT>)(hbem%B4x~qBhmvQ_|t?~=O z%~nN1a7|Q^5S-)!WxW&dM03T;kgnpDA+f9s8L_Z3q_@c^o%WV`Kl6kE4HB+?^kvo$ z&vw!R!n|?)AbTwS_{TZi;hicit5HFf-`+|iD60mnq~NE!H+r)`_QXbDCm~}@2Fu9_ zl3=B*hjdR&!h@B)OtHjgEq%)O#8evh#89%{j7qCkUieH-OETsF-z)>v^WZ(P;=Qmb z<(n0f*)MWKMP@Hd$9~yni;lX=%plNq)-&!)EFbRRQZK(3rV{M(L2|NlFO;_HljxBT z6~szpI};p18bOA|JFrg*7;Tlw>b8=fd5Qq9od_{k2wug4!884@M%%p*YkPFvfQh$; zksLI-PP(FmmjKDnJqS=W>y=MP>4E_}jvA&!M;MosETVbHghseTN7H7k3mECK8T!E=Sjjvout%wC&rwBpSZ zaupU0Gz!tBRHAqR7B2h11|~ciN9^c58e9Xn=DU!Fu~bY>Zen3hPKmOn=z^yoa=8)x z;7SzPcc@3+3=Jb%VNFrZSl1&K)Tp8`CV`C8UACrR)RHyDC?sXQ&*Nz-k{*yVA^r~( z{OM6#kqeNoLWVR+)jv9ssst-Xu{L(Eo9C{H&Al8_#-MS(s}L<($NF!X2Fb!Gv?xcat;FL53Iv{IyvI* z+|#1N%R%QWQ)ppW5AF4i#C!*?Ntt4Wi{ByXg*pq%=)5b#86s?)nSL2mtDbdA>Xjr& z@KUazj4NbvmLsD7BNXm_ab;$Ngwr6=Gg4%ebn^{h33()%SO@ij%3IlNVZ%hKr*ga| zL1qrD$0&FUv;yZOeW|_P%?Ldj1)4%@>|#taXT|+nCU+SGo2KDuFb+|JWlJTYY_yc= z>YP_%?GkyIi;Rh4jl=2WJ#MgW*bPp{WTHOy@Q!=@$@?YjN2>!*UE?G0SdBflAVb%I zAEdp{g6432NcY-1;OU1OshuhrohkYC7!YUxEEjlSg~<7JaN4LxA?hv>7<(A4XOh`M z$xVSo7hNvur^o{qo72k1kH9}Lb7C&nk|Ss)qbR14=v43++q#3v1S{Vp?RMFlz!V+0 zOeFSOi3onWg|WtGnc!0z++~9cc`Rrjc+3Nmrx%*hJc#c-BYx60q6kuQ8MMf(HwSNO z4hu(TLFq9RJJy%$CbYBkO@U6K%BMl6%N7`@!45L(ovZw^vqk(~a@ko0-PR*Y&a6^R zbd)jrZQ1&=WTh>7nn}Ih2g3#Ooq^ipF6L;$V78BfL12i*!$e)`sV%b z`;E`IZOLa~cdD;`bVz-ysJ14RwFZMghzF zSo9Xe_miK`TgcM$XWI9$@LWdwdngC%~AM<)MxVgZbAH) z)Hk|^^>ZGo^Xf-UdDo$S=1?*yInaO<4PS=|l-iD29f9^oy{gD8;_PR^EubPh_tatB zh`nuf{yg46Q@|*pW`10ZK3;aB1q&3t%(e(N-PC5Q>CW48G3z*;6DdN#ZhO1W88sManls`ZY|5oyV5#%-G>i zZ)VB97h0O#Awnw**b>>I*_zS1i#Dqcny`;oGeO<#$Y-lc{9e{PIf!D-lZifqgl3Rn zNtY=$Pvn7~O0+x!ll~*oao8T`I#fD(aeWW5?ED?b3i?@0k9V*D+cCR0`Ew4hvu?;_ z;l*q>jz-Tnf0tqTa!d>F5$V5EMNv>F*fZmAoVN@Lcp| zh0s5lioTc!y7`7Y;dBo|VWiA`lc@#NbJC&V^T+2gwM4@f6i&_oo%Vz1Vn|W59eVU) z{V{qVWLH%>d=S37JU;V>u0K73it3IA&IUBT5KPb|F|SrU_0n$swr-t-**m!PKnFD< zj}znk#ql?)6rC)~)C$uNnN{JdGZJQ|U77uglS&{k76a&l!R9s&K()-r**ZbBZ zjDhQhASgX%Onib2eZV?O5-7><9F9p?;Y%dPOC;TSw-=`~T@oqNFJVgjOiGcE{KfIK zdJ4fuM--9l^(dJc>7XYJi-ZZ$jL=^*;xZ^J!=}lI_ym~*1M(Ngn^b}jyKN@}y1&A^_>8cjpqNO^LBPP|ejp|ryW?-P6s5gk&8uBi2wpK&Bm}qC6$vpH zC9%0p&k_p?q=rt3*=^3swl*SDms*ndRx@SQD95Xgvc`*`7!LpO%zcdpzgX2{$uL0~ z_}y$Xll5jyW+1t&JaqBJW3!*GDRdn!DA|o+Bqlibhmn{-Fa!=WU8KTxMK`>-Sa;1L zuKEKEnG`QD4Z&^R_K;qIG zcg3Y~%m`DIC-(vnhd>vrF7!U|ecUR5kLVnT69a7SjhX|E>(=Z#HoXp=x9@=8Hy9h@q9syRWzlb3 zDIiv2bP|gc7XYP&7VNiNcZt4>h@y0~NTO-QVZMiSu6`6f=H7wQ*OP`t|tcH3$(i7OWHHx*1P&4np%GeL)_W39s(={ufd9PsbLD6J=~29eb8e}8Fgv-cS&aP3 z2-~$9r>LnYsKW zo9CiOlkk$|OYChark`K$1k1QaE8(9h@Q=v+__=83OY!?VUI=!)5dG63!v~&fLf1=U zLN!?{MKvA=NqcW22*$-PoU8%*2GVh&N0G3$^HAp$7&|1Y5Kcv&M*-~e_{?{j4d^wf z3ra?5CN#bfj3?@;EuJz}HJy*dh!<4xWn4A))+Kmr9 zT@1oU(LhW_#0U100r{y&KM{rvlKiVqDIiF}r&iz)?yPilI;|b76~>}Tij4ne8c;gt zQ2WQegp`CFJRZ)nrmg)WD7Ak-fse6&baFg2_D|y;+WujD+;IRsQ^v>r;KLRKxxE+Y z4*5KIeC$9bb?$A(M;1bkdmCads)79Q7|H!4L3HeSY$w{oiqKm%oW`$`+3$6K236oiGjZ2uZinvn6FnqjLql^l%o@0WH6tf_e&1x`AD8sZe zOp*ARSs{9T1h<@HO_0PTe>k{2mLvQ2x0|;!ws)d4Hn`QT=gl=_1$K z)Xh!=-`m0;yLmRrEeX_X9)HdM8LDDPpU+nwTQ%yg2bu3 z#Hr{@3av{!UWx;7l$@%iYQ?maWRQ@fO z3qFnsaK?d^3VJ^7Gw~iKc2BwK%^5;p`oN`ifTPIq1f=4xZ^%y$My-+x%!WUZf||QN zc_*@#dZHq|?mjmVF9?`IvEi?d_U(%LB^3~qP7g5VuH=17DsTsFYL`H9PbV?{4yF+b zHV8)fWRv@)5VFY`L#KsGZSY2>TMd~rvQU+i8#iuvVLy^{h9@#SXdt``>Ovp47H+gc zx1RBzO;IOQ^$x^T4^#KtWe|zQbuU&nHfYYaXmX?H-&d%w^sY4PIfc*Oq$$P?nz~%S zsRgtHG~s3wU8-4v(@bZtGz%x^o3w1h^Yn~?XUJ%HmFpSIuScQetxhe-L6-#kZikWM z2K_D3_0Wf;;$g@_${2c&%#bpyMTUA$f$cxsA*Fh3CcHZFz= z`!j0h)RX7sg+a$|FJzM`a6&JH1v`dZ|0dMl4(NDO4QL89F0Ul^9isB!hc=BUsJxp{ zdAy!*Q~k5INY*&ZK=QG{IuUQq^ox3{OcwJs*2Eff&&t=B#LsumQW=H*DaJo9gOku` zQIQPIzup}1SGBkU+gqxjP3#lb7IezDvs39eAa@Ah!Z(oKs*%*_TOp?AoZQFDk+^ait<0u-zDXG%OQ)*wBhn1>x$aXEH1K+y|-#pH$tS84&5zHN%6!Q zTF8x;((~Mbr)IE>!_d|cEdKk1<1_|GHSoSUZYguUfD;l<+QaYSxf-{c>4)hh$-p;K z5Xm1(VuC)nLMcSv8Hjle4Eh$c%U^UK$^oVnkw*|Kx{)xb{4Y%5-C*T@A?DQsxo)qo zl_0TU#{Rg(mUA69NT(nV^OjkrhPxX=js?SkwROI?M}0?02DbMz?bsluU$~jdAi;OY zmVNQ&pd6$HCV?uN{7dW16qdWq50lL;|G7d!*oTTjys4OXy7j`25aIwixjXSt2m|lrcIF|Pf|GmM{H|wyvT`}Y_9N}+cqoGwDU)Tq)dMdx0O!tQBecce-(RRIlwB9IcDqzio7QgZ zE4pp1Z>;9H=yfOXkRK|g0~}He5J@+-zL-{E-qzR~b)J^riGSJL)@yF-Kum7M2a{UO ztt&*9lBhsM%xw#ji)xVw6i6@*RtVHUryIG;Wn49lt-n8-h1GVyk+vBKC+EoX^;F(t zydTLogt9(e^>uoqTxuk7uUh2G{JSB@2*O=ScsA(OY^XrA#(xAn>!C#hFPx1x!L^$I zM?l6E&Gt3Go{7s`VU?GOqc*B$wnhW zRf4Ln5;Exs8J|ZkVuQw*5V%+)zp^n=Zaw8JK9Mv_GjrF&>?E1XB?hs%vAINFUn<2} zPeovbn6_zdA4U$pA&myd?V?kEKccAS<^>p?2n7$O5HI3)^Iq2Y8GUu&k-IBMmC1?^ zjDeJfxluC7Q5az|$KbsPdFLcLO7%5?QIWp?$Z9KehY9M$ABK1K18n4YeYtWP5HU4)Rn37z@Ye19q%?1hjfNq@V8#+-xrpRc6vr;N1#I&ku_(khAT=Hv6 z%!Kb}c)f&Ic5<;&*6O5v4D4a^LaY1Ud*tQ2L%e@CBgUZeokoN-yvY$!Nbe8~^xG!a z0pFMxLs8&!)o`;=a=)yUEHKO+$d}bY!*4AV(BYTnH~Rf4 zV^?0!*ng1NvJ)SqZ-c@EzhK|eNF7xa@j0EN9hH@FyrV)HH1#i6hW?BXlZU`<+Gz6C< z8WvvCf_5O2R9x_fKv+Dsz6P`ZiWiE3po&D1y)8`DWh#kgB{8*u!^}!dPG-iNByT@# zpm~)Mpuzu6BmP4!G(?0Pn8Ald8N=N1G-nqrHX z8yQ+5=OeMfLe)d`fn0=Hf)vQWBokqw#0Gy3mtv0Q2NmK2y5Y%^!EC%gx&ZP`UoVrs zi_$+EE=5Dc78pvigjjM zfZeRp3micrZmYI*J3Uxa(8h_~eg&1n%LGO7^E+jAB6HT_3t6!$9vgg)+LV^AY3sp96OxJ2Hv&;UXtS(jH1aA) z10rb*64ebSLmjiZt5=Er@rc><&3*KcrVZseFQf{4yhy_A6zln;-id`wiK%<(tY^EC zuD7%N-3>UQfRI((|LYZLw&Y!xil6*6uJK9$T){Z&K(4EcOIu5YG;n#y32)Iv&lFd% zz27}WKXHf)HMe69eCYPfA@Esgf!HfSYkaweEB1pU$lhoj1m+tTR^`6igg+N;Z-(k- z<#ZL&xL-R3ALE>`PIJ;4=*=_P^9dObLRjOB2PfK+R97}d^U9xOxnSpEtQTUr5QH@R zW~}kUGXb=V2Oiy6=y5#3fOFM5&45#~-n$I{fnh!StUoy-Gbts7QxVSG@-_o*{&J&7 zu?Qw*RyT@`m?agsx3BEaeR9c!cct&P5JBKpZhOKkY84l%SqS=NHgt+X$bi< zdB8p)>@)vvj-w4T3z+XsHw4LP?H@2$`e7YR3(c2m|Jr@-Mfi$5{XQ%PBesh;Q;^+8 z>{sy=B3PG3mPU}BVPO2N8$r{qm1w+|kDW;FM({E$cHenkvEu01PMxaqd_%rbWOo@L zMlcepp#;n^aFih~CH6J0kHe2YMARxVme>$6E*ens#xsqJ_ZLSZClgXak|+BP8^=i6 zBq7_Y;WQFB76K`O89YUAqw&ACQ`hcU=!vz(Bhg#XT#Qb6dp|%USQx_d8n0LVm5Ajx z>FKy^&P;KO8J6E9ng2?W$+W8?lq9O%g{n`G>5?+j3~+Syv(fr@Kn)`RyIF|9B8UzC zR0_eq18!7EXqJ^g1zqEyb<|6MA^7jl7G{Pdsc~gA7s3s}OSTKgC48azID&brUS2ha zG_m-2Pgk>1tBJ-*)Np9H7!HY}hQnmOO1YFIaDl2GH^}%Z1GcK=l?LqKu$|;i&?%#^ z1^o#(=z=+hSqqvl7~+IsU$p7%`D&95+Mo%chy^o^53|wyaaT9McCgvm#vh@hM z=>M+7@WUkkqPS4q7R07ET85C&9%HVjXE@#>VUrZ-R&ZF+9QH$r{x0_vd(%;)^*1#H z3Af>7^jcZpVp29ub7ZdV270ur?*YM6hb%n}4fN(OJ_08U=1q5V+^K`2SxT|1>e$EL z`j?s;831s%6>8>QuU;ys@qD0N_x1S+9DpR7|jDZ-aoARH;|G<|bOGWzk`m|o?DTs8zN z>xJki;{3@-bTSJBg6JoV9hwhFn_hOQi_Re0_?&2!PR+G@1UF%7enAsP0vD=swg9a$ zALrTuh@=s(Ei^2Y%`wcoHC*l-0gX!dTCCeY!+^$xmvy0nhqW$;giNMEFb9&U1->&S zNWMvp?U4?NV)moVM*^xa-HD?}h274|C&`YXLfG;8y&z=|KGPynCTFEk*jUwNK9|0` z!9Q+^>tD5`3JUK>oK**Y;LCT^ioT)d-HzoV);`mK*^tgJBt|U>jdY7|0?Y$44un(b7KNS1$v}%)JOUfJl zTH!Wd(1r!nI^nI8!O4TQ$4lB8UrDjWtdW3>l46S~>0x7q;jj-v%;yNqdk1E-%Y^ax z%xtNOMVzO;B^Gf`a-f^EfwhRgfhR4Z(4u?FGU3t(wkGn`fsZDt6eWooULyQCykZY# zNc;@TtbCp$U!8$^GYnh4sygOfSt4_q{)H`BI49tPD4a%)StqXUFcyOX_ z^&|Mmu(@IF-H#x=YRL!#dpOPeFn0V)=6`5PJBIwe+c5nZD%^$Hk%|po%t2W%T#SI? z55uQ^fMp(Z-d(Y(CbqK{v4Z4ne)1U{P-0{`5G0>jk(`Tp*Glf>zDATyKFJ_RiEsf7 zqeP9{_FK2&X&fKc1dX@hoCVW4e2ylY{E3KYoL$lQ6Wy(oSqSO`{<)(d5@#`rkVW|U z$xr9*Hz@__G?XdXi12WtrRqH%Bp=5+g2B2JCR@{>_*;t+vHL)}5%;S5_Tut&7FW;q zF2^>Z%u_Y%6WQbg)Csyz1dR_ILiaHoAtloPYKm$U6n|)1>3Yf9r*p?Z2Wdswx0CQuxcSR99Ki~bu;}DB<=u$hgkV$MM@SkW_zzC-Jg5!_|DLJqiFL1kc_^X9`2DIKL`rRP;UDk{-SL>!wIrv*!m&VIe)|1tM zVuCj7CW0iYp}Wp)n|CWP1&1rIqAh)R8I3US=BsY9yYwy0&`sR@)YGHT!hoEYG>m%0 zpX^qtjcpu)B>b(ZEo?LtQcfd2{`!$U^Dd4YiC|XLAJwpOR>+8BcWm;Ncq??u{f7?7 zk`AX)_JcAi;$?>DjaXR8c8csRMeidFDnBn%?3EcI<`6=UBxC_=#(-!!V`B?}6&RXj zxR!VD)f9_m;1RQHrUif_Z60d}H`ij|qZdZeel#%-gCJNb)nSNcKqH2##^8gA#)Thj z!HlJY?ajkhoi+mAwILm3IXWomx_5yX@H9RfHVoygE;Fr86DP4Dz+zB2cqGc{^%S{n)slk zzno81Q+bqyW3pv8YHUI43dLMATnjUyuZQUi@Mt=7S|pB?lbMuTYhq3|c=g3}IeRHT z5-#&yt2GF>$<0cDUY`usqCbD1Yg5^~^2Z<7wDyAp1|X@nAL=@%E~lHK`3}4n+0r=z z9Hy8h!-HqP03%J$f?`9OFl{c*@K|#C zfsvB=7s_!MG#d~ z>u~E)Zdc8M72}mXitU?;d1t`#ArT~=oW*N`JAd&9f8WmkKGkphF6Mu+J6M_0IWhY< zFpWDE(FxdzoAQ$n#cr) z^kQZ11q4XEGtnhtgJDU$dOvx8Z1966erMzT_}JhV=r@H2(jCLqOBQ90EerT_7PET+ z-)%9w7w{)6PAlGSalhit7I!Faws^hbwHCXIlNQ%2uD7^W@p~+;Q5?6pia48`1wm!( z5UN>23!g((?T>x~>j?*H<$``&U$MbHFa$|dX5)-Mz)3v7NvJ=&Z{I|La^nUL=Nk-> zs^xLjKR}}NnAjlZI|cvkk`nfGvlp@)@`~Zh5NfWAwJjKM$eqRPyakPKXb|S`Oqf*r z$G7yX`);`R6yay!UQ!gd7r2=Jao}S9&jT0pF9I+54{;tmLhbDiH8-H~H5%+zz8M=# zZn$Im>yo?tIj?K0F9+9y)P z_+d*XO@dc1aiv!Fa?wbK{l>eaCThZEkM3Fd*`V)k^z-59eI@{(nxnnOuW*{NSMDR* z+oF5r%BnPbNZM~d2*$MbMrSXEeBS2crMzI-IH%Jnfcr3*rIUBb+pxT;ob?-Ti=yvg z2t%nvi@~%jc~}0GzCB1C0b`=5&pZ0~(~s35iGPPIBr%30&`_7HHA#Gc-uNtn8OFJq z)%|lT2$z;nX|A76L45Srj4tax!7wQEXw&#xZWm>kfMd4^EC(*t3&f*(fjD;(_?e01 zl;8MJE@_m_`$XqJbZ#lVMSd05AvLG{!2jVl98@#%F8_@RC(Nqqz@8DrVrR z>7zO|BRDS=R@Sfn&lSlL)Zs|bUxmDK8thL#g(v>E89YxKL#eNf;}P@F=TXD@C4`0c zW4xT`+Kp%}D08#LUT_i5h2~a~titp&BS@R)ud2*BSo6UHYwbRCpT4ox!6$~0S~iIZ zF7J#b=kY0$7gpnj6}kuK%~-(B2q}JvDdzn|Rh*KbQw^JN_Lk5EMT_ zkS5@3j&}he23I$`Jc8B2Vo%PcsIVi504!y>8i+cjZOi2j+jJdpBfDwJGFN8glRD_w z1011I_dnLe4{AE;Y;v$t!sG>n;cW751Bc~R@=6-bA4bpMxKC2k$8F%C;gQex;Qu*6 z`nhG+uTUcRGA&gK^j$XXb5O7b(eZ8%p3x>ABL!d|6Lh&OK^!@((5(p%&C&7`N)gds$J?=vWt|?T&VGy zL^*4w*9$87@V8#}Lfvq@L}79~M&4v_@UaOjf}%~V#=Lf>g8L<^&H*qlfTc)b%ud6M zrC}Y1K!-qwL5E`x9zRg>AD5dKJ7tq1mjAxH!2WLJByr4BQqO0{yNxgzNLsO7P9=S z!}l6nWXgW>tr< z*04;d0LpVzc=dJ`-YzhjAz+RH@|6=kG7roL+<6{kc9=>&@G!84_D)`<>;P-D9Hm$M zKGe>q;+W^5MfA;~70>I+?MT-@!VNBjNd50?{6(*K{W&{*=F3YsChnV!rbJn`FtjDy z_9JA_V^Iqd#q2L$e*WbCQR!8Sz(RUWFPYvC7$WH%IOzo}1rD6_qC6ceNe-N}K%R@_ zd4xQx1R3nDPw3i7*AM9WC%UHT`XOBp)AbJa{Ril}fvzvn^&PrK==v)fnNQKRjjr41`W9Wc z(DgbFVjKWEK1|nEx;{tOM!J4R*N5mj0Ru;lgHXp+bX_3v=sKIOU(t0sT_<8LmaC=f zYP#M^*S&Oc^3?I~bRA9C^K{XKbi5HKez|ASYdfx_i%Wox8|iw2uFuf5pRUL0dW^2$ z(8YZQEvs+jU1NFI7wI~ZvnL(`cGS{!Ctc^!MH|@hA-Zm&Yb#y7ba`}LOV{7f)k4?T z=(>WgZ`0L4*W+}ZN7pau;)v1lTe_Cgb%3rVbS;Ll$i11a6X>d@>lC_|)5}0B^;g{JK$lobvHQ)y|huxQzBNXvNp@_%=f2cN5mezkzFWDW=)DC08%llzp}kD`G>E+gRDMRz zn~ab55z8lNY`Vp3Z7M_@je0HB7)&Rx=&^nKbE?A=5gzEN(+`&R-&lR?wS4op0l@ z0KO8Eg%&r!Q+@~T-LbGQ4(A&9R^hK=J02{_2cTa?JsvDK30Vp76#)4?1;ASV0$Q{) z5AeA9JI;5(zyyWo0R&UPzk*hL9gla~Xw-}O_$BJ{!?kdJ0SaDD4Za7**CZ4V)(X@4 zH%hq;V7m>eM4}Htits#%V8%FrM+Lw4a!@*J7Ovud3(ZLXz_iarD){GIibuu0c;rLa zY#8!oD)SjURsqP5eAM|X(D_|ls~m+tzQj?%!|Gw$ z?}^})A01RGLk|}Z`5&1Wbi=mpjXg_y`+J?9w(iy~8#cFZY%ch<_jmR>S6;Gqb=-M> z+(~ZjZSRh6-`3Y1zoxIfrzgIxJKipS?_$Jv#e28KKib#Xi>Q}bVeu=G06Z=f2IsQg z?#}Dldl+L|clY)aTX#En z5&W*}+v9yb2yWfHIlgUEkyhBGgkRIT zr9Ix>+P!(ZrrOa8!J9g_cJ_2IB4TXr?CE6+S}M-@+qPcQ-P+r?xwW@*+t!{F<9S^f zdyD8}@}3jI(0fmVgq|@WLGMcPaiVx~5=f5NQ-3fxmmciU)qg^dElE zak|cToc@1yoVpJ<&J<|Z6)^S_jx%$W<9r-+ZlmKgfzGx&&K}T~tr*F^jsdLKaqb6A zz=Y3(HhsZy-t!HFLwFi=?0(0o{w53*(mKYeaW;#F7y@8x67Pll)18Xca@g5(or+ml zrub?^aFHJVW}2Woa*(>xsTjEu^uta?6ZC1i+Nqf8au!V8=v1_%q3rLto6H)Y$ct#{KtxK`rNQX6m9gjbt(R%7_nhK?DUFtj{9n{GL^ z=~!AGZZUUP_>1GHy(}vlV4f|eU*`M8jT*np(6Nszp1Rr4L8XaXm6iwt7z<1N$L=Y` zb$_kc>euuV`i+(;o%pu$*?wyK?Rr!GmfCnU>J(9D=&;FWm620tt9Z7{!%ZIzw-Ep@!=9UTmpwn;BW~XE`h@(aJU2xm%!l?`2Vs5j(vOmx(izx&%5lr zD=+G*S$|$?VO3Y0fIBJp9h+!w{*c`SI$bw)umyxor9 zrzNjYUNmxi#se_CIGrOR{}t+qS;mWJya}*4Deds~rvP z^v;c?A@6J3wz0kK`rb8dZKs{q+`MH&PcQaen|n)R)^BLt*xc6I(<{wXa&`F{+umPQ zD}}Z*M@=n=ADZ{&TN!vq3g>!xiGmOiqjdStj_WWN!5g(;8v&TT!-Xt?c6 z@L5|yEm|KCu3N>+wP_>np)CY9iM6P%uWR0V`kBptRAH-0m_F)HkZ`DOdHJDrdHKpy zUCK5%SZz*ti*!u4``VxUTt{zSi!IWZcxYd0S6ATpPD<-iQc&8=5zCZr#`pLruF+V|`FZ zc%|L^OS_{ZwPx~N=+*A)r$#CsI5g`k9yz3D@?~U1TvpbmUPw}wRX4DnxnqEr%Q#N#qoP{`|^&~ zp5{%hZSB3uwHIGj*Q_Si>7F@sY#b>bD)#=;*m)yz7DgtdgP{Nl%$i7lN~TV4?Mk$&mi;s(~@g1x@=i9>t^WBAWw&Cr+fI%AglGVf^H+F@?O>Ge^w8Uhr72kix1MlXZWG7XhE#-Zc^RM$wM4oLD^ zmfvtmlvkVy+N_V{+47TDWLy#*)u79Im-D^^?rrq8i~qFvV=mj;Y?hnt&F%ed?OnWc zK~-i75jM16)43Is{NA<>hU_nd;3iAKf41N+1;e<}BF>-IZM^|gqvo~kJ$+j+WpcXb z#9LGEm5V;`oLA4nTx(Nn=Vr!ERmvo+cN^AnGQa9h)5p%hU=#&PM`ZkAf!n&;B_kt( zuuR6Z4aP-KPkZ}yL}Pihjc`I>Z#&lCgi``<=wsP(oj&0X7iI@vh3IMWEittRw@zOB7~VxoH&uy~s}!)*G~M0Gk3E?nfy z@z&e|*0#v}(?m95(Cu`-v=B2b%w{l5T<<)BG{)|(a27dJpXGDzem;jL_?-E=xF4Yg z`T499EzD2mo#z%g3(VBm`OKnMdB^Affaw*d!@pYeidTPryJ*p(krx&?ix$nuGxY~F zro1}$SH4Pha5ejt)p@4!71c={v1rj0uIesYG@Isgil16W%T6^;EgpK^*y54bO;t=) z)s0n*Ra7_4Eu5>EjU^KCp=08+N5C}bzExU$l}=rV+-ag zXBRPerfTTuF2{NPXU9}RYzO|>b@=0z9v*oo5JtSj;3Gg8r)qQOhPG2qS$Z1W3r(Eb zvN*3poXfWN^tNwVdLDwDg=E}Fm-$g>F~-#;XA`dco^bh_aWhF3;5TS^pNh(S3x7+B zFpk}wLHya@GK3Z5FO=ap6etd-%q95ay(#{P`E|2m%=CGWi(#JxKhwAP=VkJmP&vi& zC(AHpFuf_3B7Ve7uNX5u-WOxo(nXq{#q=Zp5NiuRV)7Sb@=sl&VK*Coi}wK!3a37- zys1{=tRu?6l3!9z8u5;#_(JG z55R}YPXhVm&&n&tqED-a{T1@f{8Ssv_)G9-uMHDZpJGh@M62@il05k>hEw>*K=~sk ze=#QiT&sq;hTmewXZpqQ55;fq6}1?Ci!FaOWbj8!{$kAZ?LD)thTme#-z3}x{$fmi zdq0i;IW+TcvE`Th*YGB0`o)<1y!R+^k5qn(#Sc7l_~VaQ_ys8@zr7cCt>L%$C%}Uy zE{T;l3xA6#uNYIFy$5tjmFi=$2Ye`b2^E*uuNYIFz32CTjXaC3KE?5=PcbIHy^nYb zuBA)+GWW#lfe)om97*y=`IHwYz>k>nS`2@qk!LZ(m*B4&^~fJF`HM06yLvTj+VER! z`Qv29&+^9w71Fo&Cua@6#g>1TgBpI8zZgsU=KkB8j@I(9_b@GgT(}GT#hCo|KH9~G z-{M!xKW5V3Y4|O+{B>pN7h|Sx@9%xx@LT+9`R%>G=M2Baua@85PhEz$kEA`BdxVx> z3LbeNzL*dG8AAON=KkKbmfv7TWBV!2FZqix`R)C`&l-MNyOuvo} z{7A@OjLC2Bb@RnL>TfaQlb`RD^G8hnVoZK}|N9q)-(t((QpR75$#3tSACK3Vn7+l9 zKhDJQBWC(>0{n={Z||$V!|+?oaLGR-<3~*X^8RS=vwqO)*wg^6dTm+rUqG7Tf%F zsXBRmiZS`^z5hoHzr~h+QyIU-^N9aWFyAF1UTQGkDIrc6 z%y&wNFEg0$nhAM;%^(wcT$M=8_ai8 zi2o089Mt~ectbXB0qEsr*e}Bmm*M{@!{;AYDzCo`-(QAj%kUfCP|E*-GW<7X_+NqF zi9Wyn+nT>wgS!l7o;UJgeorI(^}u$0aMbaN?R@`4gYEqNRN%K(r1JCgZiDUo`d0?q z`SK}m)cAJ(`x%4n{PlkuZ0Dax)o6S>zdYVxJ0JX{!FGQ44+h)$+7mXsU-SRQH>o^3 zpK37J&W~;}*v@yR47T%^7Y(-alQZ6I^fU8|4ukD{;mZcw@t^+}HOtG6-|zn`g9lZ= z&|o{>e%oL>UM|4Cf|U0?8vk5_?RfSvgYEeAkPZJkjsJqdcKmoB-gKorJ05H{*xL8) z23vdm6@#t){k6f?o}Thnm1phaZ3grGFKK3PGx_}|#b+68?agN3*B9B7n+&%0WXND^ zPd;a`wI>f4Z0$+bU~5nKKR-~uwI{ze*xC~(uHn|6{H4Lxp1jjwYfqLNZ0$*d!PcHM z1HW}~%5fgm{N8P_eLw6w26vh8H=U^QXAN#N*uFn@i@`H{RNg-uJZJEcZ-@Rx{k_Iu z+uz>}9IGho2lZQgh02>Y*zPa<%;KvwJZG@opE>g#D$nk3oNut*|GAqO`M2-cOdD+9 zQ~86zQ;(|r)0ZIr5onL*y^&1@+xJNBHQ2t_GecZ~K@>k^%Xv~T=09lX#QzNpx`5&Q zJ+GKS@^ep;@I2mDhCfw?A1K4mm*ETFSt{?&GW^pr{O)&^#_uV^6J@xfwlw~#GJJg* z{>L&rTZZ3wa;dzgGJHoF{+BY$jV2UczWkPz;cLtAXUp)9%W%yprSh&U!=Ea{-z&q5 z-c!ndTp2#846iK1SC-)|WjIrYA1lNEU51Z%Z>c_KmEjMR;g6KzZDsiH%kYoN@ZzPV z>AkfKyJfh!4BuXc|D_C9omwhCS%z;BoXWR{U1j*rGW^$N{9jX?@2|Vd!XGcgzbeB| zm*J{9(Kj#e&1Lw#Ww^c!C(5u}hA%0@SCrwa%W!)c-cpA9%J7ad?3Ll$%kZbl@Tbf0 z=gTn1f_Yd%esJY=_~WM`e-Hcu{x}c(11LXpQH{T6;XWSpMbPK)_XfEC5`Vvg`~S6f zt-X!ZP&7Y1$GnrV zlQ1BWYLAk5=Gq?Hvz~9$t+#!7od;yS@ z29^6efWN2vwzq5h*DCD2NdT(BoW1CtpZ45~b4GF(eBKu-BfQQkw98)YPp1`j1qRrh z&Aq!NbQq@I`18SxosF(%-t3XJz5Xq7X`f-=yIyk+s}Aemd9Ma+I2aG0#4)(h8B6^V zUVpvOa_R@pb&Z8zPN3j0WbK!*dyZ}HdD^6UGnz47pX#K-1p|N`Pp82Mqzh8|VDA$d zyXsA+3>qK{P^RYWWN<$SKysKdcQOf}Br($GoeX?$87!&~{e?clmh%|{Kb2LhY&7l% z%bNki9w)nZn2biKlvW-X6qDIwdF65LFULYk#0v!by1b$%GDM;RF0fM*BXAd#iPCyX zX^E8AUf{f!SXk6Kt)22k(A&GB=dQI*+I3reM10=p+ zRjA3jLYh35%WOroN+4E!ItyS5& z#zsUy!9BKan@vhO7$L%QfG`6LF-7Z+&tGO;37Y)^H?xT3EbZ3xg5d2fgcuXr+b)-IKrSb_B# z{H{dD15YxF?vD>&gv(7qS*Q3CglOaH@*lDtx_zCNT0>$!;~>wA%({97MJq~NPw$BS z(ef>vJvvA(?<%7Ow|=Y`KFTNy6u3>zLg-uwFO<$y&wP4oHZ`LBCM6+uD zZcVcm`@7$4%hP0Uzy!R?sEUR04uX68I{v%#x>=rG}$BUI| zwscLu%QIV33akIA&y`+&7rdYS4|z3V&5hOovf`nQ*}%xZT9b9YoA%*~j0&8MV!vUR z8}qpDu+6{IjZ-IYvogM&x~rXL)IGj4OFwtLDIPi07DF%ejctZr+Q{hc3}2&I)GoBK zsa@L0pmtd;5J?hBORLb#zdK>GSZ?bS&2mo5lQN5)7QT{TYStSI@w#`h+D?yoT+l^kTAN` z6+N-Oz|Bh9q$h+B~Y1zMwYBT~p{sv!L&A$Ku literal 0 HcmV?d00001 diff --git a/words_fixture.txt b/words_fixture.txt new file mode 100644 index 0000000..a96614f --- /dev/null +++ b/words_fixture.txt @@ -0,0 +1,3 @@ +binary a object +condition nustring +butt