From db62d30e431963d20cf0adadc183f34021bbb50e Mon Sep 17 00:00:00 2001 From: LONECODER1 Date: Sat, 15 Nov 2025 12:06:02 +0530 Subject: [PATCH] Dictionary Application --- Src/Dictionary_Application/README.md | 94 +++++++++ .../dictionaryApplication.cpp | 195 ++++++++++++++++++ .../dictionaryApplication.exe | Bin 0 -> 150410 bytes 3 files changed, 289 insertions(+) create mode 100644 Src/Dictionary_Application/README.md create mode 100644 Src/Dictionary_Application/dictionaryApplication.cpp create mode 100644 Src/Dictionary_Application/dictionaryApplication.exe diff --git a/Src/Dictionary_Application/README.md b/Src/Dictionary_Application/README.md new file mode 100644 index 0000000..2c5d5b4 --- /dev/null +++ b/Src/Dictionary_Application/README.md @@ -0,0 +1,94 @@ +# C++ Trie-Based Dictionary Application + +## Overview +This project is a **Dictionary Application implemented in C++**, using the **Trie (Prefix Tree)** data structure. +It provides efficient operations for storing, searching, suggesting, and deleting words. + +The system follows **Object-Oriented Programming (OOP)** principles to ensure modularity, clarity, and easy scalability. + +--- + +## Features +- Trie-based dictionary implementation +- Supports: + - Insertion of new words + - Auto-suggestion based on prefix + - Deletion of existing words + - Display of all dictionary words in sorted order +- Efficient insert, search, and delete operations (O(length of word)) +- Clean OOP architecture: + - `TrieNode` + - `Trie` + - `DictionaryApp` + +--- + +## Components + +### 1. TrieNode +Represents a single character node in the Trie: +- Stores child pointers +- Indicates whether the node marks the end of a word + +### 2. Trie +Handles all dictionary operations: +- Insert +- Search +- Delete +- Auto-suggest +- Display all words + +### 3. DictionaryApp +Provides the menu-driven interface: +- Takes user input +- Executes corresponding Trie operations +- Displays results interactively + +--- + +## Detailed Feature Description + +### Insert Word +Adds a new word to the Trie and ensures no duplicate insertion. + +--- + +### Auto Suggest +Displays all valid dictionary words that begin with a given prefix, using a depth-first traversal of the Trie. + +--- + +### Delete Word +Removes a word safely by: +- Unmarking the end-of-word +- Recursively cleaning unused nodes + +Maintains proper Trie structure after deletion. + +--- + +### Display All Words +Traverses the entire Trie and prints every stored word in lexicographically sorted order. + +--- + +## Implementation Requirements +- Full C++ implementation +- Follows OOP design principles +- Efficient recursive traversal +- Clean and modular class structure +- Handles user input gracefully + +--- + +## Time Complexity + +| Operation | Time Complexity | +|------------------|-------------------------| +| Insert | O(n) | +| Search | O(n) | +| Delete | O(n) | +| Auto-suggest | O(n + k) | +| Display All | O(total characters) | + +Where **n** is the length of the word and **k** is the number of suggestions. diff --git a/Src/Dictionary_Application/dictionaryApplication.cpp b/Src/Dictionary_Application/dictionaryApplication.cpp new file mode 100644 index 0000000..89b934b --- /dev/null +++ b/Src/Dictionary_Application/dictionaryApplication.cpp @@ -0,0 +1,195 @@ +#include +#include +#include +#include +using namespace std; + +class TrieNode +{ +public: + map children; + bool isEnd; + + TrieNode() : isEnd(false) {} +}; + +class Trie +{ +private: + TrieNode *root; + + void getAllWordsFromNode(TrieNode *node, string prefix, vector &result) const + { + if (!node) + return; + if (node->isEnd) + result.push_back(prefix); + for (auto &p : node->children) + getAllWordsFromNode(p.second, prefix + p.first, result); + } + + bool deleteHelper(TrieNode *node, const string &word, int depth) + { + if (!node) + return false; + + if (depth == word.size()) + { + if (!node->isEnd) + return false; + node->isEnd = false; + return node->children.empty(); + } + + char c = word[depth]; + + if (node->children.find(c) == node->children.end()) + return false; + + if (deleteHelper(node->children[c], word, depth + 1)) + { + delete node->children[c]; + node->children.erase(c); + return !node->isEnd && node->children.empty(); + } + return false; + } + + void freeMemory(TrieNode *node) + { + for (auto &p : node->children) + freeMemory(p.second); + delete node; + } + +public: + Trie() { root = new TrieNode(); } + + ~Trie() { freeMemory(root); } + + void insert(const string &word) + { + TrieNode *current = root; + for (char c : word) + { + if (current->children.find(c) == current->children.end()) + current->children[c] = new TrieNode(); + current = current->children[c]; + } + current->isEnd = true; + } + + bool search(const string &word) const + { + TrieNode *current = root; + for (char c : word) + { + if (current->children.find(c) == current->children.end()) + return false; + current = current->children[c]; + } + return current->isEnd; + } + + vector autoSuggest(const string &prefix) const + { + vector result; + TrieNode *current = root; + + for (char c : prefix) + { + if (current->children.find(c) == current->children.end()) + return result; + current = current->children[c]; + } + + getAllWordsFromNode(current, prefix, result); + return result; + } + + void displayAll() const + { + vector words; + getAllWordsFromNode(root, "", words); + for (auto &w : words) + cout << w << "\n"; + } + + void deleteWord(const string &word) + { + deleteHelper(root, word, 0); + } +}; + +int main() +{ + Trie dictionary; + int choice; + string word, prefix; + + while (true) + { + cout << "\n===== Dictionary Application =====\n"; + cout << "1. Insert Word\n"; + cout << "2. Auto Suggest\n"; + cout << "3. Delete Word\n"; + cout << "4. Display All Words\n"; + cout << "5. Exit\n"; + cout << "Enter your choice: "; + + cin >> choice; + if (cin.fail()) + { + cin.clear(); + cin.ignore(1000, '\n'); + cout << "Invalid input. Please enter a number.\n"; + continue; + } + + if (choice == 5) + { + cout << "Exiting program..." << endl; + break; + } + + switch (choice) + { + case 1: + cout << "Enter word to insert: "; + cin >> word; + dictionary.insert(word); + cout << "Inserted successfully!\n"; + break; + + case 2: + cout << "Enter prefix: "; + cin >> prefix; + { + vector suggestions = dictionary.autoSuggest(prefix); + if (suggestions.empty()) + cout << "No suggestions found.\n"; + else + for (auto &s : suggestions) + cout << s << "\n"; + } + break; + + case 3: + cout << "Enter word to delete: "; + cin >> word; + dictionary.deleteWord(word); + cout << "Deleted (if existed).\n"; + break; + + case 4: + cout << "All words stored:\n"; + dictionary.displayAll(); + break; + + default: + cout << "Invalid choice. Try again.\n"; + } + } + + return 0; +} \ No newline at end of file diff --git a/Src/Dictionary_Application/dictionaryApplication.exe b/Src/Dictionary_Application/dictionaryApplication.exe new file mode 100644 index 0000000000000000000000000000000000000000..bc154c440a9048371827a1b69403edfb0f0d7da2 GIT binary patch literal 150410 zcmeFa3w%`7wLiY+5i%qp6Ch|*)Io!S~FIIa?TM_NW)>i7}B34TSiAij!Mx;uGT3*!|huYL4?>fKl+IyclCn1oS-~If5 z|Iht(;LJID?X}ikYwfkyUVEQ2C%N}-U?#?x8AmwG*iM}3lghs@|J8`<`0IZa&$bW# z{ivOWoZpWsUS8Q?tE;bFR$p3eD=V$3sa0%Cowj;cjjgiAmXTj%tFA3~P8c#ICRwsB zurrop7{bn6nN-O>VQg|VV~1I^A=Y3V$?gZzb{s~)hT)umqYej2N7sOp+y)$U=ASy0 zP`Kj(BiD;Do4_RkqQOU=MBy-FXX3@>K)%grJ*gMM3r869kYJbiOi-Mw6x5Az;EM#h zA4fz9T;p>;E4Y6`d8ty0>yZSg!vURHITf@|Dx1_ip|A#~>UPICLN2rB0k8 z0Jdp3Z@@7fN0or7--I_|X+r~*Nk-O5Ul)HGsohG^F1O)f;E*macE{!Nr56?xl-sHc z7o^8_f@mL(r&RHFZ5#{(65b9Chpq^3Vv10N#AgW-ZzmPBPby2DJ#q334hWM0ZNR$@ z=U-_!bd|~yW>1`w!hsWk!crx_0~{3j;&@Z1@^S~^6-c~~BPjfW<4wDbUvv5Hmw1PI z;!T>}9rFKu$$es^FC*FJV?H+PJB&52%$w!Msp0-vaHM8y(_V6lso z4TL60rawoisae^9)~F)fxigGUXse%lK~J*ng3R@Ms-QlRWPu-`f>Q<`1iAN=|E-%* z%Vu56)hYo@$BNVoR0>wgLa5}KLI`HAx0E1wBS0IZ4OEy_^3k_E3VeV@tp$c8s#5&r zYtf>_JGq z!{JW%i8#7WNM(WPq}T~_pa6_FTk2Ao*PI+^7!L7%glM}txs$V+?Ynl>(Nwl2ju2o> zUwQ)JZGjvdMZhKz?AzU81q6E(u)vS-IL5HZckB9mXq~A=w2Tly#ZAI6{`KiqZ?7)5c!}# z=AlCp$kvTue-d)R*5pFJ1XBryc5jM`Ep#VO&LKH`NR$OT_Cu5_cZNO27`cT!~1YC zDG`)c!-f6MGmGw9(gHQxqo~a>qf^-~8@@v8LPH|D(gpN&pGexw1#9NqxImqoNiPT# zOAST~Vcu!ku)&{`Y=#qrAG$!Edyo4>U0`7hqJ{m0cXwbB0*T+=iL38pJoxQ9arJFn zk?>Uz9wO!(gNVZ=>^nMG*d*{a>tG=Xdrb%XNW%8$U@a1MKnHtO!j9-*KLE^c4?v|i zvPg~_AqP75jRGo6L&1a41|iYWOaOlg3Sf`|(2^7g03xXW%IhptcShI9G=PKYMhp*o zz9NH@_m&j>DMu9te(6`5Kjn z-DiwzV-UBMk-=sR2=^J2)iZ}*n5~|taS?nOU)1{Kbz1Asf&(!J7(#F}C>(UcU()GK zOh#LqM0XQqwvKWM(1H(0mZiFi3{JmO&vFz8z2Yy~=`Bt+`%6v;&ch~?IW2zsD`+MS zGb#*z1+`PBWA_!B2-Opg{iM%+5|~fUhVu5UqA-saUi8~vqz3)=t>mGVlQ^%LRD>TQ zm+;!VeD*FW6Zg7jr0B~VVR+E^Q5N{Wf!~IHA*6a8?1LWaYjA&3C)Rx&y_@0g;2_O# zH;;{Y%a3%F6s|&3h~Izdpz(qj;_j#B6REyKSN{cM2=2LnxvoV>b}b|e8L33$iV_>) zB%>pYXq*JYP5}m*w%LYafVO3eLtNrF($OzJL%H9$7|oqC(Y3; z1OC^M;I((8G|PO=-Da@v$_qEWY~@mtqd?lt>C@(vKT8mvvbaRz_yZ{4o_H&81n z&5#K|M$NgtLun38oZlxlog&{;neB0XHN(Ew`uHxO`${^S_F0?$lP>LtwopRgvmf3< zd4UW-8be{v08P69R&o73_xbSPOp56Rnk!zu_rp?;)Dz)D1Ulo3XkVD&r)I_j(qMDN;vv-h`=UJCyCpGXz%F|-+O&|tpF#(n^L^Sl)SH_m78pt$R^@1;=mND>f} zRr?0ce?{qu>{4p`X07dfVrN_o9fBDo8l}nh18vb{RgL?S4)0=cU$fUcGdVC4+!6B5 z$-&_6FmUe=nnBMy2zC@E9lYDy8MHtS??=HjI=vqp45_8rP=xdIrKpkcEaGy`a(+csWyXRLc6Elwkc6V8Ua1k)<_WJ z={>Y`r%N+kGJ{g>?yw*NtUJLlB#=f~e_>AcZA$Jy<+|kHDC%SVYD1PnZDLsYpo6_>O`IjD@U*x)k}qj*#Rgt=rUuFyeoSan!@>1OYgklfIv)6NENVw>}mU%@fr)WKz0j8i!0My$BxVru)vEv}NngnEkxT)FOqNI@$ zlBL&#Lb5mA9QX>=o27tWE~$!=ZV5DshP_>)>0Jmk;n34^;*$MA{=|jxEl##UAS=8k zrFoGik2J+o;N=^knqr@FrO!B{#T66E^I2y6Q5oyq(`QKHg&7y6|P4hQjmc@HF z_mZX9SyHh-#5L?0>I9c9)QGn;bWqF(e7^<$XHe$UUkNvK4OVUERDG;Pg)HS4z;zv$ zoZF+w(DVuHlWn{sv6VzoNlp^sMEe!I>vJUb!NBK;UKk6~Y=MJRe3o2=f4IMFUUf8; z$IvUmOLaWIlAH`~=EqZ+e?cljYFuC$HdCk@y$S}($YcuQ0TW<>3VaE-ESc|pZ(fnN z#rq+07-S*IU}vGdI2GRwR7462lUo4>yXo#Th%fFlX4ehg)nKe7n`xnZ6jbik95J^? z*5kmRoBK?x_2~dAd{e2W>6EqU+f=$%q0&KX(>f{*S%uP@s|oau)w2trHwoL9 zZh>!Do6^DA-4eI%Jhf$Ydx>PY?@_b=HQL+s{V)2q?kKYOpQJ1IIV1wl0LOjKX7!xl z7Z$7MKXE~8FDT=AocBJdhJ88s2X9TVZ4Nc%fdOMx*!z)gP^|KT8ZNFy9PX_gn1BgvWkqc%RsM zbCO5CVI+~ZLZo0U$S@48JEnWjc?kJE;D*PZCRD>&j!Xs*JW9x)KqBFfWB+clM7WXE zfqMzz*Fd1&hV})Ir?S9TSV!^k5FUNtsL0{>%X23`-%~J)wz{#s5m!HAU68KbgV}gG z^NN+BvAY3Sun^&x@_6;1n19G!<9Ikb^G_wkeddC4JEDJ<`%G9F?>_UjGVPBx>+7i_ zAyM2ZKE);|QPy7+C&%&a)t2_C#5!!@;B)X;=o3+b0^#t8ItUlqyP2v(za$07!jCh? zFa|%^9g0eM$Ndk3`56c7=AJe||-s zz==}!c{^KD_Jw}kZN7rqiy>PZ<`7?MoPUAAZ~h@D_=1~Vh4XH2re&uIkfwK(8=4M! zKW@*YZex!P7xDCSLld^L;EPz1eo5w`SxJk}m=C+Phj`RZF>a=HR}wia9L457zr_0| ztEZHP(fRRK&jMWd;BDTH)3kga!=vd~%2CIKhIqgDmXbUY)8lgMu8%?KUx`fqYL(Ov zF)(aBv?g+&pJ?^asCUyEbHUjVK&(t@V*-wiuT6%XO3wK zD`RJbyaA=E>6CxD!4)9U#*?7!z~F*jPlC2LgZ2UGSU3?ehuo zgPndytmX(-B-Iu)Z+&_ezPVA}4PCGK6I37PA2+?}ugdrt=e_^5dgg*V474WfI*#59 z#9aYp-c}9t^#~Z~?WVuFKImy6t7j$%A!fWV(&xbsx&C^6|047ay-OXh?*GsCzD@o+ zuJQH>@ZCh~4#e);(0^z$(f^2HcOc5$MSI~%)?M%WSBCv|j1Q})l6>SWR`Y*_u^Z1W z67jzA>@CWDr+{lv24nPFJrl?g-bU|)J#gYDP&y5^#q4>Qs_MCvBoe;xgXw~7#L0aUNE%P z(~b)3j$G>4;8~coac!7cJzV&=L!WN&emM4%;5}d}{j2fp1gnQ8ZtJey?!W}DE@ZJb zy#iQ}?gIIj7^w-!(tMs|QEu`6DfCQazS>n{aKCM&{fM`TVi#vM==6c$8M@kGH^Lnk z!9t1f&QRH<^DYAXn64Jl)ib#AFEODNQ)rV2bMxnU+YsuJsrY8cnP!{)<|bMR!y(MbMZFlp z-^Gm|XmJzG<3(}abc_FCgW-L{Iq##$_Sd(YY2lAVD}fK$7F_V~N0T_Yp_rTxYJmbb-yqRLy++4!m1 zo7-w_numbzb#5j4mSLD>3k>e&1i8KS_!&&|tw<%~;EEPn+LKnTK%?_hgK@U+_qNd< zgV+KKJa?A*4ZB{}roS5Du4_8IUEXtnBVa_+<42fJfbBik_--Ru_;OplU4e2E-@ezE zyB8@}(+-ePAI+SoTs3pCGQ#KD|C?=(Bkuv6{o^NAPb}`1V*7w37zRlU2WGTb-4)S9 zWobM+aeeLO(V2jD) zV1YzU%}B}TnjgCXX-u;BcQjytn{Z-`^8{lxn|GO$BF5ZkvSAEniE;45xY zt0#$?DcSC=v$Ut88LU0%3%elJrw`DWNjC?-LLZ~25xeQOrO%1mAbZsfw2BR0XEPbA z8vHaPO~fAC*jDc+d{DJxLyW@HT4l`4N0qxg&DeYN=NZ;VTRm@~$(fH@J=<}nN!k06 z_g#dr19aUMz1D;Nc?HcP^um;(w<%tDvF&!+SF)FHuUdD^F@Wz)K$y8k89Z~GD;24v z>kfAiIg}fe>y3nh&IQ+xacRWPs{dZ2r+NKsgKJ9LY@@1Kklzgfe~35^?LK4QZ{4wE zzvrO8-T)?^vt*1fLr)_gm}ByO>~1%O{9^vuZFrMR(`Mgq2z6F$SdZq~(CQ#}yD@0N zpr1Jo8`VJYo}sN~sEL#`%g}g!t+nZT02)^rnQK_E300gQ<-5uw-rd$63yuCXBk+_H zjprX#9&S9p##Q3}!r=Nf$T5r!p=h#)bqA^E-i=vc{p_#{_nasw`&^v}J2Wi5biZo| ze1_X7SlM}9oro-usqwCHR?q7Q_J~NKD={@UIRWMEw?$0ib2bNu0tcoKW>WMz6KbN- z|0(tN8jNhMzwi17f_BM%MA6k46=y?NYU3A@K|TnV7FH4{s;qULumz|b)o+z-a{ zF>%uBc@_&Nf60M>7vU9x1v??Nwi_g9@umxOvYu@rZ@ZiA(5_uRz_RTR<2pR@P?lpU{W#V1(R=8cJ0PU;ta9bgAkZ%##S3O^fJLsNHYG0 zFeyh4#Yp>GRO_Q!=hom3WEeD_04>?>D`^H#3}1>rwCiCftlVY{P3w+~xL5@0n=nt@ z;O#&_!7%n>MCEQ-A2%qN3IWju+>-?l=(J#g-~Ck>K-8`v>whxU5V)=_zHCvZvP$#Z2Eg-ZYAfVr0~;#6?`;r zd%ufM*c5<&ivSGoryL00PY#ASLk=d=pJNnsNqz)fIM_9$S&4B@yt_zOC7lMU_hRJ4d@s{lM zz872yr0(lOdB1I(&z0y~V)3ovJE5oBY2s9-uDkQK$5WXy1pSl_#oGr_5q{vyP4J$B zH70;Dc746Ol`9c)y&XIWZqI~9*r?q@bPr?KhFszD%=k9%f$LA@h%{WpWpoFoU(a#A83 zc728lj0T(F5WENA$o)(41P{pJYh=rS3AO0v7A1y8*$Bw(ZNaXHx%KhX2+p68y82ue zz87t`G)`x(hk!!)EZ>!E6R1=ScmVa+8L(h8Z?5V@r-12Jz_#!L_9uxq5m3c^R8ab$ z%CeHm=#3xa?3+pyG+}zXXvykz9#Y#xtOf-&$H)9aqS}KSuft@{68I~hMiCQ$$wTYR zWR5uzm?`gg?FSIlE4*=YtglCV*Br0#+K;ZdzQTP5x!*|G1XtK67{;&G8gEC!h)e71 z_M;UvCXb+5^dRouz8ktui`NzIbBnzl$}sEe1xA0C5&LG!G{7dhKDE9+)Z4)?Zk?nf)UNiNk9#9blPN4WC2j=zDYN|?8+!W$2k zDf=qC3945{5dokSK?Cg|2<`!?&v__# zHO953pFi{K8TR8=H*L-!QT*E5#?=ULHI8CW>1>6!0NP#2!9xjbZK4|`GQW23Mx}v_ zOsb!O>fVmAXYibj_32MYm$R@DY%vOW#G%4_&)3S*3itHIw23vJTc`^Nu0Q+i2U1Q| zcvHCCa6&P02jU<)w(a1hin+}^sGD2aP)BZ+g)=mxh=5xo;x7M~3Ca zT@_r6O5P`T%rRPIc+&@^ zG>72G>4Pw7R?ISEsNnK_bUX6x4D(FP83xy3Uq*65@&fmngcXVH=@#70W$RjrJ-_RO z{5IX9D+m6GOcf8`RZx3pOkR_c68IdTb<<-(qFfpH6AJF>M&-@G2e@iy*uBA%J%Kh} zNTkB%0Bvr!GmJ&Lh1k13*9mheqPytQe=pXNKP%@xGfdeRxIQA8PG?CN z*)N(`wC=<>XzTMNr{YAh#EmneDV_(w1p*a+ij)QoMJt*{b|F7$1RPnglIyd$o6Y|3 zgunj!>(lR#`t7=-jrb_R(|Z~lF(y4RME5>>-+jO|_6#;H&DS&{&ZIXY%-s3LVpt6k zFB&}>nnd$oAIyFZ{0OsO-9n}F72d>Xy5nH>Kh9;?H>z_q7vb}lNdniP-GKym3npE* z+kMb9_PpOcl0-tp`3*Xa`o!w-fRle~65yCk`4Gna8``gX3MiN&1A!t8Ci2H8=wWiD zVJDs1pGd?veJDbaCYk1Stz=9&kSjLq{yc$34?Xn2^Kn_G1dEpgkD`H;Q__F-1gcPM zXOs|x{wv^+b=>QIf;=MSRNxxGLjNAgZ?V;9@hwhHz`pIbaGMxSV>1Lg{Tp3AHq_@P zIkA{7hxk}#8@r{TOguo*a2ArYaO}zk#k0SLVgL4g(W9?iy zG=tqDw5#r~;npCHct{rGYb2fBt#K`Zn<6}gP@hNa#qVDtok`|Oo?4Yp`pk#mNFr`? zze&~#yRHe1Q~5^>cq8&dv@%>68U8w>&C5kvdr00>*g?Vteugg*C*-b{KHAYUXdOqz z{i0TRZkFe_ z{qnq6o{Qx_N2w#oBIc}|k&M0rk-=Qw$`$g^3VnLJ-O zBJ7tV%US%)A4weJ&7~(ieF^wd6Avr^u@7#ho$1|y7Z~|*+=h4P7YLMl!ab)T|E0-V zeK<68INZ;ELOdL5;DrDlNA{Nl1dq>=iefBamv*9fO8F(qP5INIK0L)@KQ7RI44(p; zK&i+6P3TuxFJM?*>HTBiOB#KMrF09G9B}eS2nW6;7kbKt2P&B>hHs<=^WmC4dmOYl z32Z!oU{9E_2YXErWCG;J7D5ts_ED1fv>O3WUC9q&4KmM0=31}-uy|9FA@)f89v2d48PrO7BQ?DFH zI%4tV#%Vo53pex##IDxUjFmJ=(qOwGw%%Zd4{4pJ3HUM$3{e2m>@Wf)sPh`61p8>d zO&yBk#th+EC6bja9>;_qWO#G;V+o6;F?j;~0T$>2{bOhf3o=ny#|wx2_Cquk`ms(! zbWFrFi#;aK55ST@y8|&u=($Nh6K?b?+IzGIQ1F+0CXDwR+J+>Pp3pnjLm(6;y#?7a zxkn)W4`{yyPDA%S^&Fyv&fX+FuuHJzS_oObhOf!3gp+UvLr*`$bA|L66>sZ>{j#kT z(Uv!9gS$0((UKPNT)%#N2`%10RD`^ErWaw3kHI7{24RG$5Cx)<1NK@!9`(FJH+K0Q zh;fhtL)1b)qtJNfS^_>%A;+%!gp>zurC|QO1D*d}8V*r`*+8W2l1@Xjp>y|P{tQza z?l=gh;K`S@<9(p)spHXo zJ$0PPy_)Oz^P9*i?H{bSW3fW1cHnn_V1){o<Q*NEBSDo-c0j|gq!KmCpt4F@by29g5K?<`4Uve zQ|78a5WdfTfdIYQ8N-*N%>{1)kMt27fP9o6@hZVUS9e(&3^K5b&|uy$V`d2$F!X(> zqpk6e2lN)Gfqx6< zLmZd$tB%O5SPb9r+OY*qzn{2~7n=R{W)THj$yuf$l4J1UCljqe83W-j{>jABPVpl* z^(PbeqAc*ALPAVGnIOG9U>}-HKTIH*z6TufGX;{XGg2bVdr1)f0|n0^j0S{r=_9Z^ z*$FxWYb3D9B}8P8i$wMp!3*1hBC`JnFSL?0JhFF?PPaoU=;RV|O@XO+RDVyH;W(f8 zJ9+qhPYj`;NDgp^k#~pu0n87$jgc}~oBo#wto{;7kQ&PazKqwTQywz)pbN&tJx5=O zoTfLw$3qY4gYiapBOxS7LH8pqf!W~7JMjP*IDxw%G@9&3#d#=_{e&&XAm|E<6&?f{ zfP4~EV=e4fj61B9cUV2|b6NR}3L^|h(1^%W$;UX&w-FDC=hna!N*?kKCS9++Q*VUV zFok2(fYTb$vDE;GzJO7!yMTOvc6+D|I5C;O{RZl|E}mAk(jF>z-UFKR-Yv2Rp=kBH zd=Q{@6XI0Jts0;NaG|o}V^Ud6`ubS1^QS-kX^i|?3dI(E`J2Qb5gxRd)Jxf?{#d5B z7zX?v^%lwqbumhdc~UNH4nyHW*g+@%#e6irk`4~HJ3x1~F=F)mDNbOd@XWGj+gjZ- z&5^q4d=fqGOF(8Q#y~daVhWG;lmDl@HQT=rU(t>2#7L6SNlt_{ZK8;`VlIISxOI!D z49A+j$GQp9l7owQEb{&1P@jIDOyh#Cx53xFACE;=ZGrAQjfkbN4ln$}?7vG^DzakujVQ45tR`UL(4dbOXmd@P%`9#NZ(X+V=f`n)eSu{RiY zo;Eg9MMN)^ujU6Yox%u?;ArsgUjqKa)4k(=M+fH)j}%vHm+Xk_QDhGij>(%RY;cAi z`f~6AvJDh2!1Kh^5wgQx1{fVC7Mxr!HHQX&o^(B_$I!KPhdoZYO1AmgHDC(nH-fp_ zZb=ILS+fE0qj0SxqEV7s#?GI?x#cn^GFCNv(bGb}CkLbuds03vz^^FDThLuT+FnENB$2l|NuoBnl(?S?2%UW0aU&J*zz*#ObeGxA+2K(@ z@q_a|#-uuy_~6KF!wBRfkK7{?Bf8-X>m7&s6kUWqfcVKIB*jSnI{}LC(B)c4jLc=C zAI5(P5sy^i;V%a(MY_jANDSA6u%EVy?I)8$ZvrVaiK^1x=HpE$%Wd!=9$pSy4KQv$ zTtg?G#{QZTcCq5_ru)Tflj(BarFf3n1oJtXxt$on2FGcsaxyaRyV>9hiE~omsBurl zQRC8W2m^>*5gyujeFl4Cnm_iW`vGcur<;NMC6}fnHKNE&0&Z}|e`P9kvr0}ayGt8eS(jF-e0X4LTY+?7=(BhAhH35pm4&#BLl@;nIpW3X{6nLQj8Ar`a%kA zm|~BMoooaZJeA|iJwXdEmFOtn5~vi|EAT_djW^pxeifj|2n)U;IQC6SzH36#^~t!x+OoJt{)=U+kwa*jwp@5EjdS^(NKm0Um0 zsp9+5Vh^9YHf;Mcq}1jEnOC`+<20Do_7c!~_h5Wjh?>%3^bvw^AQ?P!bkGSO^ZKTGiYYKb6KkgTM1(hY$|`<9M$KW}#iO z+=<5=DNeKszmOBcBN4hQ2#;AU3?jcblEn)Hw0*DXgW$Bt_+)B6OF<24#CHrVF0!@xIh@z0qA_y_yOS;A1z^GSU%x zT7t%Ndnz_JSBgZ64Jwhh%$UNbW)~ec!hu*8#LeZd%J1EH)_xewBVmCTlshL6?L`b zq=KBfDds`IVSIwPDDhlxKMj893fzo2jbR!WS(o#?kK)~#on%Pi^9E|XAdx4j34*cz zOF1gKJD8_ISocRb|jUW3U7Kpph2!Kdi;11kUf9Lzbme3or zyo7YJTS6~m&Wog@32Nh5xky`y`IEPuCrRfKD{c;MY$-SsZDT-mZ+Mk#7>{dnL5|Dv zEBc0?89Er+nbmEChaSN>$_-j)rjTdvZ9H%tkVFPVUBogcI zQI}yD@G7aZ}6h|CXm5Dp)OZ?t2<|xEnJ_~N*lQ=mY?>RYVp5nsCQeiH&aju%XR<8Y2nsvQY}?_dfVh7`|b! zpHuZkDZ>09A0!y6jcZQhQE`df3FHuVoH^xPqLt9gn49U=6F29VBBFCDG}HsBLoe8$_bqweXWxj1=i|07zn@A^S8O8x=iqHHA*?-Jl=9G%V)vsQ=p_9{ z5%#3?pMoi(5~S}ok)k|RFc<;`$Sv)!2)SPr7JEh5bG547i@uVr!SCWmp5)K_zKsVT-n3N}Y#V-55;j z<%?+kW~N)mRRnopsU2M47WLH$MgA^5q5=G=%wGq*RFO z7v-|A9pf!w8*L1&anQf~{+u>j%a~tyT(v6_1Y$@z8r=!&@*E7sdJb+N(qAHJ?{zKh zE5PFlGL9eO;WVO~{&^WMsfMN{=F=z&E1*3m5@9v>Q`hKpE1US@z8nlD&A|P3i`WPk zm4l$8Sm^NFNL`nUyVjB2zMW!UoD%Zgfe(%niI!Vu_1LMT-wHuAZ0~t#*4qz~y|56M z2VH;My+`JKp9^g<%K<9<=p)qt`)PNAPponZT*6m4@Dbv-n)s11#&&Yyx$JVj$4;V_ zyq3bl? z(Doo^P}`b6-Kh#j9Ut7)k0n zMb+b7QXNr(OS4|ocHEE(W2_#GF1^TcZ`p+wjn#SJKm z1ohuvr{H9v$SC|}gS>YQuH0{y1fP5f!ix_?2$v+KvTfC=U`+2zqF1ic*4$ck%50wLpT z)4FJO)Li|KLF{al3)er1*7y<6xGPYe6m>hx7Vvl~JEG1T*b&3nNXuL_@f2zL!(o3^IRpruUWo3>ANBPRh<5MP-S5+~G zqu#l!vO#gyJ1X#ZT%3-|nu=OL%bmT!IfDnrr%V&Hcdu|1O6v5g(uM|SgJ=s|2rOn6 zeQX((WlCjjO=-rbD%yBu3`?0{%dTl~)+@I8we{sOZ1MzKnoFs*6}grz zb2cb3?A8gk3}=;7aY}?KC|5SrRh5EWRTT#|#IUIoZ1z=^K)2UG5!=JHu6kS9^4iKW z=j}FHl{G+L z;Vc8%?YBE}9nNYPs?6zFT3Ys?qtvyErCy)Pa-rc$8~#X-Qd#Y^Rg_j%x$2$ZX|v6% ztXEv6Rrk1@U`G|uucEfzHoDxl^kK!>U@KK@rRC-I(APG)j_hi)mDD^~Q@gUpR@dNk zmDk$pomI86hw+Djl-jb|D%%QYeFJs*Xj1+1G)pTLTSMg|P8D|oTUJ%O6rMV1d^L%E z>tt$`ewNHw!HtZ~Nl(AsHfBy<$ynR83Aav|MDR<)p!uBn6Kd<1*?=>i6O2!ZP+pp@ zzx@A&*RwCEKj=f#cFr-z=>D-yUT@c3cj&GU>8`tU*Jj+eS80=U*K2gwKhj-~#B&HL z{yg1vt?qi4?)r)=HT)9Y^|y7`FX^t|)?H_33EC{^I7Z4q*Hd-Zck8Yzbk`H5421u< z?s~c84|DyuePB-hF+5Vp467}MYvRmi+WVm&$k0!Q4zCS|UqYFs$J>mBG4bZPvAk|N zKnhj^pW)2X;w??a*+Zf-+$Q2zj3evuaQH5&OOH=|G~P__#pHixst$0d%J~tj5y$Et zu#JGN2Mn8){6lzKad>pFOUXS3cqI37;2yy_BAfjQliO_E6VsB`mi9K3%!uW9=q5JK z9S-vdqU!MgAux8SHi$nRRfoc13(k=?GWth14s={MwY}N>qdUAO9ELk+?G^TqF6*^$ z7*CdJbPEL?=|CUDBLz9U_oJDDr36!bAQ^RZbYMmDSDeiUkQ}Nqqpyv}-fkg7^<}5P zFTa`GHnc^u9r#5!Tt~jAYtvL=;Ei6YO_kOR+V6o>PiuVY^75**9oxd;Z}p&E+QPkt z%SBa}vKjFpn{5M+Q8=4JI-4!Ie18!w>0R(DUSfoEH`z}J+56jPhqi~qQ(-&v-*oMx z&rIJE_UkX7s{ag!=?{jOO*P&6-gNEd`+@k=k%bjHpQ6=1tm>cdQG6jgHY5K0mkI5U zMEeAF6l_?mb5c%|BRJKE=Ss;X~4?Q6pZ zybbL}`t#oY>AMXvVIcNRg`C&v+mqv_FaOEHUF~l3UP1rltOFgz;D~;U`bRfrSMPLv z_2)P=MSWTTKN?Okvq;yUJpV8aGN}0n@cPnw=dZq5|JcBjWL%CdXUc;jdc&6-a{lV8 z&FzTS*XU{I_s?b*FyB$07HKm_(Dh|A8%W4zi`AIu)Y(kN#QyS_1Rk@%%Ur4B@o@j- zU(mD9`4(8Glb;ZtZ5PevX;#xS=(WwdgAYq^r6FU0;1eF^_zx5qB8}kq>Xx^^I7g zpH-*GzQ*lF^zW1474a+Mx_*uK)SrgKcwk$jySsnmy%TH7-u$sIIlC@F*O#qq5Rq)v z0s6T(n>%#2GS2CjuH~Q|h^~7PBL*_ZY-liF9B1=hou6kuX?nu!jxv@|RA}d$Fn#sy>h^Eu zyEe2*GB*E5IQ#<6k^Z4I*s~&V_tj=G{E764(Dva^Y9Eb+-;dVQm0rGYZNMekRP<4r zo({6E>gOD@0AuEAJ#9bN#{oQ@GhR=(?DDckbi|sXTiopD`t8t<2ez&?W1nIm`P@nP z?<0Esj7q=8XD9Y$2hxW-kzZu!+e05dB2tq+$LL!>`DSCA#uxR+Nvw$<(6=e(+$H^; zbIV%?mS-ek9_qHIDs$ex##J2XZq>_M-9MjOjU4Qov}Z#bWS<LK{vK=Qr-#$>lO-9!DfE7ti<$lD^an${YK zvM<{l#=JR@F}WJ+@)W&o9_*i-UC2Ya`Au#A=+;BdZn3JL`8VaW1Id@h{a|4EQWaw3 zK=Qg~DO8pL;{(yWRFX`&d7!^QCQodr{lJ*Q0Oy zInO4;=Le!+@pA+7!TYiAJdk~;j!ix2`nhhSeCM0Y&uTxk!Y*<8e(z`Ao%8I#=rZ7+ zH|pDSh?v#a*r2?V#>Qfd(Oo#359`K;nm@nV|NPkkJNG6>U*lve#^yj`yaoO+kU6Xz zkHL0}@%_vV;;ggyC`A7fqkm>N5fy^td-yPUk*@^bP$@*O#({=wgu=bhiTRG=(_C@iS^l>{;tpJATOUU)V*i9w&yUY z-&cOM39*r$*Dznu%_04KJ|N)|ZTDs41o$k?VUhf*pL-|CkaZxwm+|z#Vn7CR*n!Mb z1z6t=WZvlX_ZXA?%s*CxZXmwiiCEm*eAAcjknhs*{J-O;)i|43ZEB=1X%6x9Zx5{w z?GNNRhMi9h%nyz~6Ash!#}QdG`?p5y1l@2wU4H-Ql5lTlApWDEy@BL8Gcm5Z#UT0o zLtp)==98Oz;qZS@ewi9Z2zhjGYsbFgLh|6lclI{k`f6_{_F%q=AK73F>hlcTPrXxb7mUpn{oHRnftWdv z{NO3jeG?s3S#9Y1DLrI;pbuG9+HtVYO+9F_!N~_{U$$M2JZ~Ul`{V%Ws<4J0$k;xK z82?S|IurIFAK11i9R9I>e^ZWU(|7}aG+NwYnG$w)T07#%I~m)svDz9d(NL*@W^@d=CZytoZ8>i@%lXW~pT+HJ%`=nuri zThhP~Z&V@u7vPAyU*2wCG5ZL&n6at zU&;<-13ET<$KAxEo4pw;2Z-csMtzs8Z=(Kq68(|zggGrf(H%7>{{98=#p&_)SH{FA zLc;{~Ph46%%=I??P@z1&0CmPpeoF5J1;!vBdl5(0(s1~9GmbYfKa~`EW`Tu((R=hpYNq#(A?Z!z~s9$2I#%+ zNtM{c!8Pe2`wM>IHk0D1=r3px>94d{RAKl=03ahD-T*$6z$Y8mI{%v!Z>!afn9Nwp zhu#8iF>u{9@p9YY_b%z;-n6OQq>G*D93MYVX4@YMhmT3#{P!_x?v$xRhf=A)p+5ks z)Q7_kiQnA^ZTUT1Fe`Rtcb~kJKhhW?-&zIUCn-3ova7PZ7Soch-dInIH5C}U%XTTg zsgkd4ML7H(u66dyia%^Dh(CZ}eb{K!N2T=GY+Z~>i_HPq{Wx9$j~8&h6puMNs;pQz zVkFL`#V*nc+>YD8CT?Xo{5tF}bmcJvV_C+G%=l)bDYthg2Z;^GNgV4}b)R<<9@6F= z@*VmkcH4n78`snhkDv2+$h$|w#BYmGodMhfz@^yT0~f!jlCzmpTu}T_fNyy?9KMgU2Tq{UuQ+a{G8Z4tw5-k>PPYoI=153hrxuX`iDrD2=cGb z|6mKOI;<(@`754hKEhb54z>xftfP!|>R`4n5DNjz0j~O)4p=8(i*>L7V21(g?bC?B z_#BRHICkOqEsjGtPT)9)Bknl-62~MQvvJ&qV+D>UaJ-1)H5{!t=(8W^PvrIIIG@82 z^B2ah#xVxR?Km=U;ZjDtR@I2YrnljZd|ci^ym23z5H3ddVG_To5%qYDQMU~J-8fa5tF zhj5GxqKsoBj%_&h;)weky5LxhV*`#>9LI4ahmcF+P;fNjXvT2?NBIfR;W&WfIF1uI z82U01M=}oj{HqWC@Atub@;CnJ^?1=hS!q=feyfk4#j}#>`DW@lAxfzmfkVI z#u+jzYs%BBY8#wv62H!@tZz^<@k9MIgmMnabFPwr`wf}(PG?T#(t5mmfq4vboJx9a zb#-Y?c}`^w2)-srPHBT;udlDIXKbhu<=onGSCumhNP;K9sQEPUvww^ZV|EQ>$J-Ph zarP8y`MuqVA6d>nhjs~T^+*QX4`Bf#}IZ%a_lf$vhsZ`^g2&MJQ z8rVvdtCu>;T=kCX(p7kO7|L}HhqGoyWj#88HHmUXb#1wmvG1eQ;8Yx?b#)Hq;W|JL zGDjKS$$<8+H8`C0^)p5gss|tmFNL;)C%ZTS))`iHa-fhm0C1HF~rIoB{eJIgm~>ogR2^nFg6;t z>iuOQSYDy7x7Ud5H#+Xkn_HyZ=5Um)T9uNLGI?ofLnU5JqM+Gj*=0paN=n)C(t3wd zUs|a&WS7~CO7UgC)mc++UqN0tF#0L z&|!v9y|NZ+UaYr$3cZMfT0Bnp+zja{RQ@bd&fw*ZQB+?!4PA`4gxD)9(Z;I+R^MPR zq$2x>mussU>;;*HMYTl^J7ZtP5#2ZLifI@d)Ef`LLD_^M1L6Ti@{6Wm5j1JQ^aXRv z3g;Hx3Ldu(mU%_$)M$0?yAuG4tbT|NB)Y9ObLIGBEF>C0pPINarFY5Ym zpQ&Yd*G;`0jy2hljTUeyh%o50g$a&(0mcwime<#=MBC*K9y8!u_lvsej>4rFf=(v} zcv-!(8ZXQ#0Eq^!LA2yTgI{S+n#vlL1|z+9qNSInxfBVj;WU#csd6KDEmM|LOs=hm zH?T)Vy(VP6b7^T+X${_kgO}L=4>rDp7KKIdqt$|bMnre<(jNzAE5tI%YUw376ispv zleL`3t!0&ntB>>RDP^@Tg}KEw#!XePgS`-1-zwq(`Ux?-I=k3WJjr1%ng+>`*Kzu) zhHT*V2$1$(Xv>O0In_Z{VeGU@+e?%Y(X|&2vh~{>g>x?*BQSc2EXaibTh~BBn0`qgw;FwIAG~0FI%=)eS4k>JExhH4UUK%Yk7faS z2Uyp2sT$y4SN~60054C$9$*@q*_q1BUH|ff|Cc(S_I{0AVKe`pK01}%qB8*P8ynew z;9Jz|s{VEPKfnT8po8px1F1v(zZA!W2@}QthWfIJctfaoIpRby?N2PLt*NM7HnH;7 z>C+~bJ-iI-{|QBG;_}*R=fnq{mCEvoM8)6F$Z40lDyzyhF6x^b$CuUDHZ+W{!TUc~ zI0gExlVuYOuTHe371<_Fm^_^s8jInl;zeU-1J$Ibq=@%B+QwHat{Ug8WzHIBePtPn zrS)aYXH`y}KFv0MnfgC}vTeM2RB&mqsW4tBV;f&lQ#&4Opt1+Y(;F)J%Q9KqE*Z`PV_>ln>Z*lA%V+Oaj7qg^$$M}rq{63}RjZdi_8AzOE-C90|xZz<(p94*ew zughy)OR>#kGz_A>6K1*-eGK*yJTq-exhj~=u>sLBk(N40DuN z(-}UbDod23qN;QmGkipKaVTNG5q}k%N(mrCQ^eHpM*<{*)K!697H0UE%1KcUrMj-7 z1}~OnhJ(azBpYPD6X)p6>>N8Y9GXu}9LE=4AI%1{7`}C8_*)lBMq`vvpDSsO=8AMP zMT`TRdu7a6Ms4xJ3T7-%hl>v~Q)4mRHvNoG3$%uZ8yxVTdS?7B0W5_1FleZCszX&3 z7ADMitOn2+M{NUMVakl>&hSRy{=9fTQmih002`>r3mTvjTQJP{PXfd`#GazjZlK1{ z#k2>-Hw9yAvF}+^&P+48Tqxl`GtE*DUD=}b(EJrTvfSjxx&ngIoDVR zz0CCy>@YI(5(E7~4z5&@2_1G2Iv7BsJi>dye4im5;8=~t8o@&2@EGS1s}ii`1kuY& z8sLFTvcJ!B)keupETz5sk5C#yhqKE$G?9YJ}J z`7?YEA=S>~f};xjmvxYs9$J;d5NY-TKD zW|Gu$Z2;5R(3)DgzgSy`62>&`uQJ2XdS{(Oys_7j;-DAZGNT?gMZipY*mMCi53Q<2 zLy{_rm)M}8u9|vmK|9MGRLi1=iZ}9#l4U5~lZ=gJ$Tk=q54kM#D)ckBK>4pY4Kin< z|4jeHWh_*ybE?~-4Q$YC10hQA3aJj@PjWbIY>Gd+6mOM^*}@^Tjadm$8dsaW*8bZy3< zudGlUD-gn>-y?`cLNE_uR7Q6aEH0|rRi)r%)!34ce*afsmmnZ`g)oc$fKZa7$}3k? zVmm*2Kh=+ks;*tp05g0@s?Ma+BPj8xmKs%s;YIJhZh$Qg5OoG2I32KKWi5;TBZ0Cw z&C)9LWGN&+NU$7=-V$)=Jv39m0sKwPEc(v`SsYbS=OAV*`UsIMr?OyiluTTwjBxOV@aV6ozBLNBgK9uTPQjv26Rabug8Rf7D(sD_06mL7ONGv; z3UnrmK1YT9K*Rlr=<`%K5LHpO9EA&1I22XU@DT2zME{dYhlk7iA<@hbguchAOm}N! zIWW8dApmz78kA~9%3&}N?dnXyrxU7;f9n|W?pr2I0m|&R}=@I;b53pHYW77 z@VX0$5{POd7IlMp9Wx{nh>uV1F0wX;*P2DGi#Dj1)#&SEdA&u{>!pn26>)|{jH7ag zQu?5?#?h@0hH!)giBMCk^oC^RNQnk!`aK4>g{(!Ri;s9SGyN3T97qnvfktNfjS3`B zl@pR_KduLv*MdoG<*Mn^q;|s%h8TiVfDmwsFtReyK;RJ^o$^3qN@hVfj5rM=Ej_&?wO6-o3BC3YT>?~fZwijeyRBhF&$zD13G|(hyz=D#ZEJrT4H5;mdiGL2d z9JOqi2F}PYnXQ6{YhV>SzknrbP!$=_5gN20EyGcim0wuw$SlcAFV4=-V^?&qEwmSx zV8@$Xsev=|O9~x#m!PwAvU9VGS&~+T?kb+2RtQ-O?U{CX3Rz~hJ^h_uGWC)ybM?}BRg{;yG8?(v9j~hGwkVXqy|L~+vnH|9T}ORu=5TmV%KW*`31#} zv^gd0It`RIFF!kj?C!|SFLb13WE8UNwc4Vb{P~V-^gF(CZ=Fm%!EBePp3X*THG(bB z9r*?Df8w3a{ow`;M|Mk5aUpDiUbs=K!mvuq$)1yEC*9{EDsUXwFyEniQ4vel@W~uS zX<3EBHjOkugq^la+y(%-a&~7haw`frNf?~(? zNw-eF&5@p;hk%e*T*SVmRnN1h7v~pd-)naW*JIq-%3jFME6R&tPU?Nrhs`-#8D9S3yoXuuvV98Sr zt`7SGdwK~EAGd2rVpL3-y%159;z9NTSo02j{esC;r(LR>XI=)edr!~mhM6*XdZcIX z)M{k>o1a~rMdO~`rB$Wn%uicb%yXAeqna8 zon>m3JY?jiIOb)iIpC3Vw3@v9Vpz8zExRxc69voCYSavXattw-XX`4ZjQ8+p!0x`d zCM#Ry6mzvIsSufu`f-GXWS{*s(g7mC8vsqquAT*l9@--OgAv}&E7c0yGziK!f)6-ts);eUv?%Rs+iD<^4NT>E(d*&hr%r1!m9NFWQjZroi9^N zo=a9ZOBMVj94sXocpfRzOxj=Uk!GGV#N&6XoON0uGBKKrx|a*c@G_^AC>%6>HntWh z(d57dG*U$3$jh^f=BE|NJdp#q%uzz->(Hdku|-0}x@n@;ATMcH(Y8k)h+gN9;y0iX!^YI;uo?AdmBg8*2D z-XkssgL9rk7Gj2GBP(AZYGQ}x*yp4nbZ`!FL-msz@Y+%t{9q| zD+Rq$l_f%!q!TCtyh=(H0bDHslu`56u7Uc+S`#C6^%0_Lhvudg&2?}wIni|jz^||8 zGV)8?P$ZGW){zcpD#8pgika4-gZUDz9$m_Ps(_i6;ySi`=_>7Uz3NizU6ok~i7KW| z=}}cKsv1_*PjOsK=;XD$nLnz{#4^)6#EqO3?5Z1Rw{?XBPpsCL!rN+>;;(RF*Gzq2 z5F>G!g@{LJJ4k%rlyB-qpSC=N*BTB*ph!nPfuxYTMs|8PST^oiz)dxz>?r^kbpR{@ zi?d5|;k_DCPTE{76Y`4T%NkH30sz;(2s{P*ei|?@A8wcihu1*qNOvY{)3! zNP-9JU`1HrEu3ALoiWFbWtWDVl~y$0jwCKt2b-OrhX+Y=Sey=4l%0c|hRZ%g2cDak zgYluUE1J8IbabT6TQD_cGKPv)MTu4pmQ5ODj-3MkP#t9MG^~^~1k6g9gV=B#Xzp|@ zk8~Kh8JTIhDU&dMG~nzEh?;^WQ4i2$EQfl4ZpAXF2WSeGJ33G?=XG^Y&}1xhG^~3m z;Y-0PM+4Eu=(W0OfJI+5*qQ_<<(mu?WLfmpItUN0_2j1f9+G1z{Yf`^z&d)=V7}eY z>G0@VE!_~i2=?n+hFDZ%W( zjUcc?4#m4kK5x*TQX5t`#0nE??ClN4- z2x8+0N12+dQ(4kYRI;MfiPFD5hM_EB&``rLgUND@Wwd2DHs25(4Y-OWNCMo_n9O2h z??e&qbrZ`Tjt%+YK#z^RJ@$@R1By{Yn8`wg?BUa6(OFjD6I%2Y5jf@-gCTo3VGkaK zCSs;Us_wdKCSFz&D*;j2!v!F26q=d{c0)!OZoW#8#z*nytv7)~f|<*ZJzSMy=oqjZ z34&os81O&uQw^1j zEF0ej!}<6j_%`5P6K)SO!{zUQ>mC7MEb>1p zEMevUZtr{G@z6D)_T1?jl=vD^x`nwJNJst0LmsMOL~}S9I%cSL(tl%XasNF8TvR`F+p3@0@q< z+&l9olb7P>_xZgKDKlrj=bm%VJ@?$d@7}`V5wa6LV&zbM#``5$uvMRF^;CVL6;Xsc ze8IviEhwEEtXrkW%HyD6$&&U_;1l9EeL5FO&=2^^+YGRvno4aP%AZRYdD3tA%D-jk zOT*86a6W?vMYDA-&T*x?|C++ocrOrM3H?)gC4SrN;TO!kd-)6Ie5YY?|DW-X&;otX zX?L(Epou&b&j|jG7?epO!&PU&JD!vB!dH@-B1-r&(-NU9##>8x4JvrxRH@ms+VPvd zw+wHI3}HMOKIFx-XQ7d)coqk{OHwI1N%arUpc>3Vw4v~T?L*~YEBE4zR~Vv=-dL_i z^uZql;dy`XFNGVX?8YYw;}PWx_}0lflbViaKWIx(8&%#pUy6%#emVHitI(ds*>pJ_ zeh*~L0(-^7c^92$xf__n;M<2kN@4b_EdHewqi1m`5=Qx+Ju4IasC~kVsHum+sxZNM zWZJJNi>otu=TEl}TmCGVR9T*W@Bab)t3SWO7t$+8Ir!oEu*mIKlEp|LvrI{QFW8XZ zw@G2(Q3P~6F9m(Kq;s5sU@M#@7^D**T0v>Tr^plN4SXMzNW*oY;AJ+AG6KquF4p-} z{02h!uq?U>Rbg1xzk+g3D|6B5Q8w4(f?=-Xkl@ktnTuY>#S&-uu&ix@VXohR(krsu z8qPx&6^6N94obP1Wzl__^H`L4(%S{YT>k{hVZ7r&xtTrdX8e1+#r1o^FxSiBq=%O> z*V*9U+(e(61;bnyfHGI|bq2Uds(P5eUogzI0hEVZSk`X=xAXOR!7$fvK-t^DTy#Sw zwSekjSv_zZg<-CppzJu0x#&Jj%$QVgeN`~bbw4P#iw&WwBVT90sTGE}FwmnHgi@3@ z6>Uh!7%=57mhLY1&k2U5KLpBwHMP0=P^b#ST>C(IdL46-&M4&YVf#EE6q=0z zqZ3KxHhb1p_?NNKr*8>{xlY5<{W8fHS=27~w+M#0J_5>|7%tjLpfJq!0;*ukSVJ>f zv#zTJ!(7*ca_5E2^-8CP-w_OR{T7r1Z(uHrpd9&X#!y6Im}?^_D<#%l4lX!B_^^iG z5Dat8h0{+;zT7rkB^c(q9+U-Q!zM_vE&qMNFxTAYqsB?T+%~*eFwFI*pzIM1sTGeN z&eyGiVXl3k9K~UE%A?5VqldX35)5;l@B&1?3z+K+u-N%pDj4Qk3(B&KYjeFrFwAu; zD7T3X>Apu8EPPnQ2L;1ir=Nr~B8006cw57(1jAe(17(@SpGDwe3DKt)B9JKzb8Q1< ze>>+3QzzQP{0|F;xmKWS&?TjepS6d%ZWj!5&HWSjMi0w!$Efv!VXn`C^0aWh5t8g^ zLs#`G40El)Fnxn?xl8%ef?=*FL0KkT3n9z4{G}%|hPifwl8v$anW%OO!(5*M<%t-} zH^E2>!(4v`N;bywCnB6E40F95l*eE?%FXOqP}O0>p9qGz&O&GNVTtqZ@_MIWnCpH} z?lo$qZNn2VX`(R9^(Ii(i!6L_Xn2QUnCoSyBOVGD98P=K54Q-0xekI-UeDG*lcPP% zbpfh^!Z6ooK-smNxn2t%#zvoL;!t6j>lRQpNZg)oK-u$E=H z{qV40m}?0F=bkHSb6qbO=K3ip`#PBmh3D}37r%lr%+&|VdZUy%S1GZ}X9dGt&wz4J zH2f-9P7pS>#=0iPFxMTRJiLN6#21H#zY`2|Ek6VMTcu4wF*vy1D;Vaw2b8TMi>whn ztl=52WDIj{Cdzu&(Ctz835K~&e-+9rhHFSL%=IZyZj0f1R4~kS7M$pbH?xLxt0J16 z@Zo%&@M^{|*F&K6y@k212Ob^93a$%Y!x-ke8I)FuQIQ;CWLbX@40EN=L=3-xWx1ox z_XWdTi_y>xcGl*4pJ15lK~VC-b%~}|q~YsP#TACRZUm)ExT@q!FwC{_EO@V!7lMex z55FrI<~sds%&xR^zTAHJ5y3DQ9V<8(WBKwWxuoz$bdt`%g$vCbA1MsqHrMt z4zAQ<#xPeuC?}%(GN;!(9DNuI~$mxmuQ>1jU9?&kO7# z_1%JDuKPjRw~l3@Gp#-By~~>!!(3kgWmyc@D_R)CT<-^EvX^CHcq@8EpPqxUvcfP| z8I%VARyNFn3xmk;VGaLVFwB(!N1x$`%oE9ar(l@tW>5|+V_Ba7%L&59vYrwQbG@Yv z?V!|UxR=8>zAYH$YC>7<5|2XY(H@pHDH!Iu50od~${H>Q&urmiu2t|jg<-D!p!5Q) zYzIqmi!B#@ z`jKFm>jIQ;tN45uxa{)!gkYE}g}z2v`Wxnorigk zp461N;EEp3VXl)g%=Hyewq3;5KxlT9*Z&a=bG5<;_Xrm%t;2?sf?=+&fifsuZdp$X zhPm3|gX;%bL%P8b-GuPreBCD)=6dT2jIza}+@*X#FwE6~g6+GMW!(WO$FV5M;eCQ( zuD5g}0>oJUF2OL@%VCKlVhvPmkq~{lRxr%1}9q2U(=!(8X|V3Z_Llzan9h7Xt5M+C!MPlB>jG^A)_b6tRZ zD-3gO1La<^{7ao&KNJjez3dX$M`Dz_m-11;FxPz4{)LDpq}S|OF9>s_{>S;+AsFVG zy&5N7#^mdbf?=)_D03wOAbe{N%Q`9;=1PO(afydyc~qA0VXl7>40DmcPl`vmOZgtb zFxPpIvq+_%->||NgGO&c`(?fz`u9Fef7Qw4jDc=RI z=i^U3%zr>I%=J!KeF1s~ii>2?C-pGbKM01oPK6IXj=HM2UdRl=|CwvEV3_MipzM&y z=5Ec~@w>t>7q$OQ(xy-ZUzR_wE>j z@jWPMIZI7($0%&Q4>8Pj2$ZACIbWwkL)#j! zA7%`5{RJrZ3fCDS8sr<%!(1=9nla3k2W1DM09kJKtXJb-`lKG_dPp$Lb=ftj zm7?KG0JpjB77TN}CXaD}SmQJ&moFIRx)qeU7qW(DIJuq@40H93Vqbx9p^;9_!Jm3K zU;ix_=DL0?mFir^vKBBy@PFnyAQ(O=oH1!%jxe8Di+*FjkyBkK=>VXik7 zVZ#+H>m10kE&mR|FxS^XIU*XmJ*wkc#xU2HKZl zH?9*5bNw?YN5v060G1Pljk&Jg#2DuK4Jc2GtW&^YTVolT8iir5cYw0BjWu+a@=pcB zT(6r%xl5Z8X-8_ZhS<^{VwmfLpv;lh;YCgjzbzQ%`cF`{ODVg3HK1!bSu@UOuYY01`j&vlGpu9vHt^t zFxQ6!!(4v=~gOZQ&jYkE;T>aayxA3hj z3vTT2jV}m>xt{x{n4J?1-Em{JV3_MhP>xEibm!|o1jAf!d>6c>n>9qE=_ut}1jAfU zfs&H)dJVqVrTmt6Glsdo49cWf!(A(XCm7~>({_x%#PV*g9fD!5AA@pK@OK-nXfciXV(y^J9)564nxhP@@Hpd!+quGx^3N=*QBra}2MD3=L^cbRTLvp);? z*|T1VPuYN%|KVMx_#x1JHUTRh-euYZ`g8F&dzKC29i)^xX*YY;E*k{;H=*GnDbqC; zW^u4P9b*u|kY*Mv^$Sp+fU%XVSK*ue`~zey04t?1dlp5cC><`R2Z0%k!TcJS9Wj`t z*F)zR%o<>x77Rr#RgR=N>vI5@E_|t_^DlwfDwt)?e66|xH7*8I2Ilb?%=>|%{n$#M zE~n0)0H!P$w?6*^%pHPR=}hO6_n}Nj`7YAwg)^&k zy6__ehYw5=JahgRoq)v{xBpB4qmC&fA9JVk17PMs1trU!PRsjI?lG9nz-*1dd;^%h zF__;2b2J9?h8>uLJ-)Wi*8#I$Fzzz_AuzWI#+~;Uqf2-=26GiKC(o^|&&Pr3jlp~u znC&r`UjuVz45sOWs5>#3RluBc0_)rdpR#@IgTQPRjN3jx0cNjY-1TeChp>Z7Fz$4| z3e2JtSsyp%6*s0*8wBI_=gq*}7K6DTm`4QTmUZ@rQ>mus)z;@dz^oOFJMZ)V4C6t; zxMjT`m;*7G+@S+x?(ULe}Q@tgSi=)y@GM;{2O4N7K~fx zuANwMK8ba9``8D7DGJ7&&QV})kHK_(6r;!(%#FaDHlOuz%lauWeS+zAme-wsiPciU zxYJqiS18jM%niWI!*oQg_Ukvmbj4r>ccDxLwNBC zqhBW&w|#B`W~X4>_W2Dk2L;m!-@xD}e7KMO`P)%1POGiYb3TJT6)~8Vz-)`b+z8CR z7|c(Ac}y_wyca%;dhwFlIzJ3dRxs{#-u5}f7Qu8l?ej1&hhi{q*aI7$UR$3}0JAa% z^9(TCVleOdJZu<)`86FV%Zl^mtR^N^I>2%#9&_dMfhP1=EJ}ojKSOw%-jXF z^;vxf#-4(4_c!hX<_5vI+qmw(L0?ob?sESWFmqm3Tc7z~LSHlna}zM-7|hGRjJ{|L z<^#Yy9D{iVm<2Ddt@EnA=!?c+z5~pT7|id1*&l;Re+7NN7|i>CX?;a)oqqsKJ_a-Q zs~8gr#@!C?2j+3XxXb<2uOYTH)z;^2z+_`E{|3yi7)%Gx?#_)Wx?7|bVu*%^a5=}yF!7)%zJ zxv#3N&p!gw8H4Hg7Us2LFt-46M-1kKyD&D7!E6PlX<==he+kUm7|e=qV-76_a~Cl8 z#$e998%6!<+WHiM>4?GH4@^-ook(;R{?zlF@c-9-2R0OpyPkdnm`4QD1cey{to@sMXa;C&HXJfdBM2LYxzBh&oP+Yz#NXj`~;YjU(5QqWj*hE7{|q6E&*nH z4CXpu?u^0Q0?gxrako2fyccD9R&AZX0?gJJ%#*fY}g(c^sIXH88w}Se~mQ$+EUuvW{4?XuZiuxs~pAGAQjhrY)pYmqlvD6WJuw)&wWaTYck65yf&Wo3IlO^i`OV)@bi*C#^ZAkOaarxS1 z$vSAs%389HSh5b)A?r3v)&Wb_220jqOV)upWbLtJ-D}BOZ^=4j$;#FtYp*41za?v} zCF=o8*3-|6FE3i#0;A^hcU!UsEm;RGS$EeVYriGyPD@swCF_7CYg-+%4p_4GS+aU9 zS@&A9$|8#+lASWGI~X;kZKahm?FTS0?IU%he20~CmzDC}R>}({-IhL&3Em`yGkTvIo%J_4WC2Nr- z>o!Z)0i+X`uX&cN8!cH2Em^xQS$EVS>tsvT4og;(C2N-@>!vznEwE(WV98ow$=Yej zT3d&#g_f-CmaNk(SvOg-NawinqWuzJ)Y_(PmaLO4SvOj;DE`FBYPDo-wPek=WYJDA zm2%kcZQogktYwz0NlO-;yJw`_dV?ivZ5^_@ELmks)?7>0c1zaDb;#796L-hFdLJj~&mL>h0HhOV)@b>uF3FndLQU$)bHtarw$xva*&e z+Usb_DqFG+)FCTx$=YDaqCJ78tfD3B&N^h3Em`X=S&vz=@|LU}b;#Ok$y#g4I%>%p zv1IkuA#1xOYtWMQh$Sm)$(mb-tR0rDK1&vz$ZD3?220kx04Pj#pQm;Qj9TpNwPYQ! zWUaSk-B3dol27G-fOXG67WOuiz>0@^-3kMJX5ETfjZHHZ&nBePiE(#u%4Lmo6o%3{ z9w=l$dw6g2BG8_TzuAscb_xD|$Rf*ElSPwFG=uchgX29*TVTf5y+$5norgu4|UKLZ$k1t%eZruW4&}1MT(>BDrm@vzi z2kBJ95blR$A1D;r=YNxZ49fibv0i|^Mhe3gqa9o%clN9^QAn?%#N=U%b%LTS)+E2_ zA6|`=`>+GYOnE-`5vi1)2cJJfXONSwH-K8L+<71V9O#7vpy6kYH0TTGqUn@Smdxq3 z!V`>0(sl^x7?jpQsAo{xi#6&y%c6ZdLB2%R5=+(tmaINY)?gj7mRPdRv1A>zWc6CI zI%~-aPZVE7sL598`v%hah(lrlY3%V*E}Yy3Nhz8X(&h`|sZ7^+3~vo6G7DhZft z@h@33df3h#ocCF0ML&k0IJS@kWFP5R5b?1*eo{VWV~8>w>Vq(jbeixlrD#4AAqF8D z7@Eg6F?=@oePYAtJ_1gO^Oco+@h{Q;lgt;D7nPDKueAs>?(!lVs`8@q#qEde(*&}z z&uRE%!>CNDBvqMSVFU2nFYxySDzd7}2t_P+!r^%|ydc^#4RdMDy(Yk=f`I7Z!p1XR8d1|82Hq`ZMsc36jHDGcT7 zaU_S0KH9_4m~-rGcf!-}_lrKL_>SjW(C5h6oKph)0F>S5>XZjTdCZ{v3Y5;pI%dv6 za2b?SKshKB$rq|HWqbClpQA9ap-Ovr&E;O`Oxnu&MSBar8k9E5mqBTNjfJ_}!Yr^b zcUqV~u`u+`ktu7gh1qLi{(uNzaJ7+d7?k#3TbMl-<`D~XyM_6gg}Keb{G)~0ZDHuG zA49{oT^8mp3$xS0(3$UMIyYIEJ(ZaDPgGLcc3510X<=@#FdwYMv~Ra4*Hu#5wp!_o zRbtwQD=BSdi))>Q$y=B%3o~M2UTs~IlJzso&MPg<1C^N8{gy0^E9_Czo08TYJ^omBaR$tIUW3Z@ za9gb)h#1)b+l0|(>GaVA>19NYXcfz0u9GG8#x*k8l8Gx~S zmE5~1T4lPXGD5axEzF__6ZWhQ029c9yi}?L4T~&YC^uM?n=Hz1i?YX}?6W8oS54^$ zEy`hw@`y!w+@esSn<>w;D5qJJg%)LrMWJz}nes}DGH6jYSd_d)nY1X>;+wMQt!I<6 z%c9&al+asR$ghoP({`}ZH(ISxc1xedb;RPb<``So!tqU6hby_x>!=*{w?1KUZACVX zbk2K3xX3j>2w&x>PUkRW{K;H7^~mc~Y=KBTp9W_B5}opOP}B-IkCG07!uxF$*S~|p zwLnqk{1AKf!(1rJDWDXMl+Og^1_N^*DD)7A;<^Zw4F=a`pd1Wi0&+2o%esNS!^lMz z7`2klI)4Nd?t!S3zd-32()WY1&7k}Ul*f#e9|VP4YL(7!Kxr~GJoz6}sZJxEvq7Oq zLJ>}JEdzz>X+&8K${~a6YEXFphT^&o6mGi}<-?%RLvw?QvKth&g1~t{3<~$G6y{f; zG=;vQD9`;7d?WN9Md<-$5k8Vfk+=Az(pVvN#IQylm>Z3}zXuf46Fv%x+G)W0+y}}I zNtv`i1j+)QMW@;3$-I{dW-Dm!RO$1g2MDS5*D1=`M47KsxD!ea^g?m znUZ%xuLOmADZzOuu*P-4%u1BbT42^fh$}cNsOfVhD7@ni$>GU^a?p^ziMWu}C>J|G*^Z_m zn&JEyD2ogmejb!QBb~2-a+%>9e-8?eE0On6e>79vlDg60`WZ0WjC?&xTu>>>*E68- z?i!Vg&VQ+FFRlV*n~`!3lnr7-&r6p!W>mzEYSY_*p(knwuLtF*aM5pnPbnLDKLkpr zq4NR^Z}u5nXM?f;+@vr4p(cTnGSayilu3g!2uiEOI;en^sODAA1~JT`+P~mydrC zZ-_`bq+2&AYEK14Bzm@k!aI}{Wfv&78ybEVlo7*X-vosch-Cc$lnsW(4ui7SD2wGs z&?_)f_CQhlNk|{BMGHiGcD0>WjehdoF8mW{YB8q`|3Y49O4d?uuiV`aR zptn4hr8Z^09+6%EOp~PJjpsIwrSqvtu@ClG1irCbD9BD~5x9y*E-nBi8UYbzHDM%W zqFf2eEk-RE1BIT*J|73=1|t_=2ZeX5J|{pw4GQlYRFtlV&}%Y0;a#8{GIag`D0do| zdq5#`MA9Dw1?JJB#IFKOr-u0hC^Yvz3pgeHq=!|HDN5&MpxlWcBmX%Y6nY}eI#5)} za5_FHHwl-Q9x9X&`tCMzF%Hb$IlA=ips3x&ug=;r$Kp4^da<;e}`upHoOUxK?Cy{P>vXs{{p26+??A~>M2m>7?_iO5j0;~WIGd- zl%dc0pmZ3%aXBc90DCU}kQ|<2P<9$Amq2MXD1Sj*r;rWE8mEKHw#FU6^cm8B4GQ6+ z5W0nO8GKSc%DRY7*#{2j#Bgbjrs-p$EiJ`jCbKcS!Z2%<55jJRF`$}+|45}ibi8iE3qWZ_dXbM^0gBoK!y0Y`C3}Ld^8_fT8NRw5 z6f=f@5|kwd=9{3bKS59D04S$PE+}9BPFx1%ccAndT+e?Lvrh)b?%}^27_;0vLD_DM zST6^K3IRnQmPG-SM~sxe0t(H+Qr*B0c*C_DL(||97DtT|A`jVpu83oGxnYj z%33Mqa5Q@LE~5lj05f8g*B~e)HuByQDC-UHwPzR(1GCHEdK8pN;X3Xp_I3FqnA%H^ z`l-cPe`sPOI{oRfjs7@)&5aEg_;Y$_sN`?rZ~5GqFsT%j?|5yY4y~{123So6j%i{EWXjH|~3x!WgRFM5e4ZxGnV7jcvXf z(*wbF3Vfrvf&r4PeL@l)o|h|7COOHaL60I`E|h506jIyK@hFsFBw9H_VrvGQnl2_SR@x@er8gxP<#o^+^_aW3#BcZ+M4_-05chJo3ujo|d2<4ZiF#9vg5r6N@M%Ijy#66XCf}z(#ep`8Yu$)mOS}P8@=UpT zyxcR;>Vc$3XAruZmvSmzZnT*18R+nOhnkI0J@ays&XiQ$fpQ|so0UI`{fz`lYAo7d z`16Ys<0IZsI&%%28I&L%%uv#reW%o3w+*3hGS*m|Exe5iUy7NK#zcplBKQ*2g!3Xd zN0*HHHCpdPt2EtXzE&QMaf;xn$SoEnv-K+*Fp0P+X^TFP>WfXCiv| zDqH{BMm=9Rb-~=yWb#NhGti2wu9zvyuAt~m+ zJuIrKxE_R;?(TtZH;TaLLRFiJF}mOkXmQOn*x2u=A+D z5ufFrpE=e{Mn$d1n}mup(czU2p_%|nLQP3B;Q}|ho=GTL*&~g7pF&_m&J;~RwFeVW z?dVR`6BRFZMa5&Sfs|Kd2xlZqPOo}nXTlOCqjBLhIk|O5*n~w!SxqLSwN>=RlcJAWMsZXBK)csB=yeq@ z#l!;-A={6&TrJZ{#Iok|seWP3Hl6WM<&g`+1r)4sc>L6V_)oV;P z&7_qz`i+UGTG?@Q1X9=3e>eHYrgXkoE^%v6XZv9=ihVF^lSp=?{iV`OJW)|MA#Hg^ zO{Sd^v4NJVrtp*|gqoX!O~Kw!VPYB+hK^K3A(YLOH0rp<--5jdqdbW{9ez<_pxhFz zP6eSon&fe=cy*)Og!t#4?TABnsox@q__J2FXk-if|D8QWP`k(tf(9}2hiYDcq^@y@S0W3gvvBU zNLJvWE#Bq94k)!$(@2M%Cq$#9XbXZil^OjIEC(elV`eggbt>NDmZ17UsxzZ-G+~fr znFguOjKaad2YdRw!J;Q)xS23|H9?#$YCF2H%c@k^(%>X6hNqhbJ!~HAM_s_!G#rB` zpDe4qCMG^KRK=WA(W)zUUgd1_3{UflRLO8$&`mDKQ;EaLON}y|(DW-$LWM)MB&HB# zFrT!t+Q1v#|0Gnc9C%0d#=jPe*2$G$9ShkjD=X2nqJorJLS1HUKHJ!N7)*U9INMWG zj$|q--{z%b{^qD*X<+6(skB77ge;D&R$eK$aiknf$jj&e8z{0ggE;OdJ0Tw@Ea~iF zBfgjShmT3_Vr3SjJ%U6Tuzczg+sM^G?|2VvvTP?R(MsyZ0OO6WIq9I*g#qUMSrF4o_ejIii0z% z>@7(;ea?gg+A3M_a9)Z2Mlg*S5qR-G{3o%)3VhQ~O;a$Lf^YV(oxq!M!2vjlhm~eK zb;&?d{V$#kNpia&rzy%N)bCPTJ}ztvPLhcY@~HYr*72ze*Rr4BK7}YLTGP>%a-ts+ z-pUckh%(dQ*70Z)#B>s1HOQl;wJ{*v6+j-6SX!)H+!lZY*EUf$=$~~|E?+wL0L+9~ z$#UE#fCPn4Wf#Bm3dJp0)^jM|hz+{wkU}h8{re0 z%`lVJRCleMMSWW5!kW3Ez5$1nv2CNgy8e|Dpw4m@iPS2{BDtC|t_jK4g=~V$q;Y4ff+FT@#W}Cvg)6Z%)%OL3Dn}v0gU` z_EHCj6xA&~GC+e%1yRp*IthpxTK_YN0j;cr%tX4PH2l4Vmq>zhYl1UgA(FT0HgqT+ zhWWuR=3pc=!y+Ur)$LSoKRud%Pbw`@E}?E&3lHno(5piBOSclcrn3>Xx)3cp?%B?| zE!`c>3ehAW_JN;ACquErIA>9&op^%kSIo^o`Pg~d`qi(Jc&z#jP0w{l)7e-fY_DAe z$w-il&?HHMoA7zRm*ai(VG^ph+C*V2VFzPV=MjuU(Zan* z4RDHJ$em_O6V*&=!D=tm)tk%i?#fgXRMpM;?|lb2xHE1tUu2) zpqQAgfq6i=N+EQ!sZRe1zbKJV7qBgp_tU(9lXRM*Yy%dnys%}e788C^V(PQEI9*y@ zfYu^whQkhP~fsL$YK%;jk}b?3qZHl}3~$hjZfK;pD%f^zo?jO9B@#}SRbJCbZ;m=7+D6@JCgD`2V(3A&ub$0} z+Ims!aHF9#MOogcWxNH97l2pw58#AeI-nh`g!^p&=s1n8A_5rgyYE?rkKhY-+QU)R zCa|Q_X5|OUbT(*1^&vJ2&q&IV;%In+4PhgG9{XkZ?pK(*ALi>vks7_pwJ`50bTwgI zx=1*jKABb$kt$2EF)dI)UGp0BsFwy8zk0Y%ebgT-_mF&}w5f>0=oHQ8B#{uS73Vv2 zwJp4p{1evVUbFH;(kO65vK36(;`NMW{Yfvp%y#X#a?$SK1_Js<6Yq6->3`}g?h$9b^Om|5(H;(JZw!i_BW!eG7fZ)z#!Ak?u@2 z0M%l45<0s=c~qK>&JIT9gfR@YW3<*==SAm6bcj@OdT=BD>(*`RPMw@=+s_eYlPKJ3 zjY%TY-Huu`g@b6+Ra1J)l29+Kjyt7iNGjjGqdTxRuiDsHq1Gy2bP2RB5`O94sMv_Z z)_Xm3g#t-9Z+%xKR|rnTv#Z71L=txeT$ETeSgG-DxUr?x$TB`;~Y%!(u^z)((qfUKY5iv1X7IO`RT5)cRp1ctns!mSVs{hf^##PddW)y?o za;>zWUARgUn-&`K8p}P=js-m-#GXX_^N;Mx)|tqnj3O$liN3CLo`)AsOQSd^RL)sy zbX>txq7`|;bn^^e6*_amf=#3|m%OXrlBB7syq2VAh^i9r>1=2goYpieZm`tT*LQik z{H&3FMAVbvmH$Zz$cYowyraRr?&J?JV{+z6-t zo>YZJ6M+Mm%m{%p_L~hNEV9jUc_AyNbWGTtf zZ}hf8_~v)4yyR+TavgKC)JzDi98X*0j-=W_+?jC@NLOtNsSH%!3)Emba>oWHKq@^bp#o0kPMjGCC-HaH%z)4&Zivy; z(!3c>Xx$A=Ef0@wiE;W=6)~0P=Fw=i%1tg6$tDv;95Z$H+Ao($M~|r~__KhTz@}Lw?+3 zNP-GDXG5sFU+3zCIuXmzKB2l&Z5{yhiVG%YM0)*KFX(|Hsl3xzF82BbBi{+lU>UFS znmJ2yh!wpxs;)24vw{KTvvR?Jsl&5+(7tYXEf`h2kb#y1;VHPqs<{Q1HDOaT-g?Q6 zZLGehty?=*Ou z(2yAii5n><eM!-@4A+tsEKHCu-{%N~$v*cj)y@$PB8m zeq^+1!TN`1!LiXZpZ8humDAO-+AC&L?V97ofQmOulgepugF(Gl zPn*#(;fiMUBH*_P9%`sHhh#gRq-`iB1P2=$zERy4^@azng>_GaBp{+9meJ{fMlSSu z-b7j-?K)FK5aP!l!&!WWPI~6+o%e|j!84Ldps1pV?rga0J9N%aDyUA*v)9bC^dz$9Q?y**3d+%`kKgaWhHr!aOM>Zhbt z$ZeoeF<(E1`Jat(s1bu^>d3ANr%a^d>v&y{qJ0v5YU^!0ttK|qWYu_CB03vOcPQi} z@pG&6^rw5sRMoU98ZIi4DW4K$B+iqCiJ!cr`Q!|pzNF^^hM3+VM~1qIoKK{s2&b-j zzST^e7Nm<0hH**MTwcJ==7Mv3(xolSi^Y5{6P)U^I8!X*6dxRNnJ#Ul!^pf$al#w+ z)8z>qeHk19M8s^t+n6s5;l-M4xlkH6Nf{w+8S~0{#nsu|La1`SVFZ}mp8 z{IIO`8hY(xfz3;a1fG*t4@z^GsHxiK6}q&}xh=`oxz!(W4=ic+uw%;Jv)R#CFa z29%NL8y%z*QL?$x7*08g2!*0Q24X}g;rv~LkjWRueS=c+H|NGoP}$Gt4a~UjUlS58 z>R-OP+v{G_<+kNpbcNU3 zGcXurCy?q5PvrB(ba^D@P(Ue04m^tUn~-9Vi6DcN!bK>b-rP_LUf1AV7c3!_fJ`uQqq87&d$y}MF!-m75p21HS`{iD` zBA2Ywxg_Nc_~pySMsU(r-p_VVX8a<#b(nkhy$rXmos22Fa&UZ&f`~darAshk;4JOR*e$AX;VM5UAU^%y>`~Ttl0QM{{8rp(>uQ`S-X_)`f?bd<66K zSjHc!;_EmcvLA=Cp=mJErt^?Xh|6Nv3TtHj*eW!dzPeDN^Ww(0AUchDoBYx^ohL_0 zdQ|$8dCkj02N;0wRo}EhM=CB=`#TEQ;Nho7dx8^)=+Meq2MoYJu#ZwsT_lG-UnP?( zIK_3h4ySW;Vi?ybignX8u*!2z%QI8Zc7!!;>J_cR{b}1vrjXBz;@;?xmzgNx#JEOK}i5~Mu}<+hSFK}0uBtQ+Rz-TWxhO~ zMf>3m7fKmQd3YiWW@hlp1#K_Yo(_~waH(u7)#_lI1Z81$Av=-xR|e5@c@R+$7cpU{ z$H6KQkU~!(pQWG^1)mW_Y7f8QIK$N9&3^it#YoE$L5bYG(o+rbh20nTtkJ3mj!bm0 zu>DXhS+v8HXKFG@Q;Fah?HH;9g4c*Nh%#_)oJ(YATo2DRT2}5X3>Smr%^{vEIj#pN z>hVK~zz!<(3;duAS##P}mG*+SIX(2aGH9HYsl0J7ySc?{4uTbjaTJ8JK|;4+tPo_s zBD2&|R=6HY7~PD_a&<=ybv|rL7(j|zWeT#eIWt}^j1E!96=pQ-ibPf*V8Uy9(IZ?= ztuTdXI^axs7JItocwtahwY3O!Rc#Ffj^{RxrKz^T%@OV3uX>m>TaY?pW{_sO9Cjmu zZ^%u#fP6tl@Ll(Ey5)h2gPYR;liuhDl_qdbZt_EKi=1d&wTh^w$N}|*!nlmWrVNHf z-CIb*TtT-gsA-0Mu^Yi~+(5m`j#$s~L9v*qD^)PcRAVha1?ZYROY|3Mq=2(Y*?fB6 zOgcL9>oht$-RS#~3g6SpyQ4uwx!fUuh9F?nhzpn3=F#a=}cJajeF^0(KDM0 zqf$|@VvSey4@$Qf)iVs)?3y(2AakJufM&kpAVNAHxU%Wb(0Rsfo*Hea+KKaM!`g{R zgt>IRvQS~eNIu#@u1Qu^4Oc=qpkdTCk$S9kBkLHG zaP=84XER8!ogy#tGCWaH56!ZZyf)B_=eIOS2y`_vK`s{4i3(RUQF1uE8KDt>IB}S& zqS4((#}lN6YF>B}K!e;-_QDcbGf>EnclTY?KTsIJc{QP*jQXRQ;uclK%#qSChQ}2V zG)#%kI;Kn=i~ejNve!>BZw zQ(Nn+Q*1&~Y)14|>`tyqBh9onk6{q%8Z%3- z8jk}}5>qw4*;-Anm5t_|8gGA$p0z%DR_#Gq^9HYH6n(S{(e|Uf(GG_F)UX|l2Fx<{ zhNED5O~xjxHeupP&F`$pr^m>#PQDahIb+Mqjwd^FTWQUN(fwZIrI zq)w;9)pX%yyn0`!R?~4X8}}o*o3AgH&!0jtwKZUu<2D! zTRBc>q%9A7<|rXE9vSr|i-jqkU82z rKw>v%{)`EjG7s@I*MrxGUZD>r<2o+KsvQ~LjFkv#>%-dM2wndd3(W#s literal 0 HcmV?d00001