那么相遇时:
-slow指针走过的节点数为: x + y
-fast指针走过的节点数: x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数
+slow指针走过的节点数为: `x + y`,
+fast指针走过的节点数:` x + y + n (y + z)`,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。
-
-因为fast指针是一步走两个节点,slow指针一步走一个节点, 所以 fast指针走过的节点数 = slow指针走过的节点数 * 2
+因为fast指针是一步走两个节点,slow指针一步走一个节点, 所以 fast指针走过的节点数 = slow指针走过的节点数 * 2:
`(x + y) * 2 = x + y + n (y + z)`
两边消掉一个(x+y): `x + y = n (y + z) `
-因为我们要找环形的入口,那么要求的是x,因为x表示 头结点到 环形入口节点的的距离。
+因为要找环形的入口,那么要求的是x,因为x表示 头结点到 环形入口节点的的距离。
-所以我们要求x ,将x单独放在左面:`x = n (y + z) - y`
+所以要求x ,将x单独放在左面:`x = n (y + z) - y` ,
-在从n(y+z)中提出一个 (y+z)来,整理公式之后为如下公式:`x = (n - 1) (y + z) + z ` 注意这里n一定是大于等于1的,因为 fast指针至少要多走一圈才能相遇slow指针
+再从n(y+z)中提出一个 (y+z)来,整理公式之后为如下公式:`x = (n - 1) (y + z) + z ` 注意这里n一定是大于等于1的,因为 fast指针至少要多走一圈才能相遇slow指针。
-这个公式说明什么呢,
+这个公式说明什么呢?
先拿n为1的情况来举例,意味着fast指针在环形里转了一圈之后,就遇到了 slow指针了。
-当 n为1的时候,公式就化解为 `x = z`
+当 n为1的时候,公式就化解为 `x = z`,
-
-这就意味着,**从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点**
+这就意味着,**从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点**。
也就是在相遇节点处,定义一个指针index1,在头结点处定一个指针index2。
@@ -77,7 +88,7 @@ fast指针走过的节点数: x + y + n (y + z),n为fast指针在环内走
其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。
-## 代码
+# C++代码
```
/**
diff --git a/problems/0151.翻转字符串里的单词.md b/problems/0151.翻转字符串里的单词.md
index c4eed2e3..8f8454e4 100644
--- a/problems/0151.翻转字符串里的单词.md
+++ b/problems/0151.翻转字符串里的单词.md
@@ -16,6 +16,10 @@ https://leetcode-cn.com/problems/reverse-words-in-a-string/
* 将整个字符串反转
* 将每个单词反转
+如动画所示:
+
+
+
这样我们就完成了翻转字符串里的单词。
## 代码
diff --git a/problems/0202.快乐数.md b/problems/0202.快乐数.md
index 0a5b6108..1ed65498 100644
--- a/problems/0202.快乐数.md
+++ b/problems/0202.快乐数.md
@@ -3,16 +3,22 @@ https://leetcode-cn.com/problems/happy-number/
# 思路
-这道题目重点是,题目中说了会 **无限循环**, 那么也就是说 求和的过程中,sum会重复出现,这对我们解题很重要,这样我们就可以使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止
+这道题目看上去貌似一道数学问题,其实它也需要使用哈希法!
-还有就是求和的过程,如果对 取数值各个位上的单数操作不熟悉的话,做这道题也会比较艰难
+这道题目重点是,题目中说了会 **无限循环**,那么也就是说**求和的过程中,sum会重复出现,这对解题很重要!**
+
+这样就可以使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。
+
+判断sum是否重复出现就可以使用unordered_set。
+
+**还有一个难点就是求和的过程,如果对取数值各个位上的单数操作不熟悉的话,做这道题也会比较艰难。**
# C++代码
```
class Solution {
public:
- // 取和
+ // 取数值各个位上的单数之和
int getSum(int n) {
int sum = 0;
while (n) {
diff --git a/problems/0219.存在重复元素II.md b/problems/0219.存在重复元素II.md
index 17427b89..ddc67051 100644
--- a/problems/0219.存在重复元素II.md
+++ b/problems/0219.存在重复元素II.md
@@ -4,7 +4,7 @@ https://leetcode-cn.com/problems/contains-duplicate-ii/
## 思路
-使用哈希策略,map数据结构来记录数组元素和对应的元素所在下表
+使用哈希策略,map数据结构来记录数组元素和对应的元素所在下表,看代码,已经详细注释。
## C++代码
@@ -14,7 +14,8 @@ public:
bool containsNearbyDuplicate(vector
+
+定义一个数组叫做record用来上记录字符串s里字符出现的次数。
+
+如何记录呢,需要把字符映射到数组也就是哈希表的索引下表上,那么**因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下表0,相应的字符z映射为下表25。**
+
+再遍历 字符串s的时候,**只需要将 s[i] - ‘a’ 所在的元素做+1 操作即可,并不需要记住字符a的ASCII,只要求出一个相对数值就可以了。** 这样就将字符串s中字符出现的次数,统计出来了。
+
+
+那看一下如何检查 字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。
+
+那么最后检查一下,**record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符,return false。**
+
+最后如果record数组所有元素都为零0,说明字符串s和t是字母异位词,return true。
+
+时间复杂度为O(n),空间上因为定义是的一个常量大小的辅助数组,所以空间复杂度为O(1)。
+
+## C++ 代码
```
class Solution {
public:
bool isAnagram(string s, string t) {
int record[26] = {0};
for (int i = 0; i < s.size(); i++) {
- record[s[i]-'a']++;
+ // 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
+ record[s[i] - 'a']++;
}
for (int i = 0; i < t.size(); i++) {
- record[t[i]-'a']--;
+ record[t[i] - 'a']--;
}
for (int i = 0; i < 26; i++) {
if (record[i] != 0) {
+ // record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
return false;
}
}
+ // record数组所有元素都为零0,说明字符串s和t是字母异位词
return true;
}
};
diff --git a/problems/0349.两个数组的交集.md b/problems/0349.两个数组的交集.md
index 879f476c..2f36c503 100644
--- a/problems/0349.两个数组的交集.md
+++ b/problems/0349.两个数组的交集.md
@@ -8,7 +8,7 @@ https://leetcode-cn.com/problems/intersection-of-two-arrays/
注意题目特意说明:**输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序**
-这道题用暴力的解法时间复杂度是O(n^2),这种解法面试官一定不会满意,那我们看看使用哈希法进一步优化。
+这道题用暴力的解法时间复杂度是O(n^2),这种解法面试官一定不会满意,那看看使用哈希法进一步优化。
那么可以发现,貌似用数组做哈希表可以解决这道题目,把nums1的元素,映射到哈希数组的下表上,然后在遍历nums2的时候,判断是否出现过就可以了。
@@ -16,13 +16,13 @@ https://leetcode-cn.com/problems/intersection-of-two-arrays/
例如说:如果我的输入样例是这样的, 难道要定义一个2亿大小的数组来做哈希表么, 不同的语言对数组定义的大小都是有限制的, 即使有的语言可以定义这么大的数组,那也是对内存空间造成了非常大的浪费。
-此时我们就要使用另一种结构体了,set ,关于set,C++ 给我们提供了如下三种可用的数据结构
+此时就要使用另一种结构体了,set ,关于set,C++ 给提供了如下三种可用的数据结构
* std::set
* std::multiset
* std::unordered_set
-std::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,我们并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。
+std::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。
思路如图所示:

diff --git a/problems/0454.四数相加II.md b/problems/0454.四数相加II.md
index 8b3b049c..af10a130 100644
--- a/problems/0454.四数相加II.md
+++ b/problems/0454.四数相加II.md
@@ -3,13 +3,19 @@ https://leetcode-cn.com/problems/4sum-ii/
## 思路
-本题使用哈希表映射的方法
+本题咋眼一看好像和[第18题. 四数之和](https://github.com/youngyangyang04/leetcode/blob/master/problems/0018.四数之和.md),[第15题.三数之和](https://github.com/youngyangyang04/leetcode/blob/master/problems/0015.三数之和.md)差不多,其实差很多。
-那么为什么18. 四数之和,0015.三数之和不适用哈希表映射的方法呢,感觉上 这道题目都是四个数之和都可以用哈希,三数之和怎么就用不了哈希呢
+**本题是使用哈希法的经典题目,而[第18题. 四数之和](https://github.com/youngyangyang04/leetcode/blob/master/problems/0018.四数之和.md),[第15题.三数之和](https://github.com/youngyangyang04/leetcode/blob/master/problems/0015.三数之和.md) 并不合适使用哈希法**,因为使用哈希的方法在不超时的情况下做到对结果去重很困难。
-因为题目15.三数之和和18. 四数之和,使用哈希的方法在不超时的情况下做到对结果去重很困难
+**而这道题目相当于说不用考虑重复元素,是四个独立的数组,所以相对于题目18. 四数之和,题目15.三数之和,还是简单了不少!**
-而这道题目 相当于说 不用考虑重复元素,是四个独立的数组,所以相对于题目18. 四数之和,0015.三数之和,还是简单了不少
+解题步骤:
+
+1. 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。
+2. 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
+3. 定义int变量count,用来统计a+b+c+d = 0 出现的次数。
+4. 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。
+5. 最后返回我们的统计值 count 就可以了
## C++代码
@@ -18,26 +24,25 @@ class Solution {
public:
int fourSumCount(vectorX3NOJMp$#a-w@e?NnQ>~H@%Z6$w@wqNq0t*?yV+4LNq^3T7UyB$eR|DObctIMU2v-R%ukB dcRb)u{-`62NJJ3Q*k%F}c*ex8S6& zIhPlZ`T1_()04ah#RgK{?cM~kh%&K(k%+;kj;O4UDQvo_HyA>f14CY8kLAVhk~~rt zcwqH7+s <#mwWNp8Yil%9pNdqXIPCaIwWIq8GU)7=XKaf%vtn1jqt9FhNiBl?`W zIrAW|TkV+ro14=<^i$X)nH6hjE%ic6jF7Wa rZWS@9}7VC|B}BP4=8Ztkho6ThR)L#r_63TK(5`^=>8HJ)mp-`={k*)!~ dW3am$j2s8N6sCj-nbAX5Y7YdH+$HJgW<#N9{T)M3J?@ zaUoD#o)56%B`oHEkB6iRZyB4#nt0TU|Gsf3yZ!dlDl1k3*f)6UYMyV>)E$Zd2-3xR z^!%+(JD&8GdqC?~Jbs?a&{lW=*<+092;rb^RoCF^KhQ(2m!0?X;SZGWa-7Q#xM9 z5R$l|>$j1l%Q0n!hCqHq(8#So2WnsuKh(0{{+5yFRr0PYA#zqS`cYGd?tWA^Bg@@B zV&S0*pd|076a-V+fwLU|YF;u?H^hdad6abUiOZ35f#Sn@q=wzc`SHeRJ~5UZC)i2; z3rWsfb39T>Kks >FcHP;ASGrQ z&B_4y@(=P=fOzLU5;yf$uCY#4$?;q65@Z0*dY){?Y-+i22O2r{ zTHk8gfKd9NX8N#0`YZ4Bk>vET#`KBN^tY?&OreZP&5S9Bj8EPf)5#e#jTy6}8Q)hk z=7lnUYGy7tWG;DUt|Vu!HD+#%W^S%#0>X5J79HhCXZ4|DQs~$wI>#8DYmJT*&NAZF z%Hng(67b2wr(_8?Wr>buiLYf5gtH~JvZWlerG2txQ?liovK7a&mDaMAg>zK2a?~7i zG< ?PprER%df>o;zjfKRy;JDl9N*i%Y=d_S!Iy3DWg9Gq zupAmt09X#+E7B1&4ua2dq?|8a&S}n~00{8)D+@r{-&0^YgyrxbPY&<=09aN^dazTW zy7P(cpng7z<6|q5wYy&B?Ni84FwHbyX$4W`5%9j$?LG@_cbDz&0CtY9|Ha;W2Q|I! zZNK*&eh`Xi=uJWhp(6wcMQRAWh@n>{(nNG==v56(5L*aE6x2uu0V73 Y z<%)ocx>Q6_6j_|Cz31$C&U2pqy!(CT%$a%j@Grv*GcYiGKlkUlt^}8It^nK8GHM&& z`a4d!@%0B3E)TNUAZ%D|zWx^>VcJy*CK-vo)-H@=0Fz!n#RlibS|O1~f)f*@PYF=4 zS= Xcz>_-hv&e(uuXeauelx^5}}8`o8jo!_+jRHM(_0>j%1govu6i~jI+G3wS~ zKLb~p!;vBN*=QlmYi&IvQ9sen5Rt?@Q9W+IXhC9!s_*7M@x1*b#lLD)7iWngyHHIT zs!eE*yaRSNMav qEg?k(EBYaSWoUP+*;{IUuA@eM9g)Y}Iw4DCzqFydx@B zfO#{vg4z4t%2fwyFL3`fZ?IM?IBZpq?*G^)_EMuT9Y}M@P=j&TbTbb~3UgTnzyALF zCRdpGL9Y0|S;~n#4v6Age~J0If_1{DoF*!lZ}!x*-ajimV~l$BDrR=nPB?Be#q7Bg z+#VlLIAk673cgGTYWB04xPg#LlAWt5tI}*`Nz;8Rk~)(S0MeimRlQ~+Q%-%~mRVR+ z&zLPyS w2S_TBv(_z9I7Vjgw$rWqQGLY)#P~~#CBOv z%o#x_Hr3XGWZbu%2D)`XkcPzg?G+i&9&gvS@m5x00}R)5N(zY2@6#FD=f_LFF91y1 zZ0*@bm%?%Ofw9nNpN4NfJI6G)1~0%uMvRe>b|Bh`G)g+)1yM;Z`I*j$O#{Ao0d_7x zzi WIxC3Lj%4yZTj;h2*1~Q%W z>-KTJ^G9cm4+D;=`(;%HVBA>(rMOlfr=d-;Np_Thwopoq`SHmdD8W_lePR>y8MG`F zZhjIjgz@bk1Hz54Gk>oHC)|~$Do+H?DO6_~Xpt2}DTJ2HdHfQC+?7wlscVQkrNkE` z@Xu6PvV~luvLc0wkqx*bqpF>JP%Q}ANVN`-JAxy@#&5r1cq}(evG#PdGaWcQf~!)P zJZGL=j}dcwH^pxuSjQnw$JfkG5|5g<@na>|OWShFj!Wd95Tx(m-|R*;!LCEcg)v~i zZxW78=~;m3wR?ld5i8TO= XE zohD*NMJ|l8SXa`~VwFcj!Qt{+V!(8y5ufjJ_SvW6pC&Lvs??1MrFp6{2_T_8U?Vk4 zhU)eE8;#|$9b!0m^iaT46EpwIzesXIr2V`evDhLs!$v7Ep^&f|R&KTYQh0g16!jWy zX{x*_9??+{0k1L@-ioUbJ-3=x{YKS}%m1&BLyO*OtI2AcAJt^V8j3}YLvW2#dX3BJ z8n@mWkI5R(A2n3PT5pS5-{4yR^xDAFwZXl$p_8@Sf7H?x>%uMSB7^Iq)9YeR*TweM z?U}6G`=gGoSRZdupBP-9oL--Lx<0+PK6A4Ez>j){Vnen?LvC=xq4b7=(+!2a4M!&% zj{j(2DmJn#8cTv3%hDUmPdA?KZLFMZJo}@Ot=Lp$(Nq)MRF~e=aJs3fx2buusr5$_ zNAW_N#f6UG3zyR`bf3P^+k2s^Z}P&m9~Zca%>x$AL&42A)0=OdZob{ye0Q?>{*UHS z#g;LPmWkk&N9iq3PPa_ +h&sl93{@J?M|6VD29o !5+!t(x^y=>{dJPrf8J7-w!CV z118GTo=@fYgyK_)w7j9ZSLD|>S5!G~-x)4}TgK2xgbdK#j8R;3ppLIc>bg`Nt{T0G z_+{md?-Ci!-i;_qo}veGxfh?eetzM=-nGr|>gVPLHmbu-;I1V@fWS_gR{H&tq%tZ} ztb>v6s)LHN031DLpOY)j-Bn}%`%?Bf^jtptcAuJvCo)up6-6u$nQXsWjQ*|aPdhW? z(d%>KF^{j`jZSR|&N|?$Ykj+Mk?w8SBfC+YZu`<#MHEA5kP8r{Zrgx~V+&YGrVv-9 z64YdQVf*YMiU`s)wR5U6T8%XPZ^FB|h$0 L0Lzk*?vi0{^UfY) zy0{X$BNsphWDVFX###9ia&n~A<4m15f3|c-nM_t6#Lb5eOIvYI=Gf0e3{CY|)$SAi z@B#|VIO;ufMkHt{r+sWZW02Kkn`fUa5#H8`l4P~`9Uh~mCN-H`@KAByS&(Cjo44e@ zNty?G)=vP^n1NkVy2HF>62*F}v%RUqU-In=9tz<#Y`+<~j{yZX-16Cms%7>N>SL;Q z2+^SuP8%Vqh<{OAL77ScRTVDSw}fEG`K|zVCp%iCI;^%wZsG?>y8YGBoG?GO%AGdb zizbH)96}bOkRk_1>Uhcq;t~4@0 d!tRLZngyO&&f7z$^e1FJE4E zw|jih1t$+ds!9DLyPq#q{)|f#Vw{LXc?(TzpBbY$@w`4cMz2KjQ9z*|=Gf$|prmOa z$b?Nhal)81Cyd^Q9E))W^E)zBm5CJ5#$Z{zwlEbIIoa!Vk!QV*pC8MaL$NxiVXi5? zxm$Zr4wPa7gaf1)p3-Fa(ubfhUyK^sEJ`
leWw>1? z{B) tD8`V5_rE{R>T*HE<|Eza{oEKTq%w FtNmJ9%xlY`p zR&yS+(gAn;yxh3Qq?zQ7RAZ*OLCsLbktZx%jnM sjfa%$SZ1akzuB|GRg W((s=CI-hpvo6DPKyB6$R-n zuSt+&LYq_7N^o#*0|>*&J@S}{ysg>r#(e>PmBw&A(R1J7^L*lwv~XgdKW<-|!@C<= zcV|Fx?BV0Nx*ono@q<>+L@4fpg35LF_Cad)C(%;vMlG*koPF{iKF~NOIr>KBaS}Yx z4fE4MWqJ8(Rw}HQJ(4A9s5lSA=q7po$}$|#d%N_~Wm`Z_KGsGR4^Q3J7AEfCDDCK_ ze6ppl6s^c^eE%6p(K3 J8kKch3SqBHnPXXvxe?aQ4srOV-# zmm@ zD!r@inr`a4CzYF=t`~VO25*T`K;@}au-9XJKM55 zH>CSeMt4C)cj1-pqtCjJFLyJQdRUe{B_Ta!89n6{J*ThqR6grDyWGQ8>aDWutqJL^ z%jj*W=xw^v+x)Dzb-9 U+KI1tndDE->A~nG0UqHAy*$|Tzyh;b@Iy9sb^Q8FJI*;U7NPNHXCy7RmQcs zifeDLT>InMwGYeJ<}0p6G<4Uy_54#_AtomFk4*00HGzL*a(#XNyOy87^NKZxe67X( z%H{XZy4QHc8n0O66>5pNool>ejaPK;-MhvstP(FoeM)ux)WiPjdy7zt%1@uOBlnOd zplFQG|AD;X0r{AywV<4J7R8%RYjywat @ z;>x!RQ0u8P_ySkd5h=Y4&Rs^;ufKwN&vbzgb6$OAzeZ}cmrL6ap>SULFYBpEa!#98 z=l#08L?t=rB{~QT8XoHeWX98DJx>X3Fy+~?yrs~hjB{lYcHTv5Z#FJ!Ul&Uq{&@Y_ zh3uok*&!$V)2<(7Ao88tH_M)Xvm n~{YuxollCYT21e))KAqEm@+o+7jl{zzuZ0xj|KDf|An-;b=P z6UXoQ02Gr^<9~q^Xq*LQ!?|suoM~FiSurVLFn8in5+2j~1$8+aE#KAsv7!zoIrmh6 zK+l>(?kyp{62IM(q7`XxM;&=>G5+GOC*~fORZ6FFc(@jZ2n)^Nj-B)^pY2vxOLV2V zI^U~+BMVp{bX2X`aXb_(fc-3n7dv388os(jubVYcq#3)AV@hu#2IcUfM0}xxnlf9> zat`ULj(h!@7Bg jEZwq=1~Mru+1P;gSPRKxZR;voyym z{{|Fb2YTQ$_D-v3G$4Hg1Obkod4UUth~K24-6Ts{oVN8C$adiX+d+abmEcg|vRtJi zS{)^TGmxbd<#5RtimV)2@B#}cjN1CALQz~Ymb`8Cf`1INQzdgDdn+5($CD_=g-ZEZ zH~qpU?LE40B6i{X%}TUnjqnQzN4BV`tc-zk)2V!cT(lNmx5u7CqgdVslwvfWQZdHD zkZFHWvf2*`9Tyx)hz8fsk{);!vf2!aA~Qa;!w_>)$0s;L(C^LLk8=Q3)d%HqR7{(; zGF?|1hu>V~fo5-y9W%&`L9~arg*?f{)$DiT0)z|D^H>?KiUMwviS#b7`RIv=6FMk| zt53q$QNdya(5=IZGgPFw uJ;Kh8=QHUe9)b zO|nXRlfnKZZTaC{Vhrq^NY&ME*{WWW>McT!?i6#=hkkYADndM!Pzp$TqarYX=i`X8 zlp CfxcCI_ z=d}HoHowYUi3l@1n0>Z?;OyO8o4tdoUFAitJX+*epF2sEITnqNZ+J13Ua5Q;9BDWe zd0p>;Vh|d4F)azqvNlzsj*|aNsCdX0cER;*WvnZbuoLbR2D! d9FV=(h*p={TtiBB*fSa5sX5@N~_c6j=p!bck W3-v?_>KegE)QkR&5_y~F5i8RKrtXdyO zTySOi)TKmd0$T;v%^OY6; HoM8!bEZ@0@sr#CGZ`D2GNxA*{i zOlyCYU%zD2)T9Tcoo@ oV&@o_& zh*9z uP8|soq@qQpsgB_W3#sU_{k{*#Ne80zd#wLu5Z^NQCjqYlX|iKW=f#z zSytYY*HD^?uIUWXFjuOkU@1AB6^cMqN?99ibwAuMV!`6%9VGWqiBnz4fSS%ajtSpY zG4;FhA&ym5Y=qI;FUAWvLEFZ$`~_Ur?|GH6$M}FR4nLO`e7Z~%D=MNge?gZN&l@$k zA9M9Nm;Z&zC;uB>p>%!0^7@yM>t8djFI8Osapn5YXV?E+z795WQC3_elq;0U6|Urp z_Hoxuao7Lku3|R!OIr0yhxW^6_RClHEB5tooa)E^?8j{!z*`LvLI*T52ec{&bovJL zrUvwX4iGmE8d(jJLI+JV2hA%7E&2wnrUq?(4w5$xQLKg>LWi6(hg>R$-1>$*riMI! z4pBGW@V2_)8+yY(^G0Chjo`i;p;I@u|GYulcr)DUW@PBi=**ijl{aJiZtj`7x%cNy z`o`gStKr1Z;pEKW)XL%XzTwQN;R8R185?h9TiwbHy>%$_Rzc;h!oFKar*0kpd5gJm zgk?2S5;{_rIZ|FZa=LG%a%$x4&k^><+f`P#YeH|=W!`S6yxr7yyLsw%>(ASqjd$9t z?sSCSxtw{YyYh}vZ{MB1sXNzx-r;V%J79HpDD>{l%)7TL@80gadw1&Y{hxP7H{Kij z19SVr&7zQdJ2U@jHQPVRp4HUU{-d_?UskjIr?kj_suCC
&EB{6q=!|M&QlIhPF%XY@p_sQ>lN4MenwNqj60_J)D}b~IWY^7PS*n5r z-Pp V-JoZK6$BozczWaQqyPNxF6rhe84>fP|hD&OJK8KE@DDFk&S{Ps~ z_Av#RKZO|PC3WO5YCN<> IX6={CH2U6=AZj6i!0?&H=&l=PwlNodk%_e;2^c_LB(d!c6sSbbfcJ-&ywqa`T=% z3C2#f7+R&M)VRQQhe5R!Ba~zT8Ig~2VoC0RK8Xx~H3v=ZstY(KV97rAD>!7Ax65Fw z(RrqkdfyMx<%;%=+Xi9LH9h-%YGe^-69nngbP>HUHsmb$#0?!AlfEZd0OVz%YD`~d z>@R|eF%L_{Xag)oa_ioQpVYrdA!3|Sbj+5pik)_-V;uvBs~DRf7k?I2b_pH4XR9dc z!h |4OMuBLL5CAV*aTH#Z?`Wy<#mOMr`LxBm&jWe6u1~)^5rNSPZFd zoj+J~8BPu2^o6X<+HBkFt-~cP#2%7 }Cae;E!I7>(PhRiw-TA{_vsllcd?LN)F~@$RiO zut>2Ny9KvQgjF|yIf}Be!lCsH6$!E%%bT)-(x}@>sbQ%&Ip`h9NACKVE&FJSYSW_p z0t@*NN=+%z)a;L;pjF9I?T>~!vpaw+gU^G2$5>KUo0ngN&q7=(LS|_Us{i@vB#Kxj zG^Q<%7>h5cNinr0sp^o*4|~{1YAXwl7So=D{gSP^%}1Ay6J8Ekdwj#YD-h&vh6#*% zR31iF{Pe4*ZIlC4#9YEM$4WcQNh8Iu(_2@Jx9#E%KhzCFv=96w0QvUKNCL4wSEX1B zU*Qd(C*r==xhTwQ2-1Nh8D4RL?*nmz-^mz``=i6zQcSYWEP;vwsCmL;3ZmAQ?2-+? z%B5Kdq)E}X1k9iCb+%85I#nR8?vWiRUSHT#b?kAz#c8zal|`avq79~pz$o<*Ar^M# z6IR>OGG((p-0>$pG?ezr!0IYxpF_JHsVNFhU?~m?V3e1 5@M?68Z>X&XhZs=_F){rsl74wj7|4X2|`i+6h{WAD4! znqQ*`>BcHN)tFhA`9-39xT;m1GOI1D!F8J(M;pfmKC|Vjy;x_RLf0mb@TWF>Fk~^n z@4Y)qM&P1+`m;G`b@)I=62*lDqaPa-HW@usb&+yIMj}*464ZXTQ<{{pUTulj#K|5) z6LYhZz%Nx$fT1Epi)-p|SHWqln 6w*aeiMNqE4kw-1;PuR3x)DYrg!~$Ll(b{1 z(L;c$ufoamQ}=QqTVIvYLrcMRHP&n&v)>dzwLIgybBp1vizYX%u~L*YB#$uUU@xWj zYg6!TMWv!tHM(&vbg3fcr0WM%Z9j#e+`@l+YBiFsqVVa|T=LW27NOCW^Hqq%cVucX zvVS4iCE?ums=)1qmpr9NUj$IsQyn~KR7qbhL6_an)NCc@EhBpT{)_@zrMeg860OX@ z^>#g$(W&djoX-9Wb-qwb9WuPNV#Awqrr}DJ25}^;)SJF~eWqi7Ir1aU2FzIyhzi+eur4nF6s38s8ng%%XgT-eJ|QC<}2- 2lmz4s{d-jm9E zlYRH5rtUred5^d8{sQ${Mjt$9aqEBW2=U?2e_16G85#NaC9sT)3_ctxEG+!T64-x& zLu;eCYoobqOJHlg{cAmwYgHm^nWi;I=- #c8`-6uoc%@w$o!yn(K5cUti`zek`a+tmd8W9pD-bZ{N zrvVHZb|Wup+_*V|l;D>?-OjAkhDPZ~U66=bqO1$r^ZTh_AaLlu`uPpp<|G^L-}*dy zBM1w!e7m`9t9(S1skjcy;2x-@t-?@eJNI3SWaMt2u5hk7N@Da|jGh}ZF37gW@)*$k z13+c*fNb!qLcg+lapESj)cpE 9E6<;P%RR4OqpfBlxo%=SO?oKu<^GFh)<`#9#vI2u+S2#D_R>a)p9D?32lzEm z;}M+G&A@2Uz)A1(C@pILlisBxP1gwEW(Xqm ?TW#AJ&@||YeF^uM?*9Fy z4Z*?3B^sz;OwNCeX&H`5<3d52J;_`5kF1QkL|9se_+_hX^j5 VUra*CwNP& Or;J@C*7 #KAs~vw%QApCp(cJst25Xfi!!Q@G#+*X@JJSttjfx8`iX&J7qASP+r+;&JYaR z?Qif98Vz^Az imwAngXc*OucYu;U;R6Y#8(nv=|O1aODDdKuq;L2h$DsYJ6OhTuYbn2 z&cVCVs`~c!B1{-HbfjZP!bb@xG-@J|q*fwD`S^fr6TV4&40i}^wT`x>SEgVKH`yI$ zbe;sOW;FOcEd?jTOuj&D2RNrG$YKfYb}ZC&a1nXs#4l+PX~5gcQbHT7C5@C_{cMkS zn~IWi1Q&q7DGw)YefKAY=j2u8F7p{u$(*Lr;w2+tD&CZXv24E75NiO_z|yVV?>l2 z*@?&ZRy#&a@6$j`XA+&yJPCWe6Oq6Gd#05bo2q=0?D`V!tu4K}2(Ogx5CEE;k|qjr zO5#L@1RHk_Wwnw*1-z_}ZMn=xxQA7MCVXg50+gVo9W~x5#j`_rs`6wgjUl6DRAhLY zpD1j9sRs7-5a4{-5(+kc*HWQEg(Y_p7uX{#$aJ+aF*=0<7W@Vnwu_@vH0W=@&vX!` zo$b-aVKqGz6?W98@Z24nJs=nIPybcUNa?_g`u83}-fP8`0jMHO^prAulw`B}jfaJ_ z+Hhb*p&1aPc{uUxOuj-QN$ s>1@|0EUPrGa+Q{|!#Ep5J#+EYu}eKh22x<9LzOm{U4IE= zPJ1=xs7Nv$gxP+9PBDKjShS7-(WeJ=#*#M#A>owp`@_k-f;-$9XWf}6TpPDK;VSrr zG6^rO9D6CE^QAwt154xCq_G@aV#b(xWI{bZJZGAfAF#Dv&GB=gwrrjIlaLh|-@~S- zvAlzAMfkn3$iXi_h*`3VV?^0a+shjvEI;+tN5(5YHk87Xm(y)jrFA?2)J=9g^0wK+ zE%KMLVkeyTo$y+kD|TfeIJ_-Mr^8?a&U>*TxXKtGhU^X$MXkJ0RrSsEa3JuZ<{06; z0~;81WQab#aG^Ft*H@|Qt;@`pg!|**TUq-3agWN&h*dY?YBqAjnB>F?5h9aaF>paA zq*}{uLX?6gN6NRIb7iZ<4*^J3J2Q7N*3>iew83x2p6ZhhPHmyL^Da4a)938*>jBQh zU;V1jsfBiZokHTc84xA|eV;fnj7@fwQdc3AAbN^YBh+-<0!N?-EyY9XNa-}|lW_{? zGWd2Lzq(`srk$;^KG33lJDPF%-6C+63s63C9D}x?G~sK1AReEwBZ0~?m+`W6@;YMm z&sr1OIAgxiLyApY$v)QP!2erns5t{NZon_Ej=YwpijMDChdKH@D_~1gbjxGKy@jd> z&&+LJ$7PhXH3PBp&N!D5@6J19qkxkkuy7bNX}^#;$zuR_kI3u_U3KIn1&UksyLq zp OI)- QUyJa%d@wY0OT@Bl0If%hy6nY%Uf0JxGK+j9 zn-fv%}QXK+g z#M?hYGmz~mLp7P&Gq);u+)r6l8fPNSJngfAOuO#QE5~5@+bFC<@Z;yOve?=zRLST` z9STSzu`S;#vtQLUGe*00u 7B0xoUj 95sl~&_(i(J*$U1iq`zP4k z>ugf})_$^gId{LCGkE9xLO_aZBB;oGH%enH=&HdlWh$Q*fdIoa^>HGr3KVO?l6n(+ z0gBc) 5 zGCVtrFTkhT+O(8<{xU>{5oJ1LnmQx&0Ap`m2I`>8JYETxd&n3H5Rq(uq@JXwS>?j0 zf~Ee*EE*+EJ6LB3-Ay(2z0%<(7(27zx+*Bgfhl7I0V$Kk2){x{Z_x=*5l@a6h?ZQy zhCT6KPDt0mYpkoX{*1TBA*w(CF!B*U{DJMM+k#A>mY==$H)G#2wCDgKy8z)EMA*TU zZHrs~khV#~#8(wlJcKA)+6f3Fxyk|Xk3@h2H1E7R2MfV?P?ey&>LFQ(q2o3%;_B?| zv4ap309N?{I26Rxt2tL8TW)C#N#O ~?`EpS>dw&^dl?>m zO9bE#>F@|Tf9^2Gb{xp^w&%C+WR4v$P)o8OHAs1B7jx1V6V8ww#ZTn~vb^nWge_#V zk5uCm`9jf9fclx6KKFc-bVwj+0fZlNwT&m#`DltykVP5!;w75lMrK`0DJ$RL(M|+A z3O>}6gGg>6Ga&b?r4%!DrAAPKOP*9CEe`;`t>jvYUdc`#DMm{$ux`b>_{PmH8dmPI z^?@W0flia#HF_>MZFQ0k!isUpJ|bvjgUbc0?}{j1E=r;UyP$pEU3)OT03JL5FY)kt zTbx%LLDt7YYcXX!d-tT2jrUHYPcvca_TX5TvdFY{ a@%*2I zDw(DgLXu$DsUxCp2n%28z_iNAK7yqiO&V_55*ZfT<}ntebSpUaQ%>>c1)$6^B~AEY zYpsQ-949s@Gsu?j%b}=da=YCGaII~p3V*Myc^QkS9 hIKJd~H7Vr@y}x{LFs08;?#~Bd;&DqFu0{G3$^R>P8; 8W5gubGGn&-bPpr z`=)s7ElmPrYn_G=6*bmzs} RXHb-+Ohc#`E>Doj+7nc64pW@FSaD z+kYuZbL+JgYr_RDCw=H{t^J{49|<33@xR|{n-YLH{qjg#!nqJ!y<46n#{l#oDR-g_ z@ W4B~Avy5~zW!s#&)`~s36sc09Q?S(0cudo) zr3y~ nQ;1sI#2gfEv5e2Z2aH?*$R zxyoXOs-f3!#MnNLzy4*1Z`1Hvc 75ywbG$AZnVaY*0|9LWd|l>jT^0T zqcv{yUETJ{8aMj4<3_I^k&lr^W7WIoM3fr#N?TB~LY1 i zCw~_pH3*D<=PqCvJ?`&MFx I@ye@B`-Nql5Z00kyOKZnV%aZa9nd0YE8=V!{F2B zzzv%0fzU-=RDv#T{AR8ZvXT7|+t*P3q3M<|kvAuHYvRE1vyC-59rfkn%n|>aJ2j|* zC3#-}a<_Rk@2LN8p>fG5L6>8>;^yGdR$PmqOUTDDuqSB6o1C*z52RhvwJmhhkNx$v z%OU`b=RMpZkNc+QuRa 1hUCIG2^}6|15unJG1pfp zL}nA8#3gGMqXZmIBP$*I+g^pt@3vu(F^W8>ARn;r mtk=LD7ON2_nR>>G6pvL-9biDnyEch|_J(s;SD*p(rCmh`CFMet #qTur jMO2FoqaQF)w# z@JUjAF;XrKw-4m?Q0)23yh{}86q6|TF~4dJtMVm97T#c05eMC)js1ivpI(64{D5#L zWkoua8YKy-;eX3VK1v_MNfV~(9k(Ys%d 4Fb2%#Vtj*zV26o ? z;V(VGujx(w*6YzIQxmPlthhh24edGF%1nr+n^f@iEDmV(32sya`GLu3;_>4(W*$7? z@YopM()21NDvy%ZgW~~o@=J6C-;UAMFng$~F+e&{Sfe*232cN9H9xfaJ{JD$l8Mfk zL-R{8P(%46M-?q_ Lz=0}aSTv}=sk!(G8&n3jN~(8tBQLuN zS4=hy;x`c=^W`F2gy)KAXFe;!RT^32zpKeH6KfsI<1U{JMGNkfSAO+?->%~J%10MF z4_C5jBh^4O&kvy;GpI6ppz1P_Rl2ytCdSN9cNz-K>xX~Ob-?IZ5L`MJpiX2|;{$A5 z4m3)DcLxDKb|zPE{mD-6j|tpHhGA?@SQ?5Z%g*Z>-pt2E;oj+NSIF;!)_x6mLE7$q z%B*
_&0r-I>ym1V@b}L_pgzYjrdnPkqTG))KlIr^Dy`oRyaZ(w;0>D znJpGxIMq%N$HcC(y_FX)VY^(*>gM C$(##^N^eI(x9q_3Tvnx1*d_Ucy}Qz+FRLnX;b@X#o!UOb zMr+d<*lkv}IELNUZu^S`U mnO`tBt-gMSVx8ywfb8dKJ zu!XeiYC>dD-2=6sJz)}bpc83`o5*I52WlUxYHbU51w?TkWU-1SK1Dy%G&s?VEJ`H1 zP#YcTjkQiKR8vUqLBxpEj*%1<&Z*Y$c>TvZj}{N$I*i^I>)vp5^o+Oiaf$nKBW1%b zruWlU`}y4d_#LYbWgXgnq}k^7PoB#U4G4k;oVN#muMV-ujW)bV_<}C>j>6`uJG*oF zyWcGipw*1f%J29p4MH|QQiY=-9Xmn!X3z01!n*+VzYScethDI~`doPB6((>xo%b!p z>08SEF%p^x#4xrChJ}t5S_jc>KO`(D2|=ANI5?#4-FMJ3(CidXw7lG~0~NV?)*e#c zstaSnYX>_pl6V%2%reR*b*1X$f_FEJ%N*LicH%;2R5Hup%~=FXggakrr1)wVlK6k9 zIu)F4UY!(D!ZjrjVAA*rcbf0d_*Q`#6FH{xok7-5N0>&1&W{gD`yw0XfwU$(U9T9d zs{xCBR1*V?-;oANjw6`EwYQPn L;{Z)S+6qgkepLMaN#Ow O0-6a)+o`b{H9sMHA=KbiPk8Q%?r5h-;NUfz8B}eqXm($`&O{~NOnpMHA}Hw zbKL0(qv^%H{0$EC@cNzEKM6FpB7en7(wi&&`>rANOmbd}6Y7*QeIMTZ=y?I~ro+OM zZoUUVA>Ii=D?+2;y<$HHHd#oM22gu9p(c)9D)KtSD20kN${2u88gJ~|#DFd;^;bOi ze?iY?381O+hboiXl(wE9Fu1ZiRGGWFbCU=8ozJM`)uK^|UT5{nv}ORQykF;1A=L0w zMo|#sYgKj;?ej5$3_He+J2sbxKn5e#N|QhB)e?qw86@d?A{#9JKBKMitJeANpTWXd zONRMLD~@HqKuP?=3{wsx>iw_32QLBChwXx{Q9p(I-7+L(seq++-i9*${E7Q`o85LZ zaV!7wbcZ2Nh74{)c=)-R?$}8*G3W^UNWzRD<2&93cVi32;=qScpsBz`*@ qYm+g_A1rMK@)y?>>CFtPP7u@ zfg(-FdQ8H8=Bp7_tCJ6)7#ZXZ9Rx(1_3~*_7$}8<#|5os9~fcU%#mr0EIH+hLn=x% zD1k|p!@&v1EGb6TWs)`tG4dOrR}sLhYK#jf;{9u7GjA^qX*~Zt-Molbo>yi#Sz8e3 zX7LB#4)H%2)8MlSKc?G!X&0KfRm+F4f)9kXU?T@e^PmjTykP?H$;hrKADzh5wpt)J z4<&G_{HbJawb4s&! X=dC zu2HSQl7hzb>F2Ag<=813F!|q|98*(4U8$!lCqjmOSklB{+fIae1EES=Y*5pXjX1ca z&7h`>aCRpJjXAvd%FYvw+9U^+7>48+f&!jClN KlB6|@~z$$SgptGlIP_)uwi?o56L@!>s;8QTtO0|!7_4O31{A^_2_7D zbpNhbb13#md+
WV zKGO8sID))=oa(FK( 3`N44&hBu&ZDvShnj@GMf!kbbq6G9h>69V4y-kO&cLalvtg$qw! z7f~9FfLFhnzkh0CH)|9ohzc}4{b5Oy6hRTe0Dm7lc_LV>$LA#OD0NCcrVZIo;L#v8 zgYTXT6#L3UiBoDv(icjkcm*C`uzXQZmh)Hfkf1N5v^$7#53H~pF?4H|Wb9|hm>&+i zIp0b;cBxAC03oWf-`l^^aGyF=i8INK5F%A)^t8gTQiND<$MH0Ppy2r`>`wx-5K-;R zHdu+bapq-CN 2;4aBOos1M6g7#`LrZUDG!Rin1w(1GMHo z`8^nqO(`q7-d?>Do{p6GK3&@UR5)oN8wxWloZC*Kz93K4-2RYbe~HTfV1BMLDS$t6 z_oq1%6J5AHJh~B2N~%s_80lQ7RavY$q7#`eG-+_LmNK-Ycp#QSNoaLqV~N$)S7Z_j zz0WXip8ZscU=stL`YF>Vle%Y;XVV?(Bak=277+tQHM>&lhl9LjacWu@ojBIFKU->d zr;lH N9u$0HvFK3)4KC6TXSZT8Wf>BoFsXt3I5@7DLTd >xNV!HGXnE+j+V`d)qC zP@9Rg$)-nbedRu8bv~^fOG)cpELcpPCx`kLhN%VW_>-Fjt=q2hQ)t*ReEP)E TZ@{G>EMuTi4^pDEEfW@C0AJo>LtqQ7U*NF S{XbkHJ|)_{dv{`D zBA*id$L8w)M2YU)xwBSIv{p{ER!+25PPA4|v{p{ER!+25PW11UL3?_0Uy>f!t**Bq z63-e)shZCcohY|{YB(VDr}#eWOkDPcCFKhRynf8%*yCc%XTMHuzVE-!IZxI$yPSgl z4MzzSsYYqPu-HCt4w}KvHb#D(2LrX# s|@HgL4B)U9qt&j*P~c3;?}MBPV7 UUj|=tPsi6C^AB=!Bn;G}&@P_X!a{G+Vd;Eg%D;B=s HfBd2JcL&^taDLq 7|2o#OhxvGmfRGTIxL8nd=A#}NJ2YhD8rR9(Kx>n=%TKy$xhXs@N55)5 z;WY~3UY8YSeerYTUNRy(T&=oTf*xJg^>BAm=3dqIsmQ%{Tjh5C7&kR&JWB*5`AgSX zi<03AKH2XJlpfv6Klj(;;QBenmKj5SC+;c+w|^rWI8-@{J_b8pGo+|#lDt5!Jywdo zX>t(AN+qZ-7%4=!$zq^U3Y20S1dksS;H0~g?IY0uXHUTxK>;%Mw- qa zr|%Is{B_1|@6P=uB>K#R^9TDpJ|em!eUy)gZlxBg)!`A&v3|To)`DGNB5t`o`JlSG z0#ol^j F!KQ$t-AL~}j*Zy7F(Lpk1Gl&Bx2fh9Sv7-{9zdUQ585*+oY0w__SDVXe` zOK`i8=a*e-m4->?Hw@q6Pnl!DwRqq(9k8lctIWqoKU6as9|YtI kh5(MLX!roP8+h$E+7 njj-7+XWOdc|V>${DWXAYV#A!kPD)d~SB6Qu2Jgm-B{O&x~?M*reN`~V@A_7@)t z7c_Jr!`0PYKyscK6O9xl=JlSUAXHuUXMzU>*LI#%)D|A%eV&hq#tNbw$k?0pkb&PM zsSagw?H~S~4@D;{@zhp!0@FcllQGsufb< zA-akm%W-Nf`nfA9romc)y|tsx`TC6@*{btAe37yuMXF6zfv46k0TJ))2j`)zH~ctG za`bkzZrUPKz!2eXeb(Uef3bJpK~e4by71R(RySFiD5;wU8YC%Ak_=6d3^qwXat f;yCWrhHOq9mJ+{d@eA%r%fdq|MF`>wLbQ z<(PR)fCzs5uE*<(pEhylrUAFIQ#z0~di^p &L44;V#hIo2oE4~Cr z$^>I9hk|M6` z%OgfgANrxV*yh9}Egj)&Y!l_#(n=_wlknRo7rP&ts7`VdlmBTg|DNm8wL0Bw3F%wB z_~I2oiJTp4kd|r*R*;nH%w62STuDAvXx<-h(i@!nBZQSu^_nS95`U9FLBkjk3Qi`@ z@aqPbL^Hh0MNxtmzY<=FOY9FTznPtD*&giO>VMnc?2ETLorqc%Megm u>&*_HQ%0ZfwTe#8O0LXSn+?c5Bcf|>otrVIhLUTW7@?EYbJd!A)( z0!SaSZ=M1^3@Ok{*ibn6MxI?
ENN1jZb-GG72CI*V4SkDN-m zx-+``iUAl%1N#_vZ_a}G2ZGMpix=8LzO?|F3JMZ3+N%L3O3 zd7do6(ksO}RLW_#_u~-pnZ7koW?APM^`l?+B4p`*S6|*{0u(ed@%K~v{O-%xIE7S- zi%nMBqZ^hPkxG-IKg5G4QkjHtqEpVHy}ime-ai Q1pKn z6b+B@xJlFAE)Kq85}^`ro<@DJx1~MCT_+Yw(aVY=ix8XuFR<@KSE7IvCDee3_+(}P zikv^b?#Hn_&4h%|Da=2s@)%iyAH=Wf1y1Etk~=LVPe-RXb1ir@{d`4c)XLSiJvNfY zfz!Yn-U2W*(rijr71Ada{Bo_bPk=HbC@RB&{r0(Q8+Ck#$AmV2usG6$eG|oDSTtls z3@VEmBa=?z5D`~e8Tp6mnTXlS-^5x`#23X3QTLg&kuBhRp4KHY5mfyQ3_MZ>Kf3@7 z*xF)Ftvi4O2d#D+6Zt9sLn&rM971zozxaj7y>}VOHsw0*FVd ?pjnT@V zGe8V3m}5bc-lY9n)B;P;(NjE$>s1t3P?KiR;7S5i>yvcFr04DE!g8FxKfdw>q?cN& zGWvGe1tE(>YxMnU{lYjWBmjW4mSjUya^YLRr*mOuLv$MV;8$zpwG$y$JA9gn%_VN2 zyA4k)w-hNlne#AsqYcka-yvH7b}a&%0uF*EUqcux=wI}*jyd`n@&1Nn- } zBFO8Ja1(Ldm;}0U`6I=Yck}3H-x1^I#;y26%0A~zXbQ``)?@ATO>N`GOr7~i$t7;N zZD_GHeO!p+uFokV%66grX~(2YtV(KKP}TcN>gl8F;Ey^N9R3U=`FJQdrbSUy2(YSG z@SPK-e~yCa_ ^<90{!oIkO3 zl70{bOsOG1Hk>swv^7`=@ RXl8JMNq__X=k(!l2Q16Aw?(Yl =pS0O(b(Y3to{xZx=Z{^U>RG3auJp8vecLUxnebl5 zrE@>t;c66GSr4JeA1|^k_ynQ~dN!;(W$4v4V7x@XyK9B^+dA>%s#;%Ez7qATHwJa1 z&RtuImG#QNCq_65N*ZuWjtL~U^=Ce|y9yGbBO3LO%!qoPK5kqq64WoRp?uBf?sdIT zPp@h@kp<0~3c)mAD6GL( `CYCi~iTI2#C9Ciit8@fdWI$jaQI5ExFLFi;aY~edV)Vi6xD_{GFRuGx zQi-W1n1Nt^PQ%hB&92r-h&6Ak%bJ NQcPpBI&=$J9-$ z@%VCm%RJwqhmfWq#oNY&qyah`So8YsZ0!zIi3b@-_;oH&p& CRi$bOG>S@CtoHI0Gs+%^qMc9BBHm`d|TWvHq7@tj+$9peUdD zeRl`1)6=N`w9A@@hvz?DoBcx``t!&c%tP?C8GLQVL?xn-6Y#Yed~F6_n;C#b9SQKY z8GLQ_f918=FCL=S4=m 0pS#c|$Y-uhEj*Dx_>GB8kZIn5 zg}z@?R{WY=8;e8ujqyTw;11Kl8081}cvSR@V$`QK`b07fl=CU%?cTXpIMS9ZIZ?ps z;c+r#ck2fKgeW_j+-U3pRK*I!WgF9Z=nQ}`5pdYor44MO0!SG&-f=t07Nf> N?;B!WJ5=9z79H31mv2e1pV@7``roh|k|Y)zfjgHxWm 9!xgaEAZ-7j;U(LxwKFcV#i8HU z&bU(OYiH*D$z~)Fq~Z7bo9T7Bt0${&&z5ggwWui3?({J Sud*WO;Jv|k3jzp) zIy`RI4)Mc&3p1Fibuudwsjh&8(Rl76jI#|Gx5N5FD8S$Wex7qR_R&F2>djPJFnVJV zL@YmjkACv^!826&@sK+F{Tz@!cvk&u@J!aofSGur$wz4SGM3W=a4nSqgT*r#2=u`- z_6%wI;92ThWp)ospv~t+ 3IBegoVcB(xeVba*cQY{29gK&<3lo90fbxBIXj z-YSnXLQE^pbSB3$(ZB$H3G*~{(_V0E^DH4q+AF>gkF$9z0s*AQgT%sCX?8|^*5FeD zIA!|ancnjd`=X4S@&5F|v(N#Ly2;3=orY&u#LL5o%uGiSSpmg?nX-6E`r4T}MW(~h z?C>63wMmxVkbAI=tO!ZsHIopP8)R9OrYV78D2)+?Y*8O2cAK3nMPO>zZu)&AeYA>= z5Y0^~@SYUq_sGvT02z@)x(y-cOuldfR$@LDtvcu;Re8H}!cto>^ytT#z2w}qJ7Rg# znX1Xz*WO7A`2t*kX!+D>BccJLcwQ%W+K9NM$M>Ui3A;Bla>Rc| ?5FKJmR_7~O@PkRr_QM7jsKWBd--eX%%7 XzS92aL!78yxH*^SsR^#)n@#%51D *&f$!%w^kEM^_Db_+9 zG?|T3${7uMFS<3dKgpuE&~id5N2aQAkI$j+>GWHv?zGE+zn0Hrz8#ebmww}oD^4-d zTHZ@vKFheXd*e;%{Zz<4bT57RY%U~^nS5hpK=}y|UaQQZ{$hm@AtF6($CF|3fPpsl z>vbG05Ls(YjfXCzlSlUBP(|6M#3~EmX0X)Fy!RnPQxLzHF&ob2OmxUrG^o9}h+m_6 zTK;xL@bzJ3C=sen)}a>_A%aEfUufDJ9FXAxwm+AbQw4_ZdVTD3atkfHWqtj1-$l7( zM?u!3IB~J(9m<;n)&V>?aGC+2pW)JX&*-5@Mnx^B#M{qGls-sYzH$mJ<3UZ~(AeeevpCSJiV z%5(k$>$dHbBcC Bn3vI@r64ltZu!!`|e)sv(KxW z _dPZhec24f4y!?W~%SFW{rDa#jD=Mq5Ub}wd<}K>& z>YCcR`i47q8}Hq3deBU3X>Eg%2u30piD(flcytSlL@*M;NW^5HFlG-U(f_}Z=rKF^ z#gw3)huaB$ejkC4X$1`{AhsFNzTJ2=kw~ql%$7S$KpZ!~lw-%7n8{RnHQ)VZjV{0h zfaW^1A8AG1+xMLYIj#}Qt)2j=VEU4id?R$V^hR`o$H@(C0YufrT~^T?1PA#huNJTw zw{F&g*p{N4Aw+r3VMyz_7f*(O?cj|IkFpJWiJvtFi3K9*L=iP|QcsQ7-I>!2M_78H z`(Ys4y!=z6VG#zcG7v#pW@5t)$%{`cG8uaK)Bi;;J@xqN9Yz|+S42d{Lmv=9R~eGU zvdYgI0x=G8(V7+UET2D44pkolb`~OnmfQfXnsV^1rU$Cu<0`K@naJnJ!R}xIA<+{y zGIn%k;& Q04bR=A7wpBR0syUBD^^vhQb zdJR!VMVw$t@P>mr;ZH*3@fRVQh@JaSgh=!l!Ql@fia$BJ &qv8^A?ev3SkxKdYy!s%({a1^UT(yodjH9wPt2 zLm&Qg9`f1Zp~hc4MEwg75w>_p<)84-=|6aA&}55;%zyEaW6CccD*1zlRQ|+66Mw@) z5B|hMZVnQfbRHU{{P=^1jMcYvXmg8)5<^Uq&u|cNj1NJ-zvChOEgrJ|J02qa!9$Ni z>^=U(L;aC65tP(lJjApTPUoQlC&*U7`p-N>W%?@*z5F{K`jT}!;CCK6^%ow(MRSvW z@euB>JOuq658=-V{Nkb3muL18b7ShnvU4ML8)sLT?)jaE+J5oS)TPdWi(5Q2yTwCk zIpRN5^EOAgw|FT0^e-NQ{@@|+d^!((YdD)S6v;pZ-bO-LJ8u!dpe;UTtxlQ|A=A?( zJy7h-KcO3lljgM#Zx%1LC0>qI$&AVdH2;|mk$<-#{?tTwx(%W8aNjcjnGLZy{f!MR zs+P+u{jCk5!8#`2Jy|HL-)xAsWkcD_2>U;52z*Du(`_j9+~L_Yo6|)Jf3YE(^6Ef< zPD6Ec8saJ3tQP&}Hsno7`pt%_lPoA(Hk9_ba?6J5f7y`DW#8XyX!>^>x}0L7`OAjV z=r(k*wEizPq>#sq`;!eRR2bp5Y^dYKFB?k#lMN-12kAECk!^|wuT-kLsa2)gRbd>o zt;nLG?SPnlCEs@ZEhQ`d_os`+%{LIoSt?R34TvU$<8uaL+i<|L_3 R>+LoU}`u2%lR zLqIYysy@jlZ7-dNmP*^4RU&gVD(F0vvBg7Kzj(;%PdxNl^(5^#9%|3u;-R9eVssvw zKKJ$)55XCtu1oj3{s%KeCs=CVcF=h!@jvAuUS3{dVc~z)SnciYeemGHzjP6$rl$UO zVpdvOdj0x!c-IWxHG> Hl6HLci<(lB>az8GnV(GVb`- z21HZ|`aVNn9E-_cGerN9hn_|} S (ceFkFTDe5pG{>6m8a1#-`X!qZ51&1n$c{HoUyBbGkT~{jDD?EyB(St*x z-(q>=>A@j6+>7Eqa<>E?jLusG=$B;?-;QSwN^xB|wo5hYb&VXof{2Cmdva)#9vw>e zk7G^=W&=bs8N!$rbT|m~G8y|;hGXi9c1)z5^l77*q?5a5x6(r `Q3la_nZ@l%` zZ3~He87SMx&W9YQZ=7XjLH6+?!t^CBf(|lm2QdH=q$b4K?3(TnM5tIn6vY8i$?Ks| zW(~+)4f2uIdc>_cXqY8$?3j%^JwGN$leJ;g;K~e}6OD}$lm2shh)A~~@wk%bzo&;7 zJMh1!htd@2nI7}B-)+c0zzjK|0EB6DiL0S-$J@eXMiMLx{1OH5$@nX$=r%OwAkuVY z=UFCEVFPgv;6R0*_ENv!CNmM>qIyT!s3VY4P|g+%@c^L9qO1rIyw}6pg18kOO3w-T zq5lUAwS*vfe!)=xk#(; #D>cbb3%`Rx(1qyo0O ;(_kQ7rCYyt+UJYCL_~%--u9wMB!o z2zMEw#Y6BfD#bW{Pu)F$8!7<=dx=&R7GMg{I1t56-EyMG!%_KRBmhsGQ@*q?fd4H+ zq{nSv?*#JkgPH>h>lJ56!MQP+xohbWyZy7T{X(Lam6K-!AmwmE&1o&Wz+-m5gou(O zzG< #&A3E=E)wF1(y>L$)lJ9{Uth--K^|D^dS*ZYa$jr00fmYQfsMBJFfk z|4J&l970c2no^=>RBvqA(4%z6<=FF%;#~&V^~L>qB|*VIqC_Kc1(o}Sf7uX)ZbN;g zrTmwK4WYDnEYBqXb5+}Nz(S_oAlg?5dlU*)m2O+9*a{7mIvV~84K>k2Lky*T8rPr< zh?AI_%wIKPR#olv_bMb9WHvJe&_hFmZ6V_2E<(p4eW$H;v-s1F>;3f5&_!g}FBKve z$QotSRcKC7h_M^PNz$3h#5ZNSvRC4sv@8EzW@z*G&=8NDV42c~qX5H1{nwW&AwwBI zS+rP76pa!g3?Y(4hoLy|dHa4k4Eb~cd%NAyl&} -n!|SNlC#(Pziv9Jq^sFmK 2vp{%lGWRW>tBome?8W%07x9Rh>qIkB%Q&%<{DKpe!WcGn+VOh7*%D{S_VZX}UnS zq24sH4tCM9b2F^l>=`TGy?XEoJ~8`OdC2&GKSPwye50X5$ipH5wjnq=bp2&bz`#}4 z?)n?A8iJ=D7nnEP9K9F$_5Emf!>#dVG6O5t;tusqTMD ^FoWe)id2W zN(aVz?$*40R%CDnYuQ-)ZlKckn%k4cx({%42#yZH(IMs&%n+6c+YoF+unoaBBm>(J zY(sy#EQ4(bwjtPtU>mZ6Z3wm@m(EisI#cpHQ}1`4ecgF}t&<|$m8R8|;nJ0LqAMr= zUycsJHU#{$|4^H>E|j61;Dyez(5{0TmwPM2&2H?!HGKV8_s8hw32LOp;lud0>gXqj z@4+?%+Yknv=4=5V6Ns5cUy%en(k&2FS~%Z)Lm7bbLE}O5Z2;}KArSyTpHOLHuK%Pz z61j~`(qriJq!?vxPw6Al-w=y0L!QcHV&NXUz&Jr6*oI&mf^8@ja+Z*Yf^7)4A=rjs z8-jB~aBc|B4Z*n~I5+e+*JQ8_!8Qcj(Dd~5{QUg4Z{IdIH~$&y{I~pn*oH0>6Id{2 zwUvFPCh0P+k87(2DoCYf1!i?uhpsu+1dTqfyY}LiM_Ve!ydJh8*oGFf;=nio+7Ce# zV`bGLMh;=&O2mLla4^G$fCmj^#0S$dc*tz=C #mxLXPdAMVIrw|AezkY#Wxa1DdEHhkVdyNx_xOuVOw(; zj|$yaGfEH%rcNH%2K2%<1lv$Pfp6P_Kal|ikapb$*!D~0Y)8=Eb|V3g8w0AUZ@}2) zXObWw kyM2(}^EhF}|lZK%Dcr)O|*@YSnV;}hes4Z$`v)tN5q z{`CIcFh`L>LtRDJpJAbV8t5Nnur2BH=sow|qOt^##Zn5dHYuuylw$66XIvJIBeUTM z06(dS41&P79YhAh$ljJX#={gMLI@XG#At*g6Hz=~Kr0fkAbO(siFY;&;$R!15#yNI zf(#iB@x_r($OuvnaPs=h88R|4T?8&;AaqL&AlH4pBxa>bycM<~*oJbn(hGV>rx;ow z7V=K?L9%&^X8h)-;alQ2tj`4`(m*znnT( y^BWZ2LGn3xf1= 4AqJ<`5n>sJN`eP8xj%{`ez&VK0ZG1hW#z-?dqD^y84DYcN_2B zZ+g&7YiVt3fB2}QvkTs^hd1ou4SRUQ9^NT~yQty5A^4^YzA1xm%HW$a_@)fLDT8my z;G434%T3vPvisg%B5p7mtHpey3gS}Fn&!cOcWO-wZawiTFCkn6JAGr}a6*J*cP-W(u@Z$Tr<#poJD-Xm&u5rUfm?3IL*e zq#mZB^~)f{YS>PxPPF(NSS$+ADxh zF*B-H{)9!x$@|RvTsp_o1E%vjFA_kIh$WmgIU(FYv0xSktZd$eWU=XQgn+|&U5Qlu zHUfsrqv5LkL-Y8?G8ZNrCgjKE$F(lq^(VUT gw_Qcb<{HO2l zKb?R5^b`GIUHI9e*0XOe&%U2{wvzws=ly4Eub*wKJp(Yk2<=|TwHFoB%T&$B4$uud(hBz&?simq+rmjY0zSH&}w~ -vqGFmc_jdHbx$;0)HXvG(0SrR_DhCyjL< zUQoTe3oT*df{6 UAqZ(!>VHsF;ka_P302}ur11=v~v1-Z7Pz-bj> 8{iqYMJx|V2SpO&YsCcipv)gT9YvgG=eMA1 z)`bj+nUrS?8OBQ)*9gjJhIfXdQ $)86Z zye8IFtDBqBMv$%Fd|U!ev@2;aXsjf5vl9VyTG8!!RA^1t;S=N>7u=P5_&bxyDo1TO ziZEURhGmJK9c!ptr%VU>F4+f$3~{P3EVRuqmMTO)Q8Mcpx&P!4K?ZNDufL|q<%_>F z4}gG_a>gEe2ItnEr;p~J9w6Hs6_=Dw)6(#X6z!MK%+>#t;BJ|2$RS{;@myye-+PE8 zab5<@VACJIySua2_nMKPbRC9Q;-0y(C09}t{|%&a`+do8m>VxZ!<^PLFZ+EccG71D z&QC %f$7@$Mv~i%=3VP=Rr-+4~{-Ry#72G^CDFHMY!vWV=*rx3tmJw zy*M%YB6j@+88aNOJ)Gz|d@5!*rC>O {msv3{a|&KwYI>PJ z`m%8SWf5kiM0=#nb)-CIq_SY-YSYN|(UF_$BUH?*YVB9GuCMB2Ufn5p)!6jv{^+X* z>#t~-*R9&G+g)Ejih12x@cMDn>z>iqPuE}fVn+M5M+aR;pT~?27mSWHjlLco9a|rr zz>H05k4?Ld&Blz)6^y-a8k-*-`?Nl`fEmx}i@wkVJ_>*7kB0s;wG$Q={x1g8&YU@u zo}QkcpI=&9dj0zK+S=NC_wKc~!-ZD;1A{})Uktw-dG&g93_e O3p$jo;hMkQ K$SP&{K}sAAG`FxqmcU1g@X=yFAXx;OB9BsW z6XfkX$)Lnh6%#JntzNWnzWvedAx!*b9Iivocst;x`7plT$Y(!3IFrpwkjzLRl9Tx+ zVp6 {__=L>Q{G(}7hK3as27U82s_-GM6T7-`l;iE %ZeNGH}0!l2^W?H!XspGy}|4k1{5tB2%i{bL{aBFpRo+EMp_bzN1 z7wYRwt8XAZECwbGwcc*TMmgjLQ3B!`k!lAa)`_dZKd`=~EvpFC#l<$p2>>hDHuh8T ze5a#Q0&0*GG#XIF=mQeau^_LLvbI&2Q c}wY)70Wm&4CxIs$1