From d15d3a05c63fad9db3dabac5005ae17b31be0d1f Mon Sep 17 00:00:00 2001 From: Flock-Li <863813609@qq.com> Date: Fri, 26 Mar 2021 12:50:13 +0800 Subject: [PATCH 1/5] add_source --- assignment-1/submission/18307130130/README.md | 0 assignment-1/submission/18307130130/source.py | 206 ++++++++++++++++++ 2 files changed, 206 insertions(+) create mode 100644 assignment-1/submission/18307130130/README.md create mode 100644 assignment-1/submission/18307130130/source.py diff --git a/assignment-1/submission/18307130130/README.md b/assignment-1/submission/18307130130/README.md new file mode 100644 index 0000000..e69de29 diff --git a/assignment-1/submission/18307130130/source.py b/assignment-1/submission/18307130130/source.py new file mode 100644 index 0000000..32b6f99 --- /dev/null +++ b/assignment-1/submission/18307130130/source.py @@ -0,0 +1,206 @@ +import numpy as np +import matplotlib.pyplot as plt + +class KNN: + + def __init__(self, k=5, p=2): + """ + When p = 1, this is equivalent to using manhattan_distance + , and euclidean_distance for p = 2. + """ + self.k = 5 + self.p = p + self.train_data = None + self.train_label = None + + def fit(self, train_data, train_label): + + # split train_data to validation_data + + train_label = train_label.reshape(-1, 1) + data = np.concatenate((train_data, train_label), axis=1) + np.random.shuffle(data) + + train_data = data[:, [0, 1]] + train_label = data[:, 2] + + v_ratio = 0.25 + length = train_data.shape[0] + label_len = data_len = round(length * (1 - v_ratio) ) + + self.train_data = t_data = train_data[:data_len,:] + self.train_label = t_label = train_label[:label_len] + + v_data = train_data[data_len:,:] + v_label = train_label[label_len:] + + acc_dict = dict() + for k in range(1, 20): + res = self._predict_by_k(t_data, t_label, v_data, k) + acc = np.mean(np.equal(res, v_label)) + print("k :", k, " acc: ", acc) + acc_dict[k] = acc + Max = 0 + select_k = 1 + for k, acc in acc_dict.items(): + if acc >= Max: + select_k = k + Max = acc + self.k = select_k + print("select k: ", select_k) + + def predict(self, test_data): + res = self._predict_by_k(self.train_data, self.train_label, test_data, self.k) + return np.array(res) + + def _predict_by_k(self, t_data, t_label, data, k): + res = [] + for d in data: + diff = t_data - d + dist = (np.sum(diff ** self.p, axis=1))**(1 / self.p) + topk = [t_label[x] for x in np.argsort(dist)[:k]] + cnt_dict = dict() + for x in topk: + if x in cnt_dict: + cnt_dict[x] += 1 + else: + cnt_dict[x] = 1 + sort_cnt = sorted(cnt_dict.items(), key=lambda x: x[1], reverse=True) + top_cnt = [] + Max_cnt = sort_cnt[0][1] + for number, cnt in sort_cnt: + if cnt >= Max_cnt: + top_cnt.append(number) + else: + break + i = np.random.randint(len(top_cnt)) + res.append(top_cnt[i]) + return res + + + +def GetGaussionSet(N, num, mean): + """ + N refer to number of dimensions, mean refer to mean of Gaussion, + number refer to number of data + """ + cov = np.eye(N) + x = np.random.multivariate_normal(mean, cov, num, 'raise') + return x + +def GenerateData(N, nums, means): + """ + Generate data according to nums and means + """ + dataset = dict() + for i in range(len(nums)): + # get the number as label + zeros = np.zeros((nums[i], 1)) + i + tmp = GetGaussionSet(N, nums[i], means[i]) + # concatenate the data and corresponding label + dataset[i] = np.concatenate((tmp, zeros), axis=1) + + ret = dataset[0] + for value in list(dataset.values())[1:]: + ret = np.concatenate((ret, value), axis=0) + + return ret + +def ShowFigure(dataset): + global nums + cmap = plt.cm.get_cmap("hsv", len(nums)) + + h = .02 + x_min, x_max = DataSet[:, 0].min() - 1, DataSet[:, 0].max() + 1 + y_min, y_max = DataSet[:, 1].min() - 1, DataSet[:, 1].max() + 1 + xx, yy = np.meshgrid(np.arange(x_min, x_max, h), + np.arange(y_min, y_max, h)) + + model = KNN() + model.fit(DataSet[:, [0, 1]], DataSet[:, 2]) + test_data = np.c_[xx.ravel(), yy.ravel()] + Z = model.predict(test_data) + Z = Z.reshape(xx.shape) + + plt.figure(12) + + plt.subplot(1, 2, 1) + plt.pcolormesh(xx, yy, Z, cmap=cmap, shading="auto") + + ax = plt.subplot(1,2,2) #界面只需显示一个视图 + ax.set_title('KNN separable data set') #视图名称,这里简单统一定这个名称吧 + plt.xlabel('X') #坐标轴名称 + plt.ylabel('Y') + + for i in range(len(nums)): + idx = np.where(dataset[:, 2] == i) + ax.scatter(dataset[idx,0], dataset[idx,1], marker='o', label=i, color=cmap(i), s=10) + #plt.scatter(dataset[:,0], dataset[:,1], marker='o', c=dataset[:,2], cmap=cmap, s=10) + + plt.legend(loc = 'upper right') #图例显示位置 + plt.show() + +def ShowAcc(train_data, test_data, Z): + global nums + cmap = plt.cm.get_cmap("hsv", len(nums)+1) + plt.figure(12) + ax = plt.subplot(1, 2, 1) + + ax.set_title('KNN train dataset') + plt.xlabel('X') #坐标轴名称 + plt.ylabel('Y') + + for i in range(len(nums)): + idx = np.where(train_data[:, 2] == i) + ax.scatter(train_data[idx, 0], train_data[idx, 1], marker='o', label=i, color=cmap(i), s=10) + + plt.legend(loc = 'upper right') #图例显示位置 + + ax = plt.subplot(1, 2, 2) + ax.set_title('KNN test dataset') + plt.xlabel('X') #坐标轴名称 + plt.ylabel('Y') + for i in range(len(nums)): + idx = np.where(test_data[:, 2] == i) + ax.scatter(test_data[idx,0], test_data[idx,1], marker='o', label=i, color=cmap(i), s=10) + + wrong_point = [] + for i in range(test_data.shape[0]): + if test_data[i][2] != Z[i]: + wrong_point.append([test_data[i][0], test_data[i][1]]) + if wrong_point != []: + wrong_point = np.array(wrong_point) + ax.scatter(wrong_point[:,0], wrong_point[:,1], marker='*', s=30) + + plt.legend(loc = 'upper right') #图例显示位置 + plt.show() + +if __name__ == "__main__": + N = 2 + # define two-dimension Gaussian distribution + means = [(1, 2), (1, 9), (4, 10), (9, 5), (7, 20)] + # define the number of each distribution + nums = [1000, 1000, 100, 1000, 100] + + # Generate DataSet according to N, nums, and means + DataSet = GenerateData(N, nums, means) + + # Randomly divide the data into 80% training set and 20% test set + np.random.shuffle(DataSet) + length = DataSet.shape[0] + train_len = round(length * 4 / 5) + train_data = DataSet[:train_len,:] + test_data = DataSet[train_len:,:] + + # start training and predict + model = KNN() + model.fit(train_data[:, [0, 1]], train_data[:, 2]) + Z = model.predict(test_data[:, [0, 1]]) + + # calculate the accuracy + print("acc = ", np.mean(np.equal(Z, test_data[:, 2]))) + + ShowAcc(train_data, test_data, Z) + + # visualize the reslut of KNN + # ShowFigure(DataSet) \ No newline at end of file -- Gitee From eb6820bac2000a3abf10e93b36c35ca4c9d5fa00 Mon Sep 17 00:00:00 2001 From: Flock-Li <863813609@qq.com> Date: Fri, 26 Mar 2021 15:00:10 +0800 Subject: [PATCH 2/5] add_readme --- assignment-1/submission/18307130130/README.md | 239 ++++++++++++++++++ assignment-1/submission/18307130130/source.py | 36 ++- 2 files changed, 256 insertions(+), 19 deletions(-) diff --git a/assignment-1/submission/18307130130/README.md b/assignment-1/submission/18307130130/README.md index e69de29..bda4dea 100644 --- a/assignment-1/submission/18307130130/README.md +++ b/assignment-1/submission/18307130130/README.md @@ -0,0 +1,239 @@ +# Assignment-1 Report + +
------李睿琛 18307130130
+## 一、数据集的生成与分割 + +### **数据集生成** + +`GenerateData`封装数据生成逻辑函数,修改参数数组,即可自定义分布特点。 + +> N:定义点的维度 +> +> means:定义分布均值 +> +> covs:定义分布协方差矩阵 +> +> nums:定义分布包含的点的数目 + +```python +# define two-dimension Gaussian distribution +N = 2 +means = [(1, 2), (1, 9), (4, 10), (9, 5), (7, 20)] +# define the number of each distribution +nums = [1000, 1000, 1000, 1000, 1000] +covs = [np.eye(N), np.eye(N), np.eye(N), np.eye(N), np.eye(N)] + +def GenerateData(N, nums, means, covs): + ... + GetGaussionSet(N, nums[i], means[i], covs[i]) + # concatenate the data and corresponding label + dataset[i] = np.concatenate((tmp, zeros), axis=1) + ... +``` + +`GetGaussionSet`根据给定数组生成高斯分布: + +```python +def GetGaussionSet(N, num, mean, cov): + """ + N refer to number of dimensions, mean refer to mean of Gaussion, + number refer to number of data + """ + x = np.random.multivariate_normal(mean, cov, num, 'raise') + return x +``` + +`GetGaussionSet`生成一个**以mean为均值,cov为协方差矩阵,包含num个点**的二维高斯分布的点集。 + +### **数据集分割** + +```python +# Randomly divide the data into 80% training set and 20% test set +np.random.shuffle(DataSet) +length = DataSet.shape[0] +train_len = round(length * 4 / 5) +train_data = DataSet[:train_len,:] +test_data = DataSet[train_len:,:] +``` + +打乱数据后,将数据随机划分为 80% 的训练集和 20% 的测试集。 + +## 二、KNN模型的拟合与预测 + +### 模型拟合 + +使用**交叉验证**确定合适**超参K**, 即把数据划分为训练集、验证集和测试集。一般的划分比例为6:2:2。 + +对80%的训练集进一步按6:2:2划分为60%训练集,20%验证集。 + +k值一般偏小,所以**遍历**确定正确性最高对应的k值: + +```python +v_ratio = 0.25 +length = train_data.shape[0] +label_len = data_len = round(length * (1 - v_ratio) ) +self.train_data = t_data = train_data[:data_len,:] +self.train_label = t_label = train_label[:label_len] +v_data = train_data[data_len:,:] +v_label = train_label[label_len:] + +# find the k with highest accuracy +for k in range(1, 20): + res = self._predict_by_k(t_data, t_label, v_data, k) +``` +输出如下: +``` +k : 1 acc: 0.984375 +k : 2 acc: 0.9828125 +... +k : 8 acc: 0.9890625 +k : 9 acc: 0.9890625 +k : 10 acc: 0.990625 +k : 11 acc: 0.9890625 +k : 12 acc: 0.990625 +k : 13 acc: 0.990625 +k : 14 acc: 0.9890625 +... +k : 18 acc: 0.9890625 +k : 19 acc: 0.9890625 +select k: 13 +``` + +即超参k设置为13时,在验证集上有最高准确性。 + +### **模型预测** + +```python +diff = t_data - d +dist = (np.sum(diff ** self.p, axis=1))**(1 / self.p) +topk = [t_label[x] for x in np.argsort(dist)[:k]] +``` + + 使用闵可夫斯基距离作为衡量: + + + +```python +topk = [t_label[x] for x in np.argsort(dist)[:k]] +... +i = np.random.randint(len(top_cnt)) +res.append(top_cnt[i]) +``` + +根据距离从小到大排序,去前K个label,其中出现最频繁的即为预测结果。若有结果有多个,随机选取一个作为最终结果。 + +## 三、模型结果可视化 + +> N = 2 +> +> means = [(1, 2), (1, 9), (4, 10), (9, 5), (7, 20)] +> +> nums = [1000, 1000, 1000, 1000, 1000] +> +> covs = [np.eye(N), np.eye(N), np.eye(N), np.eye(N), np.eye(N)] + +K的选取: + +``` +k : 1 acc: 0.962 +k : 2 acc: 0.964 +k : 3 acc: 0.972 +k : 4 acc: 0.971 +k : 5 acc: 0.974 +k : 6 acc: 0.971 +k : 7 acc: 0.971 +k : 8 acc: 0.97 +k : 9 acc: 0.971 +k : 10 acc: 0.971 +k : 11 acc: 0.97 +k : 12 acc: 0.971 +k : 13 acc: 0.971 +k : 14 acc: 0.969 +k : 15 acc: 0.971 +k : 16 acc: 0.972 +k : 17 acc: 0.971 +k : 18 acc: 0.971 +k : 19 acc: 0.971 +select k: 5 +``` + +预测结果:左图可视化**训练集**分布,右图可视化**测试集**分布。星星符号标记了**预测错误**的点。 + + + +m4rU#SxwHIzq&+M{hq6HLD0*_e^o2iVq{>Dz-N%> zkR#~s?si%XgwCFoa&O-Dy}8h&+*=d?Ygs;Q~DF 0skgj<6zUGHhmR^TA{`2GT$I-zCkcv>ZR(Mmle6>DsjtcJ=kC?XUE5zVEo- zfS&X4LT?IP?F-RKHMk!Z1T$!+mVwL`{t*{c6HMS$#Og 6f z!O5x8q%S#NK7}_QEI{p6S+|Os8d1f3%O`B7b_$m@kNLAyttzX0D3q~ 7e3X( zoOfpO?@{nd!dLoIv|YSxlPb5Tk(&%cCxNF2>zQCL3T5Kh$oQO#F45js<0zfV%F0A; z+tfb6Gb>KZG1+2m Zh7qtte6wnIi-}^%QH!#{l$t^#lf4kHfgZ4qxF>} z+p#REsDq B_4E4L)%pdtvx_tVlCcf(oXBXgEsbb=t@Z#Am?Tu5(zG zPk|jxYJGd>I|oDS5)u )dwU zEbC@dc5-r>t)W*)EgIMN*2NPzh=A_U8cb~Y^UH(N(@n(Yk=t%7F(-V^h=3rmM52 z!;L~jf%SA%?M6Z22E229ICpbZ=&FX+e7P&eX;;T_P^@Z)86=q^ReoaK1gWLWulDVJ z0dz7HYal8{Q=aJ5t)^XUnY#ZDWZ*FFB52rcBd@(Y-Q@H-cctL5|7j~^t6ly5` $9CYR7jQeG#PTv-Lk`hRjZ;S;(a|>QLkz5qw+LT zcnBD&Mk6vOr|p&dLEd177>?1e?|x3xBD2@aH)kp>)fMluYFBZX^u!yS%oP+cWrD43 z1HgY#mB#DTwKm_>^uqPeLalYU&}H@GPVj+5hb!1!9}TJH89I2WbG2Qa0ZAKJI1u;l zpJ&=P%lie{X-UyD4&n1haeD5Z5$|QeuJ1K)a&n3TZ~!2qPBO0RqC0y8iUb)v uomupo;hQKEOzKg=1~T- zQ+@sVHSEXXaE=`L#R9g_t*Og??@Q$ (5`CCVQvzg_sv>26MYzy6=7BnBq`U(U4T=4PZwZolR?e+C_X$1xK z?pRh(gN&KQrFcIq_}J8Kb2)8}$$<~MIyw}=*J)4mR~K47Rf4kLo5Zb KY#E^IDZBThVtm@=}~cauYJkReh9D< zdzk?O9}1V5beDOUdQ41=S38f_c{K0bQ3_CyTlInt52=N}{FX`LSJ0Y^=CD9|p!- zh_c;&Zrb-q0N{yMsiB`u 9ZlHi$R4jzc@Vv85yNkqQlrZ{GBD)d3)-nwIz6K0_}BiIL^Bm!v3+! zWn+ZVY#IX7>G?~w;ar9BI#gp}S=mbf1X7^9eIqoowk{SAdz2r;tZuQ=li-eOK!d`g z7FT~vxfr9aH#m~7T oFki{gdFQ@x;%U)HH6DO^ED*oZd2Ot--e|A zZ^zl7RhEoa>CvSjwG1FfN_0)Du|B7gQc%F_a`W0xnqLEuuCAw-dI> n> zy1q5DP-GTZZgq#1p25m-y+Wajbp`vnS!jNzXcWpN1e?-TSb={R@MRfJi;<_G_R6d4 z*!gvJcW?eK0XxLr&yVleUsAI|CUr-v9Uo&MWZ|I@1~prKuw-8fpE@Xe?togzrq%C3 zwI9$p$8J`n*=T`kRiEA2HqsKLHq+Cm1KY@X%BbpIqS^EPw5y^953~hXWv6mW+LJ>G zXX!fUZCT>OyRv0~+#QT*+vb1!rdV#$TQKeQ`{(WH)<^}x6HzE40A~bII8qBru`S*d z5|lKk!Vs}&e4VXx*#!J?q)4;e5uhK0$>2+Iv;v@NcJ=pj3#4hjfP~8zq)PYytf6-N zWRrJOEeLmH1Arr2m`rE+PTx0!9~EYUG)>#{UT4MI`wgIICB8J4o;?-R3%Ez21R!$L zOF= !Ll#scnn&tZhvR1hKaM?;RgPoB1c znu#sIYUYHO(a;CbViRE15EySRp3u1>oCENwN}E}&G_TYAo!ZTk2vqnAI}~Jwj4}3c zl5JCsJ#E`_`x6ww5TAk{49Pq*UugDqn%0LMssa=^-rlsY`Dh>9bg^waRc)79>$JJz z;?>Dd^_;H_Dr+G2@?B7KIWMZfO}J-1d}=)1V21bwVE-fNMzjDfm7tFI#iqVf%T3~^ z?CisPWSt5a&6*IMZlQEvdknzGyf2yO H<6)$D^lKGZ}|E}**btoe%_7mLw?7=X$nh3e0SkBs#I=I4We&z!cYlk@ZQ17J5G z^Q<8Y0M!()DNHuurI>=iVKm6U4E?Lq@r~i!@HwwD>jqHByv`twaW;R|Na=lUS7|%1 zC*W~3;*U#y@Ezybv4AhV=KLpzJ{}3v6sK5|-bA_|&qu1PwLyw`D@jQO&Yv+eF>!bv ze*lpnwVLb@rd4T?4H%U9;l?PLkXJozzHxV~`$~c-2S8Q|K~D{6oglggX%!G=ysm%V z&EmVPrg=Bgnu9z7{HoyP%a@Kvlct5Lg=%3l%3!~mWto=QoZF_H+qU7R{Eha@(xBo> zUdO(tqNSAx1lxPEzwAEAwowzPDMfK{fAJ8KbSR;qtS>7szc`{`HwmHiIyN9ABC-Hg z=CobtGF|^-Lw#ekFizh$7u;$Cu+BNxMO=uG1FW*vl?OGAgjKgz1)3H_46WztHKBrB z>%6_;Qc`NvUI2E3jKeH~*KzGD;05L_A8$fe0p$5fXOyju^Q3X@`ChjZfQUk%8%_ay zRl?4kp`{xF!p&4_NYgYW8>}e+7rh}!p8(;>#LcZ I~;9eNb@v2SR4Ei4|cWKBdjaW%XP F2T#W6okyX^=tc(L(phaH5b*?VJS(vy>uHXtoN?S%pTM}nUBZW_#%A%4Ql z++Dqv5gY<|`z$mmz%lWfjDQRqs|I2v6u=i5d?U &!-?vhHu=S%|CuTVDKS`t!HQgHysAs~}S z;(_p*_kwW3u8(IG`pB#1KE~He9YD$K3hzU6{QGED(aQKABM1Wn$gF=KK3T$pkcsv8 zL46yD@c+D!yao{IKM(kS|AaOobq#|IJ~gGa4QvP?4dC6&(vGjdcg^14{V{-?_bLQy zot?ewNpv2G0B=)AcBpTqo8gOipm$V}HnR^Ypj(pFfN?8<43Tprk$kxX=@dz IN7% zwSgJzCj0++rNLMCz;FLP{-36133(k~U*{JWk9I~e;8XY;fgOm6Z7Wv??+Y^lZ5It_ zKY0HMz#u?MqeKHD_x>7VUt3 )5`tu=0P^K2rrWgpX&SiT#-sottze|t%(ST$MX`7bFVGj8LoE?)-0k@a}e#6oB zbS?;ls9VscFn-tmwhqZ?ZrizqwmpA?H6Q>WHcOiiB+~7$r%rF7%@h8lsH~i6)E>qN zAOqsEj<3SjfxU3FGg}Be6u_rxc^`qxVHhNXNG*9c48l}2U@;y5juiafqgP*n88F1e zDvgWU6#?JkkOo8?o`p5f)#Cx1+l1y6F;j0j!Lbz3U0**wp*X%Bi2c_}G*cwgO7a!P zy*LHm@$oNs5wcAFgOfM(|HWFAS^yBIjL>U{28`bKI`+mVJV8lENpKAe>OfDr)PD@f z+eeUEYzrYhU4G`B511kX!cd5|ZO=9E4W>g2WVY0y{yX^Z?IPYao%GrQWy&F!CaAlb z>QMqQC9t^WKy(G(gUn9hClZYh_5X&rkFX80!n0;oKOlwQO(}`ncB~`v$wgK8Bc8to z-Qp@X_ T<*6m8lTAZFgN-2cg&Ho7 zrlBIYxC&)<#2YXj{x|~?@r+MqPnnpRW1^xmgM#ir=?n#*kNEQO?&4IbQGom5Ms`tA z5fp%m 3`7Ro)ILWbm{;z41JHxpb`9i{C_s7B^4lFyjjqtroy^z1c{91emXe# z_tJ388k&I*5cW}v5fDi26Q^FnR%Vs#-malv@qA!lguXN|kY$*PFIRGl+HH^$7sH2O zfelUdStfOUc6kiN_!Pc}h|ZbWIYCnUe{yCB|7)iQMg+OZbJWoIEQy0e_aXRZ?eTs( z 2I3i~4c zP0dPSnNfa*A)N Ony@-+)W-m _NG~$NntbMq7#;w@5UtmP84LqAQrO%+B|2T Q NfS?2uNXRv`R?OEMcnO{<$BY8+ z-F{$rL7c_A7t`jO0J2dcd&4lS^XZI=7sjDPlRE~+{jPV*FX$!h@@KB$QtO*PiZ{QG z@qs|$W$V40&zs#23IU3k9q(aDMcL9m6We$Uz5!v|BXu3xm{`efBDYIe(euFv+4Ohb z`RvzUY`|JG^)CREs5I^-vYspxgI5@}--G@Dsp@=C55=UC1kE0yeax`~slNd&?-&1! zvN9#$b`|91DLOklXZ*m#;85JL&)K_f5=JFd0!Tz2;Co$NT?ON%T}xxm*2=brp)yIn zhnwS;$A5mko(51~kS!B;YK`NR5+b2I4n g}zB-MbV7<9qldwkC*R-jfclBSxbicykQOu+}Bq42|or zSm!P_0&vOcQ?o5*3JMBFn!LR)mKcNvfm4S<188VJ094Zw=%5W?dxbsX$slDnF`KEj zV*-An;!kjK$!OOV=6?emx|bCQJu*&<=ygl51Wb&KyVFNK?EPkc7FwnnJdm|6D9Z4^ zeCQ|U-+GTB9F(7z7ty^8$y$60NFn=>80P#<+^mSj_Haw!zJijh)S K2pR*1v^Zft{MwH#=u*nc)_oRbm%(7X#y` z$m>WB?_cZl*m%)hTxtKJ%lYE9`+OA=5HIr~Py`pajZbd|$RQZ~ZJus%IHl_XCg>oI zTzG<}j$IHyjaMzYJNn-u&vCfmt4=O%=Z1UBY;mzykL^~m$?lkdXaXq;-zTzyx-yU( zwLMjdbCwGDX8~w3*nPPtO#7dGAAPq>$NQ-HMa5Q7gZ1<_iWucV`Re)?QX%1ke=4r< zM+yOVm1$(!CA|q46X-Mr1J@lQcC#OT;GP~Yh93gEVjWmHQ@}}}%?D;4u(D)TCNO9? zv~RjA?QeQDDX?=YwB8Q6^+Eilr>||US+s>;c4LE4oqkb#FGgaMBAF09=MHm(m09>- z3VK^jPp<^$S-m2$o@+YoI`F(k{fPDQ0w~=jJ&v{pfso4wBGjze2Xg~-sAl_txQJfp zz?@K}N9wnT!&65*V>(m5e!(!+fcaAO$7 -0+R`IAe(hlQlV&ZbzHe<0HmJS2eu;@|oFZuhuI0~R%>)i_u8c7>FP$ioesb5{cV zt)5fK<%GwrVyUlSrnl(a+agALQeFFxG5@pnV1tT~r{Wb9lB$81*XH|*!c~Cl%PpDc zxww8!ZUN<7-JQMc{iXNr({fVb!1&$k90ZJ-6>gwO#p%4IvAnX *TwAMk z^X5(7tMmO)U=xFnEV`l@0VlNWFajDt1?ZEtRZv6a^&y5!RtohYKxd&8(%DcqXUY;W zDs;IUE*fwX<4b8v*Dx$`9l7mA_`DknS3aYu8L7-6?P$O_m~4jo-}v+GvR%}kT0gKU znq^8wRW;xH>hg5k)|>p`zY`ML`%0j;!H&xT(-p^KW^2m|=$3vI0}w)iGSEuWN&!JO z00d|L(2!D0baY-$j`$OaFmO%P43X;?KPUJJEk8*gevCB-&)+Cz93_38JUqGCn3C}} z14kxsX(>@;u;=*o-V RRaZ@F#brUP2CfP}SjsDay4M+2Ah?4t2~=R?qMd<)?h zy6NiThS*Jv4-iV%VTHb#`}z~+W?Qu*!*NENq*0_BwZ<6`;SMO|GrC}|NPwaLVuQ$z z%fZ^)!?i&X0FOgHnAZ>f{J`4;E=a}9)z3hDUc29-vnZfWUIde3U>q&k#)8}bJqv&l z7}e3L1B?(_DX>(bs6fDM$nNurWr`BT(x@sf35l4j%%*-<&LZ=$toHxtnQb7`d1Mv| ziCsX(vjO>I 7X?aOWxYGZU-)PHe`*t1I$` }wtssG#XBM9>{M4Zh#l zo+uRoz0${~lkrkAGQ*%J_{cs-4rt$)l$32W07st@!p+aG9tvHZ^dABlWieapv;o=> z`wZaBgV~LT7j!NxuLg%$Y$G^M#7!o$$e_!=CbF)-nba?IrDHi>q6$n_8bP3lArRwr z+1V2Q48|)d9=Nt^P2vw+HMU}%8YS<`{WK6Y&sOCD7!7pL?#b+!-K?_D%qFb|Y&PIP z6#ITCa6Bx|j)t#HX90JuvYN~Q-5!XSLH3p4<*`u%z(hzc9--!+b(X(UGBL@aH3x~i zF_axl2|IWz1+~^=($Wxuu+uzHtQCYVDxk{%7S44^d<)F=^B?-3jS5D*Dfj2yR#PA= zA99~Sf1|)=D-p105E(o!5GNvdn Oa8fB|$Xe>&@c2nTWYR!r<>@eqh4HP}P?W~ugYs&N1}klko(Y&^QDv3t(v zQlpbI9mk@X0Uca;JuRZku=w`#_jzp4;@2d6vEdN%k+icWEVyo_d`152&_jEK3UN0? z56st;>~nen0uvOBz0bW@>2=}WG@s_a!3bHyhhexF5mW!GcqM1y2Y Lg& z1$Gs%r*;OFl)c9 GE)>#jGsBRZ;};w z$_*3Xsy3PwQV%|+i}C;F!vL=0GxDJO(CjZ$lim3(QBY}rec>)7&f2q-9%RYd2;`r5 zO{b2WM?d9im0@CAxD7?W6K55Tze~eIeR+iXHR= j1_D!>@W8d~=NyGJKO~x8PJE%|mm_E`jYQ1O} n%)o5dlK*w-PcgY?9K*KG0~bt^UDuSeW|m83K9CuG|2#50K-^`uHVzo){Vz1) z?+p{K^U@I-I=(R?>E`ygbR+{J!{>=o>8+Ovtz@~oQzh0L#f?%AEMeGXH^na5jZEgY z8S6&^Y`>3aU{6WP0~0rr7Lvx`M1;%-jy@jXd1MWb1Ci--YWcJ#6rbl^QTCgV(%8tz z$5Oy5)A-b Yon!8ik+=0@qVo#?rN$du(jX0yWnFHSB;lxNKi@u4l?0q k)yjpMey$;Z$5 4=wXbpJ= JX!-A4nYUZ1OtOu~^m z<#-0GaiWl+YsL>LUfldI3-9ldFz4UTRIbNMfXdwH=xE@*_6NWOtgs7%&Ug8Uw`x-# z8wQ+gcD{U$ awaf9hDFTwm<7lh&(vw zaoZ2~vnUXp17 <*25-g%=bb|1M$qPNWy6dfJ*tg`^r5-oV)2Vr|P^i|L$m4c15i>wvOwYXL@|{ ztVvvrrZv~8JjwYLnWn88ZR;HhKbSFx`uptW3524q`Y YLcvx)_Uv+ZF~L8f>e`6<*DH3dnW(aqtY#)bz9JJ&Sm_T3n}-j;I#BbnCgp6l z1nP2JcC%X8=XEzBYgLB5!YPwq3A2*_QvYbeeo=gft8=U*xN1mv@%x<|V6Xgd>3?He z`M(%21>!k=m+nqN%P%(cyp1X~iPQ4BCWQ&AoHsyI`xzf9lrWdrmgVVQ&r*VY-Rk_c zw9m~Ol%T6>$T~1{(y|JQD#rbUnJ25v7mDgNOYlfL9k!Ziue`!qPlwkTBEizI{riR3 z^VbObLW-_`8iqf G!o% zEqnLaVD;*sKeyZsTP*%u$p^A4xcV`1@VvbR$t|)^Z!dT^8_xVU*53*ZgtIeju3LJ2 zMemRoSoWck*9K@F7ADY};59De9$X1bPGv|%E~k}xb=(s+1i0=)V1OiH*Kn& aJoH-`hQoYQ zEH&1w^vhp+Si;0Tv2SBw$aY$jLW?O=$^u3~(k+kei`N)a; k z2aZP7cCgHD!7mzFhl+w;?5h;nks-FHa^^OYzI~KSn2CMSqvktbIg^`^m}}Ssn^{iv zb)BF475s3p&nxf<)+#o1{9 ei6%1NgO8*F$ zmI*9FYK*$kaCV*AHo`mg!LdjEWG9u#a++RX&tuG=vE9$_J{f$?LGVA6zz;Oj@G0*3 zU@@sYrcL puLe5x|8@oT zW6st0_Z|X4_uW2amAg+)a}!Agk471lN=MfR_7!lpAPD fEujR7A4(0G{v`#A<%(RA+?H_9~Zh z<*7U~O90P!o29kmJy<23f@j~Y?mv?XPAl<#@ZIL6(tH-(NR&||t+bj{_^7}hZ=t%q zcN-Xk{6g^APw9~hZcE07g@NGOwMdtWMMYH|LrFsUl>lec{#QKHxz!y}+*kz)k#w3S z447Z!-J$*!hwOg^y=5&{|GQ<)l3rzq_AZjD9Brr6>#x*x3%t-O?u943y>f7kBAEXu zF(<4*Wr{eZXH`=O17GAR(Y$N23J`GKbY(VINTSeVDQ1g3AB@Ye*Mhafjx24&QiF>i zu>Q(~H9M(MKq`RQ@^EI_ 7+08%5O=o$`zi6Q4xE*Yizo0%H4tm&yg_b8{yfAG rDWY62++`q7@@wrQ5so(3Z$WZRQ^|m~M=03aN~Z!?L$f6^4tH+o$yj^g7HbaY@Av ze5QP4G6i3pyv!J|_XLnB0TUU7n>4}0;JBF^H5oY+k)LH+F*T~y^p&=-TYaU1REHk+ zUQ{H}7I|(SIQ6HXq;3RV&Ay>d%s zs>Q$4gv>tpT`3oRh<*&G%^Y=sXB})AF%`}gl#OQ<_VbDKE6AtPG7>s)Ge;6hds1cb zX>KP_EV707!aihlz?o*5zdyzkHTqBC7Be=^29BZ1+qdakR;eE`F!+?5Fsjb+QXAWS z@0hxendJ9>triSagzcCvc;J{EBiaFK9JqnTzP +50CV_Wn*Lt5J*E8Zw4wSodI(K`V z3RY~=Z|Fs(1au|W w=-uhQzlh$po@LwFcyQSy!PlDR$AO6 Iyt_wvhDG|t+a|<)&G&FZ}ki7 zbe~xI84HrFdZH%H8I`7rxxNy3IbAPCQaGWG5V)9+VmL)=2Y*(L49Oh;*?2$Dwd4u# z68}r3H9I!-)`dyJ+YSYk{fKq*OJV)d5K(xvAD=-O{;a rYJ%?fVNbrw6D6{xc^*Z}CySx0@ z$VT^*c1N{ aa9%o_V^vxWBa1_SQus%LBUzOMq9YeZv-%xN1A(g7M>H8x~0*Sm9vE`P1>H5 zm@jJ|jkT2GXQJH|)RIt}0wxQblc5cbX)%*Ekh{b@_C2r up(4~8)M*EL@=}@T+M1G^V#&d__*cAzV6guZ#G+evdQw!LX^n7u?Fn;mLH)$rrY;ynD6cAC1w~C(aZ)CKNuzx^jBBR7 z@ou?4>q93~hMzG1lx!L2bN#APb#j3Em6Lwf=2fPZc!{&=0EYS1>zZlsUzYOwhIq6V z7IS~;8+D+}i&b+FJcItMsmaHCp3~0#TZu%bmoo6&?Fw4Xe2dIbMCGWs_2}qoO8P1T zAG#Qp ZwGs+|0{LwU|dED$aq~+kx~MhWP7ev)2(C@^YPc1afukwpOTU zS1&5UmQxPj9xSA<|B}>fZDP|H64_uRIX2GZc86>5NGWXGbh$#sy9{(GIQZ4XFw4iZ z1DD?KM9aEqzGG1 G*VD`{cHj5tqg1)eHTtTi$mW4>-k!`&j;vWnL7)f0-BlJ3v`AG2izV z4a nOTD~EsZ4d~ zNujE@rABdzIW*+7GnaXXs?jv4H=?vJvHP1!A2MMA;vpH`(uKox?`P)IcX3fQ$}g9V z)k<&JL}iuM_U*c+!p@kt5&R{qb90-=HOU{CR=?1i&kUF(@~y_V!I~0i^F3D$y3wDz zS~i%UBT3l@MQC)V7w$ wd(a&{u}0YZE;zURsG Lv!;Q_M0DaV3@v8qj zzi2 _ERtKNY7UcyU;gV zv!$)OkBp~r^~*8~{2BU&ZJ`2Rx#UCoa+>br7wO{*rM2qvRnN<%o8t@cfQ8or>>Ab5 zwtr?*CfT>H;)yeEGrZAsB?FJ1>ndjzIE(KpKo)Fqu5ax34eUo5@wqw`;A)$=Yw5O# z@2zOFIz1Il|DJzjkZ$50zf9&^Gu?&cFITVcp=1iC9skoiOk-_M)L9gxc#=Qqwmo;X z3{B#;r_c$}yD)GZ;hl0Bl3Lg^L5_|)sg_c{`aKO~Jhv^pwq^lwG)v&h?2NsoCKl@= zox#^Qth^B%oHg{&e3GWWDV(rvr5e;VTvemal%f*$)bY!opD{P)bAs0`FQy#_@$s>K zo+tNPGY(&NEoxO{v#hiql}*=ngP~fE1 ?=dFvk6fcB3+n2UUS3)P{`{NC$@~|G1j0*QOY&VrHx47eSV}LSt+AoK zExHOTmJY1qU8KJw7?qztImKMZ>CRqn`qp&Si+_=udA8R^f#b_=)>C44LdE~-LfDVJ z7^Ru#LAbMzL5AO!dCRW}4`X-bXS}yxtYu=(4Qub$-5gR;a&y1<%Qr(z8yDH)+Mekl z4w9K_bl?V(obwd}U1_+%ldcof{@da1s#NuH#Ror9REM3@*qSnw#x38-PJa_)Zwz-l z3QXCTOMS{3P7_ep j>pkCZ_Obc;(I472qg CsMBD8gw>+&a{pyvl4W-!7wfKjudkUoJM{E!nm^%V337xz_%0 zT#9F35uwwhNk4CH0% 2!vSq@xPJeLNiNg@mxeAcZ9e)+- z!qOu7lgFsHk9x);tyRI}4qNF0Yec-jAVK^GLV^Tht2eD=#UC~?1kPRmIHTUAu(H^9 zeF&6<5wC`Dr$Xm8zJwv^5^UuoS&GLWj>^5;FL?sbvV--jT;;$jmVd6E4p(^>05o$V zy+6a-%Oa18`?Wr)%4=km-`0?TSoLypZ%AaIzdLX_K0gxM#1&(z>83v0^iOdNEy2}> zjY$O(7A}@(q7q2=$Cy{_v_jX74iytLwbvzoqm5NvJ9};koiWU;{#qi-Z2av+Nlp6K zaUl%;{I0G_)5e9V6Pn+}&6g7>9BE4I;IVZwbL!uQG0%4W? zo?Q)bDWX||!47Ts3ITw3jP(DdMhvQT%c9Qs{{?O5=vW8N#dq9Jw$n3e$wuA5n{BzQ zr=HmdvF(+=e>5a&&E?v#%$AwgQYKG`EjG<$& !5X!E2o$ANi zD~K?|4mTNRII$%c81m+A8m~yoP8a#j{;qQ4la)l4 >Epk$oK1<-N9y&a0zRv`%PR%hf1n&o4F!~Y zePt`&MjAwIA)*XppYZIqdeCkTjJU|6wgnfGG82|r)K*J}hk8O%4kbidt( |k zQw&O}mbUf&8MeZHj*(%=%9fN%uf0u+U+7xpRj0fiV5@reOFL$6gHKAy{pba(rY>Q} z+q#gb bJ&LNO137v7`e-9Zf=@Qre3K?#t#!y)34?eIIr` zuI?(-ZGUjfOZZKr;8kh$cF9exT9eJhuI)6v;xw5-b5FFH4T7PdKqrq<(F&q3<2;L; za(vMr(&9!JN>Q3Emh HbRM&InV>Xtx_eKk0I8Eb4zfVSst)0*_i>En96YHTR3x^ih zroa7LtP`sYa2OKp?6NEqMdAITLvYrq7qDthiyr$}4a6*|#l@iFcU_12F_O?D{>})7 zYmx5&{m3F=c=!<<8laU6+Z?%YO=c%;q{c(LY2s4mUVYyuh;>oxjh^mF>nPh)u|9@* z8U?Q0u2Mw3@L-bOBe04UpsHgihyP+%@c&1~3H_?Q4Gcj-Ey}kpH|EizdzYs3m(pj< z;hQx`G!}(zUDZ1Mi4duC(;beAb-L5pC%vk}djn0uoRq1D7PWcC%Khx~3G3#9n=7u# zqv_c%6Gbl%4LKHnOPW-RM)gmm1U_VQw!KIED)`Ba?4!cuR`~$z+{u&r--M (S8Qletc4g=BEbgBgw{)e1Hw8l?+f)cBtM>rCE%R{E$v_hI>F zn2EqpGx}JF$m$pHQU9I=c bxKATKvSE$Rp25`AzXYsd=9vy0MiPCArK`Kj=ooPZB;QGDz=# zoO%7eLTB`?)|atna5CmVy#s*{imz676gYD8q(8+FA85g3>ohkKnL|&}m0EPy9vdB! zeiJXdl^d6W7Io0kkEC}Dl%nk1$(LAq+PI%yHtyb<`U) E`T zMj}22an)GAtT1k?e3|G)yhp-dX>qt5Y2>xt-}q`x6G5MNWIC9K+IoO;u5*(pa=2S} zlFQu(KfH8HOxbTYtcoOnrNZy>$cwOvb7FxBOF;)yBf7|jl-~~$q;)ObORT!eS^*+n zA||?_&_xz$JI>XRALF&^F6!`O4rO*a=AVeUxc$r0)Q3c>$ry2YkyV_g(L@>M@<6`4 zm6Xrrju(w}qBq~>w{q{;CYo8ES C`f3ubwX@pL5e zxTl%AOThM{R<(wXJcX8;868GD=H=#Y7pam}D|F|qyZ;HoBx^b*hrBCmgy7JdVOui< z-<9q+bNi?2)?Vl@VKaMQ-H~V^|510&UHf(sRrmc5`Im>eo}(&Nw|MBe$xX4t)_*Kh zly<%Foa_~9XvbsubDTQQ J7Wm0`X={4h>G9qc8_Wo(?tKAyR&ZmOe_84Y9MR$lI zS=bU-{&&M`!d*WvizShS@`c+SIk@~rmbt>}2Q=SMD{C*7Pvgon4k~Iawp~l;5-) zR#+!OC>eEmCwRjY>p$%`x03!~Eg;>Qx*m?Q?6MvTre}BSiMBrK`EwgtZCdT1WsTH2 z7`Aw _|s6(#U)x>2>< z&Sm(^DV6ntIn#B)-e_7*m 5S&aGgb5GiDmzYxuR}Qf=r5$bq{F3P<(%OOM|1 z0?r`` oIJ-N$yiz>=rnBcy_!E`AO5nd9VL2NH<~;xLl?oUP z&Y-jE7u&w{tGuPFkomr=CLt-=CrMO0huoOrvSp>36kOcA0@(lLDh0$9vfw%3Fn-;G z8^uc_MK+F>CDe1wZaWfChMN{AVkUW)bg!PvX=bMy4pxQgav1bcUi7aBoLcD{%a)9W zHSeAl x&(N-SWxj4?xSu<`}LvB+P553aOl{NNnm;-Id!g&~vAZu^mXvn8o zmGizU^WNMmIBhm^uO6NXlQkaIRy|5|JajW%JLx<`F;^}s#@L+d=Ib@m={HOvZ@JG} z)i>^4RjtoPUBO3WK|i!GxcK5vF+59dKJ~G=;zX=QdfSd#ae2L1Xfx5!q4}&8(n&LK z-_+!@kiTZCIsFGADXl}BwaxNc{Z2Ty-`Nb@pqGN02pCk7WcggjVX7@Ok8)8m)xVXi zMcIg?G~eAF6${@O`L21InI$Bh=;o5T!< om Jem z98WRL*L!U4$tb)#VyVER*hvfL;&Kc#7IkQYUeV@OsIZx|Qsao+A{P3t8{p!R<%e4s zaK82E$Ihof-!s21mj)Wfmvl6?WvBnFni{lfck+3UolhCdPUndEZl)==GSmg?aDa8Q znj^93#@+-g=XKVn|1>6yajg3FVx>5$BO({CVv=VQteyuM)Y>&<$1E<|G|7hF(+ zS5-!C*9DX}VWE_ahkWBgSasu6>vt2z)!n>`Ouio{^1rQhI9>NRSm8?@y8)mtI+2sp z`zj~AcyZ#ib3H?$w0EvAlAc67FUG)HGCQ|Ui4mNSyszzSGQ)t+5G)&Lf^4lq9Ztcj z5yr!g0 Daa;Ulo$XuOb%y7kfcJeWI;ZY8UPdo0G*aiTTGf zE~iTf9}nGdlxw0<$1A>4l)LA&Yvo8ADW5$4`mA~a rR~VG#beXIQX$_at_?gaXhbi^waGT2FNWetk364|cAtk`!ApBM{P{w)HxExV zT35KFL#OpFn-wjeteH-B{|c{j)% GKJxp*4$f7dOby`|(|^8-@JB zMZL}y#|d3aK4$z$Q>R7ugf)}Yr^&sP&ekxX`u7Z+etv9#<}y7P<3kFq22B`|+Bms+ z33~Y#Q>H|Vws`nQWQYyAQ5QYW9@Z1M_R7~rw`%>W9KG{PRn_$O6@&1{Fyi`=2cniS z(OSlB+L8l(cQtNGz1B(yduo3lSNXk#UxD2HUvVO0)aHlgEUZ)Xg!nfSs@BHel!}^u zO_7%WLaa6Ne=zpfK~cX^8!(O{(xHUXDAFLZz|tTpAl+Tk(%q$iAhmQXuz( 1G_Uj!{_X|@B7@>xvuMg35|+#>|4mll0H-g2HKqh zUE9*yv#GW11nRxD4eupXO6^?jX;JH5fMa*1xMAky*>Oblc*dnho?c#glf~6>P8QSM z#mSjCLGwga&<<6(A_*3BlD5&;UHG>{)En?;GTU%d1yT{lY4;1%H0mGIhnV$T%kLx1 z@0Mj)aG*n3iF 3lG{=$0SS4=+Cf`C5W5hKmRFbRinQ)= z1U^Tzl(rY>YwKWto4-wEEzb8{J%jQ}i0IBvY(zaGMQLo|m28L2@=D}*V64QqzA7Oh z8j``1SU!7!6ZEY7w&`E-x^-NQTYUnX+;sn=z3NocB=(7`FPhXo^mP8G?pycI7VciJ zk7Zj{tyHT28D>;D1b7Tp>h7#v(R=EsYl)V)O)2Oel%CuoXsyq@PTXbc9Ip>$x4vSY zj0=FptnWYIbBvn6+^gkm5tpzEaB!bi$RI#%E}(?{u9qW_PZGPSa-H%Y^>Lgk?@1o3 z@;*K`fW$E11SzU0C$+Y}WPjfC9GTj!(^c_3qO_~W()e1AHl&SBKOgN-Y|Z>bbZr{} zN_KiCAMgA0ReA!^E;B2wXrV+;yiKamGp!hSION zQE zC(o86l)+;@@(~Okwcf?PiG=(&nTn3N+}-RrK@2$Wc6H>)r$6UFeCmceVWszxB~x$b z{|N^7N-3*;pR40-yW+g1hbvV7b;u2Rh?jVFh4NvE_KB`{gmv6fC-W{$VWR>&Ky$6` zMD%wfci*TGk?KCb(0ej@G<#lqtQ1B*bTY(Bd&q^c33(Ypbhkdj#c|^qRFecf$L$}- z;z-+*a%-)#(2_kdT@DA=uavh>(Z<4v9BhKMI!$`Lrf+F^=WgjfFxw72@rZ^_j cJm&ATX2f|HvoyN6^Lj-@JH&g@F#>5~+Q_Xc+@7qKbm})#nCLSW@TG-irv@9D z?-RH8cP9iV_cLv&?prH)=d|lNcegq+*ZoCG(YZs1spn8uKX=0YabvZZmWyZS9a+80 z9)pxjJG3@ZC-_WGJ+!wGSNU9v<~kn4WX6RO^K&K=>8C_D{ONUW-Amx7Gtyn#>5CZy zCA9LYWA0izsGmK&)EsiyDrFn;Rd_(0gR=9Xk8G{~Ay+Y`cT<%(6K^bpJvBf K$Ry(l*cSYna9$|%3zk32bjd6R5E|}pU}q#&IBAD zW>=eGczeeNUI!>~U9;}beZVihLt)GXoUA9J8I^?7uD@EAbMoR|;>UMWZ&P4}Q%v4e zU1o$6IhY1ZuV8eCR(MD!_LITSaBfhy-D8eg>n1+JV+9f~HVlJEh#W7^2*;xw6eVKf z4U)ZF3s%y9u8T~}eCqrDb5v3#oG*#9@n&%B6H$C$lY`@>o1N0{L!*l=%b(qQMr(hN zE3F$S=ufRJxd_-5w`JZRo2@3barcQP-)V(LWN8SrEaOYJ)nYwY$$rqN8B=C}=-jPn zV=Z*Mq>M$8tmwK}tmhS%#54XMu2RPFnr~!|RojR!{Bhphy|7bG$V?THqim|?OAEK3 zNVqCboA1n2`^AQr&Z9e5x{Fofp%~__K8rtfXz7r%%l-75VQfhzOTcMn(SOgac_}pA zLSSa)W`(LUn3PaGdyWT?f<_oG3n`as!bvWMaD#;We{JMZC!t?WpQH+!DG*@p@lWXU zto+6;>24e;u4&!b K*3{C{yMGHJxP)U1 z_^$z;9Zm20UciYZ*XfUcaskOT3i7a`A7wzfuhCc7Fs3kl?0+K}BP^p_*Wyd$MpH9& zdl`VNtb?~Y)&{z$_$oVYbH{T)-OyUE@g+QB390^4 gUq;yh@sp#netB z{TEV@w#Y&S#XAfh=`XQe2y@?b-Ss8qA~7bahCi`aTw@(M%q_)** lqw>nC1^xcv^c80L#0fX@r)Xw+kR;}FXSLslmMxX=kBJ~? z;$gs6`67a_O0t@Z{F#(@twI-$t-i>Sx!O}s_NxMc#GI|@JBg<+e-^Yz-{2mQ;Q_hG zGt%{8wL(=c|LW6I-TbE2t?`UMg%#N?#OVQhM)Ut2v5L|$o(7JO<7^Zg6`ni(j28*& zx*3ohdeac4HI(Fh#BoMm=chXYStw=HTvi()@+F4(ix#~}BcOrc8@KlRmIupH3VCWN zrCOo1a}yu6MXu-GV2VP)Fc@rn@W=aK % z(q8*`g&~v&G%-f2+fhx8>tAd0Nt=XTfwo7UvexT_seGm%DUSye*>a$ zVfD|DFN$>IC?VMpxel1K!Cs)5z+C)D1oZ`J9nTW6jY+gAT?MbFTbw+T6bXFx7UOzn z$LWZ9Ej9L146NAVpx!S!J2%l7dTdqD-ePR>GA7626L4mdFaaJ1Ajg&y3Q}gb8+i{v zjTl8Ml3bAKQ;f|-`sfGCx~x9ZZP(zR;I|@9;0q}vut+eE=&u{mBzIClX)-5~Hm|dT zn$K6o15S^(3~JBa$N5``{!Hzho@I&M2y?eK40uJWJ^=@_PBhkA*ZGfvimJHBOV7$5 z#YJvMDOAhW*=f=fn KWTbzL{|7SN)+gDzReQnHfd?l0rhRNMApzR?DYd1NKkI*+8>$Lh?m;ZVW<4 z(fO&gd@KX7HfS>q9QHMVe({qT8+M60|NbUbs<7^_!t<6+&oY6AE_tb$UxE `w`*g85=jqDD09yBN^6#1hc_4|MV@qyD}H%kGH#Km%g_sN)c?HM4K{{oo6yn^pd zPuy@HK9c-LC}u4W?WfI)GD=@E6W>(5a%R&c1I0J=Dv1 +U>LByh z5z*-!-@~IAm6@k;!0f9N+1T*$0hSy>Db@WE+loUNQ8qvLI^#osgXL2;BI++G-nbRK z4yAQ*G#WGI>XQmaOJV*) DF$s`m%&-6wd )b~- ?DLiB-SMfJ0sDS4pZbAXRFVe zxh54}1*?Dq$jA@&(T(bt9l~H{BTMlZyrfcLn>|JQ=NtAo8}++YI+qQRkvpZ?a{hmD zxr)~^Wz~BO5@Z`5O9EvM-~@>0W-%jpeNrB%*wgCl3K;lQ14d8FYk(rUrzivXha3LX z{B-j?;sA5Rlq}=vzb=D$>>T7`6EF3o5apoviiqMMXOR0BOY3bL2Pl)C6ljj#){}wg zm05pSsZW`%v&?SyYF Hlz!e_O0dQWILi)R%#ts}=2MUO7?v08J1(<^U&PD`fLYy*6A%9ncJb z(>`<9tQ>gzel8SZ@_zl%1V19wnz^mvKx>mZOF3Y=@XvQj(v^8xgg|uXf%;{z;1#FW zb$HnxDR)n=>SD5ckCuC}-(SD!gZS&+@Yft!Rx!Eyo;g_3Fbk0YI@ISBdEa8xZSUZy ze_6}3fU2(6E{;eCiJO-(jUs5KbQi)P2Ab9k=PpVDTH(a5F6n!7SB$CYX;hs(wWj9f zQ$E1`$r9KhXPNRDaOm0-$skLuw{owM8di}LMlQMWCD2D!yb+qCYHuYMs=2a(7K;p{ z2T VQO>_cMUF^z*7M7$z+Tu@1fEHO}%mpKv$&PgkhIxrOgDQy*mT=tau1 zZgL*+2F1Hd$9ZwUKC>NgyA(Q|+`Wj2W5DrGujNze>a9V$kMhD&mx%cLUQM=J?!Gg8 zXhB}vo73x6S{bDZIiM=9RNz4X-$AZsL$VrkC2FO)Av!{ZQcmDaf;%7Uni~PE(5TtU zX7D_(T?Dw4F*+%H_L}T({~i&Z(smp;;1HN0=CD`6*w$>uq_ 6) z#Sqf-;{pjqO-=Hi6z;XJ*mMikSvQ=3SK_@J=Ji2L;Bu-NgeUEN0DaJ)zj?9t>LHe| zaaR+!iG2j?5K2BfnIplfIK89t>#ny0^_lqf1Nx|Iu07(p4j$}KSGTRdGkzySGcI#F zXy=?yPsm5X1k2yo;24uhjE5h&W>K^L9t;`w3sya;f?RHA6LZrRB44?b(c`0;S>#8) zGW;0WXRVTg)XF3ZB>tlW&Ql-0U#~w}+-FYs{+l)NGn|#X0>(@|`I(PmomMu$E*JN0 zQ?enKOl9uQUes$*2z5mJm<|M4xw68-)ud*QJk=FM?$C>PxK8wKD1HVOeV-gIRgdz< zghgwria57{Mto5vX&2=W{VZHzgxquNDD=K=&N*DMj4-yMpGy)4D0ci)08KsMS(x&Z z77nOJby|G*lPxL%jqxtv3w!U-C?_X(-bNhor%-kE&M;{{jKPf BVoDJq-ji@x}f9>Mf>2q^x>0l1uC#*YkD_Ew-F~?EV((r6)EY zW&Os)U~k}QH{XK7rRQmY&mm g=e!| -#kvRW>gZ zwHx;pOa+ysr}*kFoU9#)8cFMXbG cpPq5ynQQ>^J&b?^VzW z&kau$4^Pdi_PxcCQP#*HX=hZTmLz#p#qmCSOP)8Cv0-K;SL$09i0*^RQQsRP2J9q8 zHXPXSolj3usaCVX-ORFK7o~u(_bMpexH>vZ#gUU`k`fH*=vqAE*LIp;zF1Io5YdmY zwr@)P@bPawI}xMIPmWC!pA-ccfef9^`-Q|i7qsHY09m=hF6cA6%)iX~Q8};YRv+s4 z(`gH0%o5i#-a;_D92Hf2EQ3ZrQ9Qbjn_@mU(${P+IrC?|`M4J@saMJlFQJPDG-H7I z;~N5bM9Q1Ri+Kz~rr`{b^%^Yj%U-}r^S`wyyd*AO>xUU0Hv26OzQ_wcQ5rwv#5U6g zAKdb(lz99Rm{xXu_0K@7y>~vPr?mI@NxMl*{|4w=ku E}PU=%)0(F`PYC~*De^p8= z`J$ZIIBS>E+^^b`eR#V(Mra7wU0P9nTEy?ix@nph-WLGc0_vMjxD_G$5qq{5O<#{e z*38HT?Ty>@w@#L_U_qrA5jbXg-MR4=SC5vVnMfhtp}o{VC*=?I+u0S&&`biy8!7)l zO+wMTu(G{M>&-1`iqI|C2#k{35UP6*v@jeCfc#bGVBC|wA}uZTG1d!)j$ZkwN4TMj zf9vP4vyc9rbziNoFCPRWnmgL9v(W2Cw|K+2r7m_a*VO%9@Yy0WguLuU6W&%72K{xp zc`D8t{I7Ey>CTVYmXZBM=EvD!(_J(hP7rMN?AiZu0R{=p^+Oq0<=CSzSviFn7cl7a z1O;cLArov%eu42^r54eLnP5Hj)!)g_jm`ZchRdfA&F@a;R>|vJ1Z;;-rK~de6SBY2 z0{8JFGBZjuyMNKZc6Y@G;vXV-E88Q0(yC@y@q7N)^9ecUybqYYKrz;(OuaFNW+utm zOwFjbsCwJpt;kf0uz4T*&h}a*2^;6-$BV!%?uvbi^F5g#J9(q71HR_=I*t?HjL_EW zxR%l%EE FSEsJ)Ak_pME_d?!7@VFg1 z{&fzj>`VZcI@6=mK^0fI!^uAvJ(Mcu0~_1&yts80y4D#xi;CkzB)^ICLuUx3a?j_Q zjrXt8I1)h*M8{4AR$7=N9C>kDN2-$gPd12tPSz}3xyzl!+gz!O4|sT-FYW{$ouCXK z4 UE1Tve5aeyJYY z7`p`#OLiZ+AC9pbk%x1`O-$5P&Kc&U8WZ}wZa!DM(d|Q;Z$4uL`rct+sCUtIW2LnA z@G8>`n89zqCu`4HoO^fFUb;DMRQ{;`3*>hb-hvEqzU5q^L17)C8&mazvW&!*Qli<5 zr{W1bdH?SPt4zkW1yMJ{Pj851vR-r544bk|^y`($h;G#GEhkfY0_*7VAD{r6JxEbU zx|y=A(OUITH}^X!tx%b=5hYI-F7%(XMWr`KQcoBE >#x4a`5Xoi z*H=Ri;ep~hj|FPa+KIOops>|5&I3^;#JbBKxtj%QU9QT0>f!slA-n!lh#RI#eF`ae za6JBY;A`5ffY!1H9-^4J-0Lm@Clv41{!7Up^$EYwAFM>gB+b&qmY5R=U~^LfEZT+R z)OoojKu$`}3Wq#lL9Gl~`s1!f-+ocf+9%fYZxlG0+;{!*O7D}anNLwo=g6s0QYqHO z=0Q$>kSZ#a8tl ^FmDP>almSg{~Oahd>j++MR$B z6au*Vx@=b>PHO~%7(!mLf152io|DG%ta^#}MEx^!T(T-=MTDLOaT<@?iEVeHKHFME zGP~aNLLi>@q0^ASa2d3p;I+lODe>ad6}&QyvKQ)gLuBXMTIy@lxrnw6Yjn1nbjwNf zz%@bhaYR7xly6f8hOmN91yCa x7 z<{PIOq9mxm x-w!a(SPVy+oE39M`7-KlxpLgpwS_^UVTvK-EHx6tZ1gFj2aF_ z)iY_`3n9C=^wulc5g_#;)!&h0_ICxM6BToGED6rDqjR rej8LltOj_c^CHJzu6)Zob5Eh|!?b#r%+`pmkVs%EF` z)RbA*^t>WZrF^k1L#ybl7Qy?Rypl)m+cqNUh&b=lzKShkOC@r6ZL!@%=m~TulHu6m z^5@7ZFj0daaID5E$Z)~)_V&KFf?-?Z>Ul{Q jfrf^a1wc@g+ L7nO^{mDx;wzG1rzRGK$^k zeGl?X$!oj%D_=@;#H3Wm3U4+9BbO^5Nc9mk`w(JAq@jjRJ#!CkCacEon!~FM1sAba z)w-1N90_R K2Vp(Ia5;)^)*Qwr=t?f<+@QB|kBPHiNY@lZD_ukCvsp1%Y;8%5;l z=Kl9Zykke5;`dq76l~X08-7aZXFK2k+uC;(+Wmd=fxp0^rEyq9HRbHowKtKhZN_oi z>bzDNv_5(BHpL9RQh&y4iArd`KE3_8f}8X6pNCu`8P@b?$(y&$O4;N|8x!ktols#N zg`Ie&F{p@mGb9-*P;60VTVbyP+m^H?oZ5SH^%BP)D!x(k{|zMe-$?~LysZEu*iKU( zz}{7slLB2_QuZ=#y>%T|lEft}yei$gM$>cAT^N9i`7;&B>Q$FKXrO?I@^|_>Y4&QD zQt-+1VsyVBv#)U6=t1bky2lrDe;n&dq)GI=Iunal2_3@D7@kX2y#NGrvgvtu#eG``8>EucRP~P1yVO z;rWJK1Vey`f*SS*DplWd`+o|}d`CPpf>k9s({2+nt#ADu4p&y6xcpa2;e_#;(6BT- zN7QV7?HAYUdYacaNm^%`2&@EOp}aWJas~}yZ#%sdasN>`Kkxc_4D`6qkPT4eicj?F zUx{0ex!$(uRR6{GP#3}sqIs#UbSObwq{KiT0R3pBQI$3&N@PMy-?;sZyxQ?}AOcsf zBpg$Yoen1qON$=6g3fz6ZuzXgU&$75BOV8=z~d43hCH_aVqc8kkMf{h17cjotdx=J zvVGXYU0>FEX=A1fn4;P~7zeKM?@Qm3gcu}Lq?Iyq4vXWKu&p$PmHMo>6YHMn4&23R zW`VPIe@BRv0vsZT3d^6g>86Uuv;)33a6Klr`DeQ1tyd})xsywR96Rb2xjI6Sc^%-B z)`texifYI*YV_7PO>WD`!52+i|JgJ%u}@= Q6?J zCrY24ez=-{Q{IWH2B;OSQe5!$=D?RGUVt+G)Tocdi=UZWpfUiFr z;x+u*rS+_3Z$-mMk|ZY=`pCW}|3v+uq-4AGb+JZ(K;vq1Bf6Ns@MWonqEP+5puU%= zg($YCGV~!{Ji27nw!p9<`6{xtEAmK<(ay4ezQZa~&O12JRIq@#T4Q|p?F+_Q-w7q( zsWfnPI2NZ;la@f2LYcPomyG~yBTLo%zCm3%a`n_SkkUQCg#{ELh^&fo-wVx?NvnXz zWtn(AyQ*2`WnYUD#^SUh;aKT)pZ_Yg*-*>2`B$H}ZR20KqFFHj1XhZ!4{9Ofd$Zm) zD*l@3*;F99=f+l`WPIU+*Tt-W6@@|IubTlSRNe6Vu`7k;+kvfxGw%EzgX(s;wUum~ zp(~1O`X}ybKvTK0sEO749j~tbX12&Y$O{zz|E#(;GWDmjbLZ_{3?#lEgop_IE zGv3v9ErOSuLYiR6``2fv7en!BFrMXhtu&F_hY~k5n8f5Z)aSb@9^lo=go!T$KWXM~ zM@;OjSV#wipjW0ttSgObhDIU<_gB z+#Kz!((#FA2)xLM!LpELpuJ d*KftyaX>+u`|>2_N09fn;bFLKN5 ztCqpjPX)4mXkE}J;0(aLFpu#e&4ev2Bs8F~G)-IRY&W-~w$lz Won@|?Lpft#+|Y5u`3+I~(p)-JU~>en36xWFCg=rCBU-tL?DKYwf= @ z*eb8xbKcvCx6yab5=I5KMqHd4C-r_3`QcU=m7%C_R}h_2rBhrj{a?K*xt=8`97t)i zGEljdQ$fxf$F(Wc)FG7Hv8CW;wdJjowY{_+=jcXTbNJ_W{)K0>)I_~#zsMcN{0-7u zD52Yb#|7Z?=0q+>D93c-U^I*PP$EEA`)wd$yOohPuXK;dpWNL>kp%KI-;?PtYL! zhNlvBSaWl8;$E^v9&OKQ=1NaWwYjX%t561<*~qf-J+ge}q+x|5L;2}69@_GbKhq_D z+qNp4_bmqmZU6DbZwg$e&F^p3pm$rGbEjm&!ajdu?Er`%Oj5Dh<{|}$4?#h@`Dyli zJl~2+7nFd-v=b2^MAU>* jp- _}rvcu{GiLNW&nwC9&gHlKw3*$b|J^@x2fp2Ae(WQ*O=!?Ljfwv`Fuk0h5IH~rSU zZtE(4`ZFlOb~=aW_j46$6sY$6=StJEeI4L89u5sF$^WIj^OSXg1$!d{4yCEuE$2s+ zJ#!lcILv2buVvnM4{e9nM7BbePiiL2n;7~5jP{uzOB`|)7^7*6Ywnb{hKdAGO7>?u zf+u4vI87+!6DdJ4l`k3)o|PdRz1jUt2nsL >9n@Bw;MDLuP4j}`g!zRm@HEY}}q zD`4jOP#J!EAdnJY_Ip)WU8*)v3`$GN1T;j`>%&6R)Z-BjjTi3&od21Opm@GKxPUFw z!?S_{{Zb_9{qX(|5g42<_#Z?-iX&m7?MeFh%G*Ir>3`oa+t{R5wRd&3wR(Na)%*MO z4^bKpFw8s#cuAwAY~0k>q#|{WQcOjXOA#Q(u3eN?Z-6*cQB&VT+7CWEI$8nK88kFE z eJ;9jDVBK>biOP`DP?@d6emUjpsSz*dtynXuORvlyM(ufw<#cCr(ojePw%}bD zRbQx4znNI5IJ)RvrPReaAcxLUcUl(|$D~jt2dT$@d~3@QMT5&U>-Z6y(&K+Z-@sru z-#-^>3 jQe-tXio+9F#?_5IrcJ)zQ(m?gV8kHl^ z*aa99^kXf9?%TIx9=i2!wr~>0(6#SD?l#cllP4h^cqPP#w^w`mz%-`PlkMsOy)W*7 zTcpl^FM+{GdceJyL#wm`XporNPgb;D-s}ZB8Ul0H#sOcyQedlRLVW*gIv#|DA3q;> zH9fBf90N64r8*|}qh{`_wo=L9$GVD&id` vbeaqJDR<*F!2k22kjd zOP?{7<|kfhWQCAl?>(3mB-W{IH4B_Bu6e4Zo_5{H|EiSP7NVI?vo&AJGw!uD|8T-J zk6*TdIiY3HpRQ`Nc0jTge6}Xt=d)YGo=_!bK87t$Uw@4y67lQWowpPyz^rXGqcwqY zuF-kcu{58y$XE6MYP(C#o?>Gw-P)7W`EX-Jc-IY-ukY?m-Do2azN`LZU^gH^xjQej z*1&@4Ojc?H(z`0;tFU_Jl5s-=LK(wr&n0SHda5`uCbJF?39yk)J_Bh;j^Mo~M8qHH z$**I9h5-)h>G&>BWnLq-#PrKjF-r1A|DEWo6x_y>n>w?m+Qq;* mDGo=^+UA#orrvGhatgNi~9S_M|PXyjP0|qwH0iK+8sH$&f5Fuvof&0NEj|rZ~ zUIzdZ=#Bsb)M{W(5CykU@AoH+I`9B7CNUBr4xD#hpkF7{8c%y`&Z5g4`#F(7r;D=N zotm7Jxh(pas?ADQ{yox%&Mdf!r5}~?o>#FIlnD?AfCiQ&X*w#AqJg~TS%9GG=eaeE zH_1FxSN9}Bh)Slb)xUG81|g_QKd;UciOgVr{P?v%apDL=RjHktf|>az#{F$+SToo& zVYIWZ4l{F+_t(sf`j-~XlYE76Zq3liF^}<%7&Xj)ii_ A{=pYS2xq>ZaY<39&l3PcT!>;{Xtriq%lju=4O-Z^qYo@P~ML&bs `Mv? zi|o~admUMUpn1mD7IPMHSQ)+G#gpgPJQxyGcbX2Yo14z)fH=5G?vx2;UHdP2S>mnb zRG~m(M#sQ-QR(&{{$N^kM)iWXc6ZGr-}9?)ZU}-&B5FfNstWnXI&Xs!&ecpe66Iaj z;2+| WMz41-#4v4^%BJqJdXiK>Vx{PVQ%|<6YNRa)Y&cmd@BF)1D z?B118Kcb)-)ltH`1!)$|f65Xo70C{O9`IE+hBOg1twUIx4Y!+te3bAeN}AL&$MIc` zemc5hs80m;+`eWw>V^Ui4H-7U^vHr$MwvVzZ{@D0oq>Y2()C)e>r`jtglG>|YGRa~ zDunynHU$G`CRZwozIUV^ym2kN5nvt3Yka)aV{b7V9e!v4#@y6yEA2|U_FQp7ra}#> zH=bjVA7vK}(UlYp^(RuEc&GBcIBAT>x0ivGX+t{FPKvf jEV(*RA;%EXbYt#yAT~U^A?Sg zVD;-ke3qynUbpxdItaf F}tjPE#hg- z*kza{H5y$dJ>v1|3G)+B{&pSG)3Pg{)R4afe)K?|hTKNolkgZ~(_WBbNlJe^YbM>O zjYWQ3)#jP11}7bLI{(S|7mnn){TB)3dZ38gJYg6}yctTb^kIy!SHXGG;JpIn-@5O3 zK*Lmc*9yPLad|I4O~7mRbF>VZSUQE~BaiWaDN7 6* zmN`s*qxzbn{I)hyySHP2umE6uJcJ+0zdK&vE@0heM %pb z@)dp-n!wmSBX=Xu2y(W@UIB)kv&HrHPuRe0R+FPY?>AkIrptb^>Od5#f;G;(IOtNB zYMV4bB8ay;rJInbbcJmi?f{f(&|ub+f@pwxPlN-a&{&IPdokd2{Y|4PLeI>5H#^>V zWLf{=AN~Hm7+OBw gcGh6mS0aZ!|mtIN4m7t%1~l` zfph}9e3unn-5I(bMW71UoAkOr`Nk-EmKO1$hcZM;aL*BnE40Cyw#Of~`PC28-l&<+ zT6GKnWMhKvY9W?PO%@-_+rG*>v>N`S@gIaB*1$Qy^fQOuzc#VBv}@GDN-!@^b3g!~ zwzD_!_GSv&UR-=<(FM5w7{Vft-!Q-vuF+>lEA6hJ 5Q zNB6fUgR{S*BRr a`E}^oB;~7x zJtrq8YHWz})Dz>~t%?V!!_NFM-igMJ%;EIA{wR{F#g%pZMjExb#-1_${lMulG3(|D zp@_z59aSN)+klfSzn|Nmxj+f2S#B2v?L&ocvUkrN9T^Zpc_MVLa-YArzhcD-iH#L3 zJH7nZ5YNW!AKpA5Fug{bGz;y{1jH@r<(WvIOmuJ@eC4LiS8(-@6U3n<6{4*aMx!m$ zV-fq4{riw@iu4csrjwl)&sy7@rRb|S8!U^tn>sy-SQvf@tk1BgyG{ muTB6TB zNc8ePU9|f@E ?mNd9167 e@Wx2Nl4Uc3*j@Z2+k0OM3LDP%}4Is0Bc z?@6sePk-Kg_BhqSpLtYuz)ea(uDqRA>%ko;&$`7N^dpsLih!nq+}%)_y8fL6?0E`E zT VcD-jV%pXK@0> zp6^yq`+UU@x+{Cd0&6~<3u|^AK9arK>4d{N3Y5>W53yIvawYToiz__x=TA_Z?co&X z6V_L(=cD2np$3z3x0Un<-Ku+s<;IuPcm0}ft)84Cw~RM%Pk+hz)1JvaLNrz%c@hj= zi#zM_Yf#_`z$5FfdGhGTgvnErv6OD+5~-A=c*Ra#-tdn!;EAVbw|)&_`?3X&nXZSw z6eROFDO4A?D!v|nth+pCBgklu51V?rOkOvYH$ w64{wU3e*hAlEzeqMdb|4hD4E$@`kyu4~rZKGrUY~Y9^+#+R)0D;Cehy4UIu@ zt-m`iw(?}ST9N~b i1dWph^ zcYEEG@g5U?>Xen?ZMTQR$ZR$T&C}SD!gCP=ulux~IoMaz^2@+3o?&Ff9)G=xvAR-L z{v;y8Cca{hTq9pGnD77g{#C-T?W~Z|pn)n%h&itk>xV?VNPP=%)`Tu2an`xk$9Z6s zfVQ%@auxGhFy6VfYodE3V}#aIV3RXHWTUK=um2*iGx}=Bi?F;wDwophgz7OFe}Z-) z7zvX7H8)eI@7-Mc%T`exUMuh27jL5j@_dwpmTwTeg^PAQF5}|!EhF4A2`vay+_1Pk z%Wxh4;Y+`3Gr6u!*K574qh`LR2qsF8j8upFlDjA5r{<;EL9^GiCNO-@+S~QF53wbW ze&deptFa)~@kbFY6aW9s@dt}@28TmVm1eTqU!WP8n`zINXTHJxzeRVH1wmvXhMIlE zn-A8Wp{N9fm1sN(t0W>=F3U8(c`kkoXNYHACIb6chq^M2%bee!a7Gqat!?j$+I-pf zX }zttp=EhuvJhIrcc^$^6p z!t%j9)S#Vx^D}IpPT5{a-02n T 48&8BI@QJF@68<$Fb`%mWjY_Y3cOXsfn8(4~g zR>wb$XRq0U9B(EV0H4;RG3kugpRJ-4qcuOUImHju3kgJ2uVk2kW&| zt#<&&E$A4KTorY*;0(q0bbVJfdui)4Pf;tm*rGIn-6e8I0X~x8tAZ88BWM{JNU^_n ze3qLuA(5<&W}f=2Iqq@_f>E+{CHWE*uqaQqN{oc7%J?IB#spzpe-mpAm2>tV0I|kg zv=J0RyLYA(2!6S576ob(DL1WQbHQ2Q_GC@QS}7OE^nLtNF6~!vV}pliL_2`m`R1(q z 7Ws3Vym0W_xM`w;dx)+GkG-{ z@F$t9U-_?VI=Y;{*yV;Bk9305SS{jDFKvm%3OuHwyF5kgg!LnY&i4s`UkOhPpvN~2 ziEdm J2UqrrADoz6jKe0&4Y!W;H{ZZD>xC-|l8eU2h6- z3EbCc_s~fEYljF;kGN2YEvGARh=z7NUVwQ9mlu_Ng(&xSm2mD|0tjj&PEF(EX=im` z$IDb@{%N9I9<<47v?1Gpq+CN;O7BKNTEUtKir3*`wJ+Zx6v=hJZ3Z!{cmFhp7D4tV zVE{rtSQhNG(x>5(onq&cX&GVW`ude2o7RqgKGQ+Kevg2c?L6XoKgGA|nO;ZRi@gVL zEVkne&Q| )1VP2wGY@!k*VB=Fh~rFa{P`NLo+&FExHg(h)S2(xTC~*#ZyP2VQ8)KEzHK z4cMarZaF^+q2V)+GP0WsAXi1`00%Dig7fy`QIKWU1!?mks>U}1WS}%6RiL1|;Wc@Z zQ~q5#sug3`nAUF=NIm&-q3wX$5`*dZ&0`IB7)b2OvMEGIrJ*kL#KU?s^eV_={FnVP z*5dF{-eTT=r^>rMNlm1kFwZ#qv5!FhN|VA)WA@X5;)~$*qPbsx6GN)h73G&&0R2(s ze09uS02$z2u(eE&Z(9%VF9{TmFKK =Fy6~g0-OLkn$s@tFEc3_%17NM*%V6fm6qYWNlYsLB?TjG@U7lVhwae|dVOuO9 zrk4bix>L2xUGc^t(9MkWy&5}3&j3~$aBOj+!{ld?cNwJ#dv~lV3K+KyURj4;c4@+q zGBQUa9?S|Tf|H9t;es9$w2C3-!HVIK=`J0=QL*hpw=s54rKP{mF_fMC7pJ92+DsxD z3K6_}@=_P{Kc{jFwxd*#@TUKX;~UTKsgv%)2#9f);^4K|Y?CGnz!{L`k4j_FYuG6e zvEH5R&NdT&_-U|`et4!bVLG5OA&n)ckCXj59|N#frZ)}(B}CFL=?QRpD+K-ycoar- zL|GfoQ;$#gKTqJ%9K&%tm6f_yArEReHBJz^#1BX!AzJf)aw)L%UrF gK%qs-tbv7jYK1frHCV>xIVkG>2nMamhzpNk2n;#n&mZ|NNm4>UJ(eGGW zWD!`X2orN7 ?>A$cM#Oc$p{2`hnJ#S$I3VMuo_$X9b+5g7A?v@eN@JC*tDB=uG$f&D z8RQ;ADL`CyB(b;9KY5_uPpUi#$p;WvxMFk>`nxIje`|J7;6Rvgrm &gOTxSg6phz1wPVvHFee$~ zlotvR7`ukd5B)=ToAu}{HCcLAD>yhQgsO#TSly9|b_oHJ*P82du!x zD%Q1cep_g>t*NtkQd(M6mTgmcHa5Hdns51^d{kW=pZ0Yv?{9rsfF~o6r4&Vd;Um4J zl4N`&%-wDY5REPV(ui1!C|AM?1pmkg&D$od+3212CITuY)5W|sp4!tr0;(zr?`CvM zuFm<`k)V&0R)>rnVDwDd^xmpkY(Mr!o4>4{GmTo4?F}s0$~6~GI6`aD(OAs~t)Hni zE~l>C32B800_%F+J$0OPmvEiz7=il0i#vabaF`*Y4g `hQ28x#DSSn)O5 zx=TjIk={@%W(@q4s4qp4%eq`tOCA^7w*5|vdc0%8%9Aa%;d83@(ZlCw+&+wwf49?j z+>R+nf@nn>+F@VGer7Zg0y8MpCxm5p^tXBb8f|jp17Uo3mskEM=Y(8HaS%&eYO(o^ z^Y-~7p=nQTH1%pj+NlP=#rb#QZi#-6$^VD$XtX`%3nODX3$?=kkFEEPX8V8NfVEnx zif%=X)+&mcwMScR5!BvPi4~(tsNGUj&Dwj5y~Q4_)+TmBthPoFp+ DITw^`k>V0aXb#k |i+}HX)8q9;8 z$H&(-r>ZZNj^AHCeJBo88|QH_@Qi2Y63f$J*C$$vs8hlm%aHG(G%Qjs-kmxSSZIG7 zZdu>)Y UpX6nsl@`S zWdtJhY@a;1`*NYZDurExo%5d8=l>fn#`cK=0RothDV(r<+}ivxl}|Gg X{3=^6{$%z;$i!i?}ko~5bP7=b0MzV%+?*EEq!X}p_?Yh z6Pl2}2ECc3#oKM<%oz{pOMryWB;~52)?E8>FWKF33|l_f^%j`O^D=3810Q~gXuTgG zM@@IrGw}yi%l+E94ENi>D8r;RB}TZ{XYb}&A1`-1-Ih>(v@;lW43kk(k4XVIFS5e% zN%yZfdtJ5P@xki@P^=5Q#{JZhlwqwW74@K<5S&^g?r`4e9o*sFeRPW$w!2{Rzv$u5 z*m=U+-p@2{xIA>z{8pHgXoP6L8jWu5y~{qt=A>xmo?_FmM}G?P8CZ|x_D(&SvlV`` z-)B-ZZJ)0%PeN?{MHt^|#2-?#sWq<5>7k}SI`XUaVo`;0KV&Oa`z1SlyW%t)Y99on zGTM_jE Xu85B-)_| ;Yx)D~ ptffDd^yt zX|_~bv`u<0=f3|lb_r`GEn1)|%X!1657gXe+>h=ueY%PsK!zrW#Q$S@jH57pzSOCh z-xlhTB4*|Crz{QN1bF_J+RG-LOQSn`8^Q%~qN@)^hTr%M94gZbnscQ@w@{r%egRlh z;6`i8SntxavcH-f`c{VG5_8*V%5EM)ta-)S-|M!bv}XlG3X|5yN2Vx1Ki&1sn7{ r@ zqY?FXg{uylc=J0Rwb4t*8Aiye{xtuTy7LMvz;phq%lA$4Tte4!)W422(AbD@=VmaJ z6|Xow=dRPH0E;I)edR66YQf22Plg#kmGuto_meihJv=;U?- xu-3&^Q@^(qizltM2JL! eqB40ZLbl*;Y9VB+Z5Mi^$uWy4X`lV6NM@i2mV!Sj0u+))*ZO(rfo&GS+(0oqK z{c|S`YvNf~)3Ygf@U!b$`Cv|c`ues~k)CG8!DBYdK%L!I*}5MUqpP=Ym{*BH;1O2E z6ENCkOQ;29sF^6Lxc+W>zwFn}3(H?sldXgC-r*YR5+INF+YF@>-{7zO@W}nXo9e zq?{$~Yc?-c|Mz~7KG8jksQn}cc)H|WO4*~OcRw+P3T?Jo5!O6!Q_DCD6^SQYNgZcr z<(pTX^l6=S%i{z|OHRQxqP}a=bwW$-K8GQ$+xc5%Jh2j)dAg0~(d1Q@n)^3se%EvD zu7GwyVcGa-758&id_rBU=<3 zHB6!wtiwvK}y5n(=nGjwi^ z>d6AAX+y@SzL%BB)6RO8zZDGP9^adCka&CYu3>=?GvsKN3W8exE=|E`mU*2T0G%?^ zTjU<7gJ1`YZus`Dsg<7dbDq1zNjZ}4*?HLT&GfTIFzd*n< h5g4tKZ4Hpg8FS@ z^d!^Lw}e;>Kr|EKD}I{W7UuoSE&}Swbm6!Cn}5aKf6y`NzS%Xmj 6O#nNQvSTVghM?q?cjaXeIGrhX`HAdMMC#&ch9KGsxk?V=<(VK|Cfy zOT|pS(liOiy5TF391=gH?p grH@~R))@?xehg|9^(OJn@0BkF&%FrOA8G#LOI zO<&GtN}$)TuaqI7+j;OAu#yp(jJvZ11-JBc1i4fN0pNX4*|u!M*QZ|CA(`~@0CP{& z#@ks=?W(EPMvGR>t1Yy^#LLwpjZb|snpb@oc+}o|@ofb3gbbuE^+AIro_c4azAt00 zet7~D6|glPaQAXjMV8sG!^suVEK
3=mGlxhZfaucH8Kdr0m81#z+@IlgH)42L6Ak1OFSNyt8)_AZ3}KbU#*^4 z0oFjvFN`~;CdvI3(5g=0ue_HecW{;Nq0D4(Z&f)(!NJB(8LdBnGi60>rIx5Quk^YW z< ;e+$5zKo><(KT+BF z_iD?yA%on7R*NfbtfK( {XS4)<*Fsc^8p) z_6KL`x!e7eER_Z>oOPRBztx4*q{;?@juOvDK3JMyfa>H5gr8v!Nu>$ z$K=SbBWkB%YfhYmod*Mc N^la1=TsR(I#bTg$w;rxEnRD9iL_9anV1_`KPT%|MsA%XC828b@+> zpaxAxWsps(OnK*oPxqWSwa(JjRUgG+uJbG-z}(vdpNdZoe%U3?zY9~YFG6iwU}m_l zm*ee_nM;Cs_rddxI$IFC3o~!p$Hu^a3i|59$q}wwOGomgL+R6D*DUEI mCMDKNjg&{Gi0<|I zR`dr9MQ-Qjt|lx?zfj$;{4L4f6n~2g@MfUX1rD-PQQRAsTUK|U$fPk(Bod~hPK^0V zecNjFhDQ7wUZmi)+J+F ^%P7S9*?T^7#rV6M+jy@RXG;_ j--RRU!!1JuEw|ldF+YP8mcazLzs(D) zm;O6c|Hl7`ca^`m>V-aUP%F}GUg%o-r)RreZM0s0?)_IrBNf4mHwzx1ESjI|X1vQ* z@i||}-?ia^0A>m_n_XDxmie{}-RzDZNFpgBDXs&m#GvCt93L=L_N{s5r|@`mbN0-; zt^M{zk{?-3=>lK43+1B+lm#AgKV2JdZ31ttw+EKAX%@(uiLIi1xfK@vV^sT tyFYf?M43*Y+mNfwOfn zw}|P#G0#ukT00l(sFIa6?&jNftrKcbc#l)yVZ z%X5w(M`zHK_-^fBLGZU+uUkBI-{7Oqo?0K%HdhMp=nzZM= zgzoWl6_@Et>ZQ1ml%0mW?O&Kn{V+wkVwUFyKb@Iu5gN(dpNkXrfKd(wXEWC#BnoiJ z+)!&x6_>ts*1;(EU5KaJZm-Gy%#ta@n)FCA5urd^JKJ^LM*X>Y^Sv)S8Q-1>yQdD{ z=l`&I!1qO-9*tV~# qv%9{YOk D&fX*l`>)@5wyUBt zg?>RUid|CYKv)u$IYtUL_r?FroX1Wmf-&>lyXDt-d^#PAs=-gP@Ad@|I|JM32UBdS zpOXJkG1@t``mh^IIz5>B?3a4aj1fc2Djf&~0UH~xl?FZR*$sVg4U 78nRN#t$1N7ra> za>{>+6H8ZL1A#t(F0)nRXm$rLWrouTh9w05 TVp;e z*~}lzQ&YQH3cDXXCoej2IVAJb)y>Y?2DDF%!O)&mbfW%xgMNu(>F~E^)c&xOEOw70 zx-|IPx#}10+j^=j9{v*qL1f&k-l|L$&zY{qjb3&EUm>UUp}vy#j;c=P>Cy$uM$$F$ zOTQkIevFVZ>XJd{SQ_8ixy%M9(V5oW^WpojyAqZCQ8z(ZGs*6Kssdoy5zBz68K{2# zhVOAwy_DKB)NVZd4Rf}JeKPidBYwOs==yL^oVMD}`P|>3doEM<%Q@z;HJRC@n_jAQ z)z lyM8p4Yn2@vmX)zk>f9If{cMJ7=5f432htBtYc5j7sN>J`Yb$CUEzsrKPF0 z@=;vjN2WkO7lvkkk+AjeW_I((iDGrIo{)I_Ey&MOBkP*1M&h0~ pZ)8WdGzv8$83cLQaT#j z)Uy$@;!Y54!v> {495x7`R&4e%|z;<* M8}G?s!nmTC$rdj};9I^94wdc8AyJNq_h{jm@9fs2%Yw7ChrpbD_poh=B{sq#vEUZO3w)g0d-N%c!1*Q_~_4CC7 z!vwGWRY AkEOG7(3$N{f z)m%>XsAQV)P?4B%$AB%3tdM5j4>!o#?|&ar{OT5G`y#{U&?BxO=1eG?LRrgL&S9X@ z(7d^#V#1xMIOe*W;D>q%Sf%&-FUVFJEELYYdim28^xH=p6NZi*3CUekN34e360hsD z(>-zxUe*o<;6@KZ37bfp0z`YsK~1_Ms*t$o!!_ycsLm?2ov(^Vx9N}rE3=sfVNq+I zs->-pF3_^%QWP{$k(&zX@G@-e6-o(d&|6odpHD0hirDv-DBCt=D`&_$_Hq4-s4SVA z@wa^38EF4%gZ!cXK)4XcaQATiG_rkO(0-}trcx{v{KbMK1!4u1ZXcxdD9<5ORV$2= ze~K$a)HZ ={qZ7rhnCHgEccZ zJaE5I3%xJ!lqjcc^o(sg@dIRZAja_^9_7^H3$IvzSUd2k-kQKRZ1Sk2j 8eqqxdGsz2`?Ek~g1@Y;wXa_J?pjP2?Fco+V}z;}X8n9- zrI }`JH}BJY&)>ef%{AzyCc#NQRg^>2?UEN|`Un1WUiL<&;xcviYcnR}9+vTC5;+>o zW8N(}E+qa$Xs*E># c$>F z4fYK4waF*XYJG#DlR9FWy(R^2jIU*;HD@cQ9MJ8i)~C&4#vhU{0X54PH+^Q& w #>%I zi>wgFX0MJ0H2-7yEC=luioGR9)=1upTOS!i_D%L{iSDKFoORzh#Jb!8Z@I!EL9*|B z@^<3_ZYHU-y0Ss2PDny%lgU$LxW*h$D{Bxa;{`?Gux8KTK9<0@rmUC+(?-`tK*LmS z{%U-GW=bJ20KM)BQY?)yqc__QnEQy0m+xf6yh$fhjuD)}r2Mz0emDO{oIGgz>qqgH z_(kH)rYUc~>*?bMRoHMJ%}$bR?-k>OFiBfg0TRZ#b!e$B2NMH4m}yeao5;p-mB2~% zAW4xwxs<#8BaCEaSvc%_7pCGPtas;fM~1Z^jR&1}pinI_Z6W(C{DP5%NE{NTMCfwn zI0Rz(bdr}*k&gvLB6hhgkn!l!qbMinwh~(#J_tsM?D&W=BS?@Vo$!R2)U0cEy{&T7 z`@6O&GDXTVqp-c+nVqQdTml-kFD C$y+KKC9M8bE3wzQBp;w$S{5HHiatx zYXiNCD}GWVx4?68g&eB-2{leS&M(Dcrz+QCh)=!6DV#^j3Jmm}ON13cD-($EHzP|; zg?lJ;F0QiV&?3U(d5ucGNfo@Z3WqFMD2g-KcteL(Hz|q0D %7@|C@9&mqD_8P zW+_;*`f!S82Fw5iX&Jhy_70VN4fR2&;M>K8n%CoXH!Z+VnA=zEN30*qCTC-+4B%I0 zlsd`o(IW$17VCKBfp^V`$`P&0MhTNgtPE)c34erdmXk*Fhw=m-U>Vx_%e=crdayVP z)uiXN=u^5b5BbcENDs{k5)y&~sXBFXS4=ERE|e#wJ 4Z{z{VFQG$l^T@0nG5f<7Pw@=Y2(zpeZqyTnQ$)tp zt1m%kJsr%v?3-ND7eBs+YA`o`0O>=O+*%MG{{D?TmhFw{<^(Y}T9dm#RkC4u7%*}U zQb)gik-g${R`BZe)uUO@?0VZ^@)GaMHyauB3vY9RWyBvi6Z1UQLk?UU={+RYI9QFs zc*3Kr93G83#p @knGX6FY1Q|55HQyjvq@Yh|%7pjP z5&?rX&2T%XWH6o6ymQ42Ucz#P4#bC19t^$cebQCXoIVgV1^XmB@iRHYG!UfA?5)Gy z8w5j;jvhKLvNULVq=>#XeyH)`PoCmsVL5gsnYf44NhlpdD n3za=?3x9G!Nk3` z=IYZaIdU9fz2~9cwuX^qc`6$Y(;d3j8iSWo4x;i7+NL1WMgALln4!pOyou>!+D$+F z`uj{ET9rqS)yV8k)!M)saFZ!qQ>-MR`4SQy9!faCI#!H9p}3uvBA9Qjc6z-IBTJPR zd;nTP21*Q*3IhH}iqQUqY*KU&bs(Y3Rz4zb{4U7@S4t@s#(#ra&E0#LXP0ywwcua} zIjaEd9yT+vB?_I?$3(b|oiddWC_OztPXGl21Dm_z0Z>2)5W6z#2DaPdhX~*tOXjwL zQ&Rg@{$AbIX=G;ZBq+uGoYj8?76+@Tc B1%WQ%L6_~@`m6pIR*E@o*h}3BXz~G-0$d WGk~d>tSh5ePZD}0W}eG zk6c_s0Z(t9dlJgr3ojhnnvxum@ZwsxA$P{5Q9m!m&E(5h_O9#MJ@s{*t<`*LQo0bT ztO~!I?x3j4iYeTnlW1aQt`BB*Vf|fgx$8?4zq;W4_HfU+NkzsZngoHI>JZnYce3kB z>qk$&b$O5@%&EjIwjVn`PW*@^EA2_z!huEh6!uXC10PkGl7IFKzWQYsm$0~Fn30z? z(cFn@%AY#c1c^oE|3X08l9A1A1Afv38qxnA{^J7xe!TYeNshdY-~? ;)8V5ilhAnFv4!E3lbi>0l)`2I sEUHr8PY8Dn0$@N%iJ?c$Bv(bb1?wAwbm*;Z9!K`b1Q zvsevmX}mD`FrIU*1KvAb;>tuRJp3NlsGq+PTWA#}nfVnXNgC3MRf*FaE6MtpxzU`? zT6Pc+nn`CkU*v<>ScIisb{l^EHb8oNIfHzYXRpZ9bF?EFSDrNRsX5rf#NO^G1+Cv< zR{L-d8!-~g(;@5}n6m@7%W{@$n7yA`iHS-HU%qm9AyeYkGFiJ0oHBNiLdlmlef}37 z?3v)EdKW~Ve(F(-C8dKYx{bS<636@Qyc fiAu&jFFSV^5ZfGM3@L(r(luZ-`2? zLOx#awx&MRIgO*P`q-8_vp9bLQ|_ekly{3#5f+3>TL7wa`f(@0Nm-x_5|_6WLm*B? z@#`@jp$87x7!zsj!+v`=M8FrFB{}=ie969h5>!|DZ+Q0Cp?`rSIDcZ%rPzfFG%ufJ zvaYrrbi}CfcJ!Z|GG>1r`Viv8w0!QrQhc|28xU-R`BI2Ah7cu`ug!dGzc1`1de`SP zsDaea7*GNR1Y6i_{Msi}XTvRxA#r4xGTRtCJ`BV{afxprlE2X()vcE{IOw9WA%~Y3 z>N73p&LSO-J$%inYFckBymk?V0!|W_gOTO9iw5G#%O6*s%-fQkr-~aK^>nQHnwxC7 z(i~|Gn}M@qx+FKmEP(LoaluD#lVk~qPQwOGe49Bf{amnZa3}{fC3CLQe}9|)_!J`f zvo0X^#*8QhMUH-ujdfAty46NiR$(`~%#wP5V!$2t@^(Qc^p?Ts2)Q#b&`dG&BuX+M z(2V6|jjZ}uc+aSc>VZ&@Bt 2wa7@3Yq0(HN@g?+K!>k5W$)~EJ8QJG@`=`Tgdvu|j^CS }5Y8x@-G>l5x-Wn6@+>`e=!fZ_DV>S|whLF^+9@dQmA@Am}V (Y%oUuE)JR@9@-(5gv!Rl#9=HvxWbR9A zyC4GeWU>-4t0?=To_YhUodwpQAA03akModQ$B2Jj7o;2`UiqcLUT;Z*Xa3@?
F9ax*QpU&^bb`D&nh~>TDOu@m`7~N13 z`Mrrht4h`L>i1=kV3u?M{AaQ*6gki95st+sZ`6ho(kC0#Wggw}O n$+}6)dM` z-*#)L8_>#e$Ug86V6%D;?tEVYdYRvN*St~Cag>wK1!Mj$iR24ZN259Ip~HR8NnTL@ zJG$$Q1D{yinhz&V&@JS1+rBCF1E0iw>{^_G`tE2MGq_p)S>RPQkTDGEU`vMLY10Lz zwn0?-X;FB`i!@vHlvUrdx#r(*ImqB}zLw;{Qj$M %)pWKRz_p|Dglx6r8>>|=Dg*{n51jlXAJI#{py z6kV**ao{F{ LSUt zn)QhB65cR|s~2b KPlO^J{icyy&v`0$gDf<^Yc?IoQ(UG$ajH) z;@68h;kx(% p!c|UR>#o|8{5uM&kMw*tFeYJNEXiS{x}O~v7}9) z<$#;4gl@)yHzrWfPLWHx&@5uTDrc565N@HA?Nj_LluG)K?QtOE$GWNwwl3pT*3U-> z`{w>HPVMKsKDIF1GD_0^nJb{93obWj25z+Sd{sofoJW7Stz} Kbyn~9R%*vm+Ps17KDTJ%qcE1=@SybH6lu{03^C{Mp z+j-`HvX_lIA(JLtm_OVWaBO%!t*Y;4d-uO5Uj|p?8SL)Koet^>tHvb>$>>2U$%#oF z+pko|e|EM{w}iqzZ2IR!8UKHg!RvZ8J>^dyN*vF*IKP{>AOjsUV7H>N==GT!dmnp# z1a&$|jKzCHUazJMqYX$36TTotUXvHpKAn3Q0pw?B)D*jY_LRZQ9zfJH*C@EsJ##d~ zXX(XY+LC!VO$F7%9-l-yK?6JY&{Z|Ws9v^NFuR?TA^G6sBhekt@X1wc63aBZauQ&d zPVN|qm?ghmh}eC-=ihbNw_K`{^-{!%y&K?
BY%b?9+YwY} zsjo*nQrzaC3667?(TLfgro;Wk@)A`i2<4-NJ#a`VlUM+%VSUWkb_3e#?=p4$n$`x5 zWv^Jt0<~^G&4k#J{=iVP)~Io;3$|5!@Kd;siQv#lK;6qfeUfgi>@H05!v{2+1LY0X z;9ZJugFhG)%N38}6~};`86Lp$8!RXL(PxC*9!LZ9O8BDvV-*C_z9Cwxf=e{I%XSI1 zwJq6Dd~2C`_G31t+5O;QrpK}sv??3;Ds!0gC!j+0Kw)&@3#p2QqK!Y?X9O!=0NzMH zA_*{00olks+p$Ot@jYQSr$FYClrpbc+=>1oO3l2S&@S`#<(o&1X4#`5Cb?dvzP7U` z;V$jJ5dvV1X$<~Gd0c@AIlf1K=XegpJ&PEh>6qPwvbQ0eiBC?-Xjus1`L@tHgwG_! zM~Bnsknh0;RtuPJz3W1i-y%`o`IV{@51T$ozAAZ{pMT)WK^6FyIxxr8Z;2%>qyF?U z;4{iL=GC#sO5R~Vt#Qi+L_&@}J}q0+N+&9G4{b8Dzl9~t5g%1tDm`rP@qD$9kuI0& z(WQ9z5T}=Y|6V(7UsmxtPB{j`4_O6ypT@!q9F8irjQpX2UZ$NGV#i>)I!k4*UJx!G zdAaOO)I}k~)uIGroV>LCuh7tU76AiY`hiGhwQT)z5#ZOx7!!6;*l24a%iD!P+ZEKY zoEW^YE+}be&*vnAyE!O 0Xy?*^IZu0Ms zy>mC8j*51w+#nbUYZ1h>obhG1Q2ReSPrLZd39)$KoBK8HKl``eU+%lnBXDvRXgnBL zW93z+d=F$?;C0@u@c!v_r-n+9Ge?0>q%CPOpe7&{>M%h-vbD}I%UFEBg^^#Mo5B%8 z2x;b)d;Vq bHpb-Eb(@06T3R18;DdcO+vwPs$`j zMc=e KN>a1!vb;kvluEfj;R>KR$PyQymh*6$K10BSkM5BI zwo~D7xIX=lX$Hjeyz#g9-P!bmwdEe~{Jz-v_?Yai4o?7N$0{N--P4_-PbeR#zUXGX z93SemK=1aNSG+T)Tiu&1nt+DhE*^Y;1)~7lTg D% zzKcJdeYUsM_jiNX*J48!_l}(eZXBTbG_4uX;BP>;pjuyfakcjK%6DR|1v$HB(8F6K zvvKcxoUP#9>?2 HS-s}mT6PBnpflj)VJFi@mrP05g>rWC+KZ0p?|bJsA^@1o zMZ@PHF@8ZYT*UhN?xewEt&YFyg00RV)6?=7ylp3NL21nYr@nO^0`evXn~0LHB4jC4 zFksCxefG^VMLU~L)7R|o($rrELZ#6Jl~V3eNesl~?E)4qwXr1w;bwsRtgGB<;`jNl zrn%KJiI<-u4kPg3wgppYmFHx|1m_IOBWkX*!~#gC&Nu_r!O5cNi(3)}jKWg=_$)d| zeXec&EZH1jpdii9DQl+EwhUD5SP*avh iXVO}C%2k6$TdrWisST70 z #Z~jW*qG<$>^vK2DT}54CT@7NR@w0|Dr-WkC@}x@ z1fE^Lnb9aGUZU?MpBJ_*V|-Tia;@hu#*F{)$}B(osVUn)Z#!+ioV`|@X~+19xr=Bn zgOcZvX6reM*m@}QxDLJr(eci<(kwTiV&c^VDvh;qKpH!EQ9^< zDMz`wHovna?G6U!$ oh5b!s+1+W6! z?|IyzeYT(M%zAa5*77h&sAVm$KAnmpH?nN}mC7$3=TRLzPnLv^tdKhkqw3ZYcag1i zPZQdxon0H9mgEQ !iP>&=w$Q_qw`5eE>B;DiAT7S3HT(n+9m@5NZ;i5MS z=VfdIvJVd0TXvonaeHowr}E(O0Ut!@W2qBfL|j`pSL%3Qn52F=!*gp>PgeHtwqB#> zx>9oqQ1c~Ai0(C-uGa}nRuyhQog?bXjc^KZ%8QLlRD#^Aay _)cqx;%1t~@Cr@p>=mb40AKbT))6*K38!LdF{ zPW>#_z2LoNLP;K1<&7PP$tcw;=vS5f0Sh_D0>n#v_UTb}%K;jKXE^=KKs*`=tjv#5 zFadVwOjsUwTNc;VO`w2khr*`+c9dfXv-+1b;w(Hb;h8&a{matXRlCTqHYK$j@wD-G z7`oTv^KZ1AhAGC|2=AlD+ ~E)t(s|5LDKk2F&r3)LYr3=rvBObT%n8l#9|=)6 zc_-@brBYkLNt*zJ)FC#sa;;5fK>PfCi*vEI7|lB5&R=`~=dbjgKa~81r|1%c*t?$w z-n2M-Y}M(U7YUn5)k~a@wSzRRW{qTdzSKr*36S4x3&@ $ zxy>rcJM% }A}^`heo3NEmzCTJyxX)39C@`Lg`hla2r5 zD+EA}&9e{}2Xer9$+&uzbn`l}BlLZJcNxsBQLP7sf;gL()YyW5CzUq-P6Hqo)>`pR zw~7Eqf%L7$64q9U5-~`S#MHS#1)Oe?j5SkJ3fiONMa3rCABgxU<>>2f@V0><;AlvQ z+ZVNJZ6zJFZ?aty$&?+|c`ZOJ=$Buug&