From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3830859464725288851==" MIME-Version: 1.0 From: kernel test robot Subject: Re: [net-next] tcp: Sanitize CMSG flags and reserved args in tcp_zerocopy_receive. Date: Fri, 12 Feb 2021 10:28:11 +0800 Message-ID: <202102121037.SdABHDHy-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============3830859464725288851== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org In-Reply-To: <20210211212107.662291-1-arjunroy.kdev@gmail.com> References: <20210211212107.662291-1-arjunroy.kdev@gmail.com> TO: Arjun Roy TO: davem(a)davemloft.net TO: netdev(a)vger.kernel.org CC: arjunroy(a)google.com CC: edumazet(a)google.com CC: soheil(a)google.com CC: David Ahern CC: Leon Romanovsky CC: Jakub Kicinski Hi Arjun, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/Arjun-Roy/tcp-Sanitize-CMS= G-flags-and-reserved-args-in-tcp_zerocopy_receive/20210212-052537 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git = e4b62cf7559f2ef9a022de235e5a09a8d7ded520 :::::: branch date: 5 hours ago :::::: commit date: 5 hours ago config: x86_64-randconfig-m001-20210209 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: net/ipv4/tcp.c:4158 do_tcp_getsockopt() warn: check for integer overflow 'l= en' vim +/len +4158 net/ipv4/tcp.c 1c885808e45601 Francis Yan 2016-11-27 3895 = 3fdadf7d27e3fb Dmitry Mishin 2006-03-20 3896 static int do_tcp= _getsockopt(struct sock *sk, int level, 3fdadf7d27e3fb Dmitry Mishin 2006-03-20 3897 int optname, ch= ar __user *optval, int __user *optlen) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3898 { 295f7324ff8d9e Arnaldo Carvalho de Melo 2005-08-09 3899 struct inet_conn= ection_sock *icsk =3D inet_csk(sk); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3900 struct tcp_sock = *tp =3D tcp_sk(sk); 6fa251663069e0 Nikolay Borisov 2016-02-03 3901 struct net *net = =3D sock_net(sk); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3902 int val, len; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3903 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 3904 if (get_user(len= , optlen)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3905 return -EFAULT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3906 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 3907 len =3D min_t(un= signed int, len, sizeof(int)); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3908 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 3909 if (len < 0) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3910 return -EINVAL; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3911 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 3912 switch (optname)= { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3913 case TCP_MAXSEG: c1b4a7e69576d6 David S. Miller 2005-07-05 3914 val =3D tp->mss= _cache; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3915 if (!val && ((1= << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN))) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3916 val =3D tp->rx= _opt.user_mss; 5e6a3ce6573f0c Pavel Emelyanov 2012-04-19 3917 if (tp->repair) 5e6a3ce6573f0c Pavel Emelyanov 2012-04-19 3918 val =3D tp->rx= _opt.mss_clamp; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3919 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3920 case TCP_NODELAY: ^1da177e4c3f41 Linus Torvalds 2005-04-16 3921 val =3D !!(tp->= nonagle&TCP_NAGLE_OFF); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3922 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3923 case TCP_CORK: ^1da177e4c3f41 Linus Torvalds 2005-04-16 3924 val =3D !!(tp->= nonagle&TCP_NAGLE_CORK); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3925 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3926 case TCP_KEEPIDL= E: df19a626770545 Eric Dumazet 2009-08-28 3927 val =3D keepali= ve_time_when(tp) / HZ; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3928 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3929 case TCP_KEEPINT= VL: df19a626770545 Eric Dumazet 2009-08-28 3930 val =3D keepali= ve_intvl_when(tp) / HZ; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3931 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3932 case TCP_KEEPCNT: df19a626770545 Eric Dumazet 2009-08-28 3933 val =3D keepali= ve_probes(tp); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3934 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3935 case TCP_SYNCNT: 6fa251663069e0 Nikolay Borisov 2016-02-03 3936 val =3D icsk->i= csk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3937 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3938 case TCP_LINGER2: ^1da177e4c3f41 Linus Torvalds 2005-04-16 3939 val =3D tp->lin= ger2; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3940 if (val >=3D 0) 1e579caa18b96f Nikolay Borisov 2016-02-03 3941 val =3D (val ?= : net->ipv4.sysctl_tcp_fin_timeout) / HZ; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3942 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3943 case TCP_DEFER_A= CCEPT: b103cf34382f26 Julian Anastasov 2009-10-19 3944 val =3D retrans= _to_secs(icsk->icsk_accept_queue.rskq_defer_accept, b103cf34382f26 Julian Anastasov 2009-10-19 3945 TCP_TIM= EOUT_INIT / HZ, TCP_RTO_MAX / HZ); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3946 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3947 case TCP_WINDOW_= CLAMP: ^1da177e4c3f41 Linus Torvalds 2005-04-16 3948 val =3D tp->win= dow_clamp; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3949 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3950 case TCP_INFO: { ^1da177e4c3f41 Linus Torvalds 2005-04-16 3951 struct tcp_info= info; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3952 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 3953 if (get_user(le= n, optlen)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3954 return -EFAULT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3955 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 3956 tcp_get_info(sk= , &info); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3957 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 3958 len =3D min_t(u= nsigned int, len, sizeof(info)); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3959 if (put_user(le= n, optlen)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3960 return -EFAULT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3961 if (copy_to_use= r(optval, &info, len)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 3962 return -EFAULT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3963 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 3964 } 6e9250f59ef9ef Eric Dumazet 2015-04-28 3965 case TCP_CC_INFO= : { 6e9250f59ef9ef Eric Dumazet 2015-04-28 3966 const struct tc= p_congestion_ops *ca_ops; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3967 union tcp_cc_in= fo info; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3968 size_t sz =3D 0; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3969 int attr; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3970 = 6e9250f59ef9ef Eric Dumazet 2015-04-28 3971 if (get_user(le= n, optlen)) 6e9250f59ef9ef Eric Dumazet 2015-04-28 3972 return -EFAULT; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3973 = 6e9250f59ef9ef Eric Dumazet 2015-04-28 3974 ca_ops =3D icsk= ->icsk_ca_ops; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3975 if (ca_ops && c= a_ops->get_info) 6e9250f59ef9ef Eric Dumazet 2015-04-28 3976 sz =3D ca_ops-= >get_info(sk, ~0U, &attr, &info); 6e9250f59ef9ef Eric Dumazet 2015-04-28 3977 = 6e9250f59ef9ef Eric Dumazet 2015-04-28 3978 len =3D min_t(u= nsigned int, len, sz); 6e9250f59ef9ef Eric Dumazet 2015-04-28 3979 if (put_user(le= n, optlen)) 6e9250f59ef9ef Eric Dumazet 2015-04-28 3980 return -EFAULT; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3981 if (copy_to_use= r(optval, &info, len)) 6e9250f59ef9ef Eric Dumazet 2015-04-28 3982 return -EFAULT; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3983 return 0; 6e9250f59ef9ef Eric Dumazet 2015-04-28 3984 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 3985 case TCP_QUICKAC= K: 31954cd8bb6670 Wei Wang 2019-01-25 3986 val =3D !inet_c= sk_in_pingpong_mode(sk); ^1da177e4c3f41 Linus Torvalds 2005-04-16 3987 break; 5f8ef48d240963 Stephen Hemminger 2005-06-23 3988 = 5f8ef48d240963 Stephen Hemminger 2005-06-23 3989 case TCP_CONGEST= ION: 5f8ef48d240963 Stephen Hemminger 2005-06-23 3990 if (get_user(le= n, optlen)) 5f8ef48d240963 Stephen Hemminger 2005-06-23 3991 return -EFAULT; 5f8ef48d240963 Stephen Hemminger 2005-06-23 3992 len =3D min_t(u= nsigned int, len, TCP_CA_NAME_MAX); 5f8ef48d240963 Stephen Hemminger 2005-06-23 3993 if (put_user(le= n, optlen)) 5f8ef48d240963 Stephen Hemminger 2005-06-23 3994 return -EFAULT; 6687e988d9aeac Arnaldo Carvalho de Melo 2005-08-10 3995 if (copy_to_use= r(optval, icsk->icsk_ca_ops->name, len)) 5f8ef48d240963 Stephen Hemminger 2005-06-23 3996 return -EFAULT; 5f8ef48d240963 Stephen Hemminger 2005-06-23 3997 return 0; e56fb50f2b7958 William Allen Simpson 2009-12-02 3998 = 734942cc4ea647 Dave Watson 2017-06-14 3999 case TCP_ULP: 734942cc4ea647 Dave Watson 2017-06-14 4000 if (get_user(le= n, optlen)) 734942cc4ea647 Dave Watson 2017-06-14 4001 return -EFAULT; 734942cc4ea647 Dave Watson 2017-06-14 4002 len =3D min_t(u= nsigned int, len, TCP_ULP_NAME_MAX); d97af30f615eea Dave Watson 2017-06-26 4003 if (!icsk->icsk= _ulp_ops) { d97af30f615eea Dave Watson 2017-06-26 4004 if (put_user(0= , optlen)) d97af30f615eea Dave Watson 2017-06-26 4005 return -EFAUL= T; d97af30f615eea Dave Watson 2017-06-26 4006 return 0; d97af30f615eea Dave Watson 2017-06-26 4007 } 734942cc4ea647 Dave Watson 2017-06-14 4008 if (put_user(le= n, optlen)) 734942cc4ea647 Dave Watson 2017-06-14 4009 return -EFAULT; 734942cc4ea647 Dave Watson 2017-06-14 4010 if (copy_to_use= r(optval, icsk->icsk_ulp_ops->name, len)) 734942cc4ea647 Dave Watson 2017-06-14 4011 return -EFAULT; 734942cc4ea647 Dave Watson 2017-06-14 4012 return 0; 734942cc4ea647 Dave Watson 2017-06-14 4013 = 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4014 case TCP_FASTOPE= N_KEY: { f19008e676366c Jason Baron 2020-08-10 4015 u64 key[TCP_FAS= TOPEN_KEY_BUF_LENGTH / sizeof(u64)]; f19008e676366c Jason Baron 2020-08-10 4016 unsigned int ke= y_len; 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4017 = 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4018 if (get_user(le= n, optlen)) 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4019 return -EFAULT; 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4020 = f19008e676366c Jason Baron 2020-08-10 4021 key_len =3D tcp= _fastopen_get_cipher(net, icsk, key) * 0f1ce0236865e8 Jason Baron 2019-05-29 4022 TCP_FASTOPEN_= KEY_LENGTH; 0f1ce0236865e8 Jason Baron 2019-05-29 4023 len =3D min_t(u= nsigned int, len, key_len); 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4024 if (put_user(le= n, optlen)) 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4025 return -EFAULT; 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4026 if (copy_to_use= r(optval, key, len)) 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4027 return -EFAULT; 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4028 return 0; 1fba70e5b6bed5 Yuchung Cheng 2017-10-18 4029 } 3c0fef0b7d36e5 Josh Hunt 2010-07-30 4030 case TCP_THIN_LI= NEAR_TIMEOUTS: 3c0fef0b7d36e5 Josh Hunt 2010-07-30 4031 val =3D tp->thi= n_lto; 3c0fef0b7d36e5 Josh Hunt 2010-07-30 4032 break; 4a7f6009441144 Yuchung Cheng 2017-01-12 4033 = 3c0fef0b7d36e5 Josh Hunt 2010-07-30 4034 case TCP_THIN_DU= PACK: 4a7f6009441144 Yuchung Cheng 2017-01-12 4035 val =3D 0; 3c0fef0b7d36e5 Josh Hunt 2010-07-30 4036 break; dca43c75e7e545 Jerry Chu 2010-08-27 4037 = ee9952831cfd0b Pavel Emelyanov 2012-04-19 4038 case TCP_REPAIR: ee9952831cfd0b Pavel Emelyanov 2012-04-19 4039 val =3D tp->rep= air; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4040 break; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4041 = ee9952831cfd0b Pavel Emelyanov 2012-04-19 4042 case TCP_REPAIR_= QUEUE: ee9952831cfd0b Pavel Emelyanov 2012-04-19 4043 if (tp->repair) ee9952831cfd0b Pavel Emelyanov 2012-04-19 4044 val =3D tp->re= pair_queue; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4045 else ee9952831cfd0b Pavel Emelyanov 2012-04-19 4046 return -EINVAL; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4047 break; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4048 = b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4049 case TCP_REPAIR_= WINDOW: { b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4050 struct tcp_repa= ir_window opt; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4051 = b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4052 if (get_user(le= n, optlen)) b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4053 return -EFAULT; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4054 = b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4055 if (len !=3D si= zeof(opt)) b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4056 return -EINVAL; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4057 = b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4058 if (!tp->repair) b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4059 return -EPERM; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4060 = b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4061 opt.snd_wl1 =3D= tp->snd_wl1; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4062 opt.snd_wnd =3D= tp->snd_wnd; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4063 opt.max_window = =3D tp->max_window; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4064 opt.rcv_wnd =3D= tp->rcv_wnd; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4065 opt.rcv_wup =3D= tp->rcv_wup; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4066 = b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4067 if (copy_to_use= r(optval, &opt, len)) b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4068 return -EFAULT; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4069 return 0; b1ed4c4fa9a5cc Andrey Vagin 2016-06-27 4070 } ee9952831cfd0b Pavel Emelyanov 2012-04-19 4071 case TCP_QUEUE_S= EQ: ee9952831cfd0b Pavel Emelyanov 2012-04-19 4072 if (tp->repair_= queue =3D=3D TCP_SEND_QUEUE) ee9952831cfd0b Pavel Emelyanov 2012-04-19 4073 val =3D tp->wr= ite_seq; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4074 else if (tp->re= pair_queue =3D=3D TCP_RECV_QUEUE) ee9952831cfd0b Pavel Emelyanov 2012-04-19 4075 val =3D tp->rc= v_nxt; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4076 else ee9952831cfd0b Pavel Emelyanov 2012-04-19 4077 return -EINVAL; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4078 break; ee9952831cfd0b Pavel Emelyanov 2012-04-19 4079 = dca43c75e7e545 Jerry Chu 2010-08-27 4080 case TCP_USER_TI= MEOUT: 9bcc66e1983d10 Jon Maxwell 2018-07-19 4081 val =3D icsk->i= csk_user_timeout; dca43c75e7e545 Jerry Chu 2010-08-27 4082 break; 1536e2857bd38e Kenjiro Nakayama 2014-04-17 4083 = 1536e2857bd38e Kenjiro Nakayama 2014-04-17 4084 case TCP_FASTOPE= N: 0536fcc039a892 Eric Dumazet 2015-09-29 4085 val =3D icsk->i= csk_accept_queue.fastopenq.max_qlen; 1536e2857bd38e Kenjiro Nakayama 2014-04-17 4086 break; 1536e2857bd38e Kenjiro Nakayama 2014-04-17 4087 = 19f6d3f3c8422d Wei Wang 2017-01-23 4088 case TCP_FASTOPE= N_CONNECT: 19f6d3f3c8422d Wei Wang 2017-01-23 4089 val =3D tp->fas= topen_connect; 19f6d3f3c8422d Wei Wang 2017-01-23 4090 break; 19f6d3f3c8422d Wei Wang 2017-01-23 4091 = 71c02379c762cb Christoph Paasch 2017-10-23 4092 case TCP_FASTOPE= N_NO_COOKIE: 71c02379c762cb Christoph Paasch 2017-10-23 4093 val =3D tp->fas= topen_no_cookie; 71c02379c762cb Christoph Paasch 2017-10-23 4094 break; 71c02379c762cb Christoph Paasch 2017-10-23 4095 = a842fe1425cb20 Eric Dumazet 2019-06-12 4096 case TCP_TX_DELA= Y: a842fe1425cb20 Eric Dumazet 2019-06-12 4097 val =3D tp->tcp= _tx_delay; a842fe1425cb20 Eric Dumazet 2019-06-12 4098 break; a842fe1425cb20 Eric Dumazet 2019-06-12 4099 = 93be6ce0e91b6a Andrey Vagin 2013-02-11 4100 case TCP_TIMESTA= MP: 9a568de4818dea Eric Dumazet 2017-05-16 4101 val =3D tcp_tim= e_stamp_raw() + tp->tsoffset; 93be6ce0e91b6a Andrey Vagin 2013-02-11 4102 break; c9bee3b7fdecb0 Eric Dumazet 2013-07-22 4103 case TCP_NOTSENT= _LOWAT: c9bee3b7fdecb0 Eric Dumazet 2013-07-22 4104 val =3D tp->not= sent_lowat; c9bee3b7fdecb0 Eric Dumazet 2013-07-22 4105 break; b75eba76d3d72e Soheil Hassas Yeganeh 2018-05-01 4106 case TCP_INQ: b75eba76d3d72e Soheil Hassas Yeganeh 2018-05-01 4107 val =3D tp->rec= vmsg_inq; b75eba76d3d72e Soheil Hassas Yeganeh 2018-05-01 4108 break; cd8ae85299d541 Eric Dumazet 2015-05-03 4109 case TCP_SAVE_SY= N: cd8ae85299d541 Eric Dumazet 2015-05-03 4110 val =3D tp->sav= e_syn; cd8ae85299d541 Eric Dumazet 2015-05-03 4111 break; cd8ae85299d541 Eric Dumazet 2015-05-03 4112 case TCP_SAVED_S= YN: { cd8ae85299d541 Eric Dumazet 2015-05-03 4113 if (get_user(le= n, optlen)) cd8ae85299d541 Eric Dumazet 2015-05-03 4114 return -EFAULT; cd8ae85299d541 Eric Dumazet 2015-05-03 4115 = cd8ae85299d541 Eric Dumazet 2015-05-03 4116 lock_sock(sk); cd8ae85299d541 Eric Dumazet 2015-05-03 4117 if (tp->saved_s= yn) { 70a217f1976f75 Martin KaFai Lau 2020-08-20 4118 if (len < tcp_= saved_syn_len(tp->saved_syn)) { 70a217f1976f75 Martin KaFai Lau 2020-08-20 4119 if (put_user(= tcp_saved_syn_len(tp->saved_syn), 70a217f1976f75 Martin KaFai Lau 2020-08-20 4120 optlen)= ) { aea0929e516a1f Eric B Munson 2015-05-18 4121 release_sock= (sk); aea0929e516a1f Eric B Munson 2015-05-18 4122 return -EFAU= LT; aea0929e516a1f Eric B Munson 2015-05-18 4123 } aea0929e516a1f Eric B Munson 2015-05-18 4124 release_sock(= sk); aea0929e516a1f Eric B Munson 2015-05-18 4125 return -EINVA= L; aea0929e516a1f Eric B Munson 2015-05-18 4126 } 70a217f1976f75 Martin KaFai Lau 2020-08-20 4127 len =3D tcp_sa= ved_syn_len(tp->saved_syn); cd8ae85299d541 Eric Dumazet 2015-05-03 4128 if (put_user(l= en, optlen)) { cd8ae85299d541 Eric Dumazet 2015-05-03 4129 release_sock(= sk); cd8ae85299d541 Eric Dumazet 2015-05-03 4130 return -EFAUL= T; cd8ae85299d541 Eric Dumazet 2015-05-03 4131 } 70a217f1976f75 Martin KaFai Lau 2020-08-20 4132 if (copy_to_us= er(optval, tp->saved_syn->data, len)) { cd8ae85299d541 Eric Dumazet 2015-05-03 4133 release_sock(= sk); cd8ae85299d541 Eric Dumazet 2015-05-03 4134 return -EFAUL= T; cd8ae85299d541 Eric Dumazet 2015-05-03 4135 } cd8ae85299d541 Eric Dumazet 2015-05-03 4136 tcp_saved_syn_= free(tp); cd8ae85299d541 Eric Dumazet 2015-05-03 4137 release_sock(s= k); cd8ae85299d541 Eric Dumazet 2015-05-03 4138 } else { cd8ae85299d541 Eric Dumazet 2015-05-03 4139 release_sock(s= k); cd8ae85299d541 Eric Dumazet 2015-05-03 4140 len =3D 0; cd8ae85299d541 Eric Dumazet 2015-05-03 4141 if (put_user(l= en, optlen)) cd8ae85299d541 Eric Dumazet 2015-05-03 4142 return -EFAUL= T; cd8ae85299d541 Eric Dumazet 2015-05-03 4143 } cd8ae85299d541 Eric Dumazet 2015-05-03 4144 return 0; cd8ae85299d541 Eric Dumazet 2015-05-03 4145 } 05255b823a6173 Eric Dumazet 2018-04-27 4146 #ifdef CONFIG_MMU 05255b823a6173 Eric Dumazet 2018-04-27 4147 case TCP_ZEROCOP= Y_RECEIVE: { 7eeba1706eba6d Arjun Roy 2021-01-20 4148 struct scm_time= stamping_internal tss; e0fecb289ad3fd Arjun Roy 2020-12-10 4149 struct tcp_zero= copy_receive zc =3D {}; 05255b823a6173 Eric Dumazet 2018-04-27 4150 int err; 05255b823a6173 Eric Dumazet 2018-04-27 4151 = 05255b823a6173 Eric Dumazet 2018-04-27 4152 if (get_user(le= n, optlen)) 05255b823a6173 Eric Dumazet 2018-04-27 4153 return -EFAULT; c8856c05145490 Arjun Roy 2020-02-14 4154 if (len < offse= tofend(struct tcp_zerocopy_receive, length)) 05255b823a6173 Eric Dumazet 2018-04-27 4155 return -EINVAL; 110912bdf28392 Arjun Roy 2021-02-11 4156 if (unlikely(le= n > sizeof(zc))) { 110912bdf28392 Arjun Roy 2021-02-11 4157 err =3D check_= zeroed_user(optval + sizeof(zc), 110912bdf28392 Arjun Roy 2021-02-11 @4158 len - sizeo= f(zc)); 110912bdf28392 Arjun Roy 2021-02-11 4159 if (err < 1) 110912bdf28392 Arjun Roy 2021-02-11 4160 return err = =3D=3D 0 ? -EINVAL : err; c8856c05145490 Arjun Roy 2020-02-14 4161 len =3D sizeof= (zc); 0b7f41f68710cc Arjun Roy 2020-02-25 4162 if (put_user(l= en, optlen)) 0b7f41f68710cc Arjun Roy 2020-02-25 4163 return -EFAUL= T; 0b7f41f68710cc Arjun Roy 2020-02-25 4164 } 05255b823a6173 Eric Dumazet 2018-04-27 4165 if (copy_from_u= ser(&zc, optval, len)) 05255b823a6173 Eric Dumazet 2018-04-27 4166 return -EFAULT; 110912bdf28392 Arjun Roy 2021-02-11 4167 if (zc.reserved) 110912bdf28392 Arjun Roy 2021-02-11 4168 return -EINVAL; 110912bdf28392 Arjun Roy 2021-02-11 4169 if (zc.msg_flag= s & ~(TCP_VALID_ZC_MSG_FLAGS)) 110912bdf28392 Arjun Roy 2021-02-11 4170 return -EINVAL; 05255b823a6173 Eric Dumazet 2018-04-27 4171 lock_sock(sk); 7eeba1706eba6d Arjun Roy 2021-01-20 4172 err =3D tcp_zer= ocopy_receive(sk, &zc, &tss); 05255b823a6173 Eric Dumazet 2018-04-27 4173 release_sock(sk= ); 7eeba1706eba6d Arjun Roy 2021-01-20 4174 if (len >=3D of= fsetofend(struct tcp_zerocopy_receive, msg_flags)) 7eeba1706eba6d Arjun Roy 2021-01-20 4175 goto zerocopy_= rcv_cmsg; c8856c05145490 Arjun Roy 2020-02-14 4176 switch (len) { 7eeba1706eba6d Arjun Roy 2021-01-20 4177 case offsetofen= d(struct tcp_zerocopy_receive, msg_flags): 7eeba1706eba6d Arjun Roy 2021-01-20 4178 goto zerocopy_= rcv_cmsg; 7eeba1706eba6d Arjun Roy 2021-01-20 4179 case offsetofen= d(struct tcp_zerocopy_receive, msg_controllen): 7eeba1706eba6d Arjun Roy 2021-01-20 4180 case offsetofen= d(struct tcp_zerocopy_receive, msg_control): 7eeba1706eba6d Arjun Roy 2021-01-20 4181 case offsetofen= d(struct tcp_zerocopy_receive, flags): 7eeba1706eba6d Arjun Roy 2021-01-20 4182 case offsetofen= d(struct tcp_zerocopy_receive, copybuf_len): 7eeba1706eba6d Arjun Roy 2021-01-20 4183 case offsetofen= d(struct tcp_zerocopy_receive, copybuf_address): 33946518d493cd Arjun Roy 2020-02-14 4184 case offsetofen= d(struct tcp_zerocopy_receive, err): 33946518d493cd Arjun Roy 2020-02-14 4185 goto zerocopy_= rcv_sk_err; c8856c05145490 Arjun Roy 2020-02-14 4186 case offsetofen= d(struct tcp_zerocopy_receive, inq): c8856c05145490 Arjun Roy 2020-02-14 4187 goto zerocopy_= rcv_inq; c8856c05145490 Arjun Roy 2020-02-14 4188 case offsetofen= d(struct tcp_zerocopy_receive, length): c8856c05145490 Arjun Roy 2020-02-14 4189 default: c8856c05145490 Arjun Roy 2020-02-14 4190 goto zerocopy_= rcv_out; c8856c05145490 Arjun Roy 2020-02-14 4191 } 7eeba1706eba6d Arjun Roy 2021-01-20 4192 zerocopy_rcv_cmsg: 7eeba1706eba6d Arjun Roy 2021-01-20 4193 if (zc.msg_flag= s & TCP_CMSG_TS) 7eeba1706eba6d Arjun Roy 2021-01-20 4194 tcp_zc_finaliz= e_rx_tstamp(sk, &zc, &tss); 7eeba1706eba6d Arjun Roy 2021-01-20 4195 else 7eeba1706eba6d Arjun Roy 2021-01-20 4196 zc.msg_flags = =3D 0; 33946518d493cd Arjun Roy 2020-02-14 4197 zerocopy_rcv_sk_e= rr: 33946518d493cd Arjun Roy 2020-02-14 4198 if (!err) 33946518d493cd Arjun Roy 2020-02-14 4199 zc.err =3D soc= k_error(sk); c8856c05145490 Arjun Roy 2020-02-14 4200 zerocopy_rcv_inq: c8856c05145490 Arjun Roy 2020-02-14 4201 zc.inq =3D tcp_= inq_hint(sk); c8856c05145490 Arjun Roy 2020-02-14 4202 zerocopy_rcv_out: 05255b823a6173 Eric Dumazet 2018-04-27 4203 if (!err && cop= y_to_user(optval, &zc, len)) 05255b823a6173 Eric Dumazet 2018-04-27 4204 err =3D -EFAUL= T; 05255b823a6173 Eric Dumazet 2018-04-27 4205 return err; 05255b823a6173 Eric Dumazet 2018-04-27 4206 } 05255b823a6173 Eric Dumazet 2018-04-27 4207 #endif ^1da177e4c3f41 Linus Torvalds 2005-04-16 4208 default: ^1da177e4c3f41 Linus Torvalds 2005-04-16 4209 return -ENOPROT= OOPT; 3ff50b7997fe06 Stephen Hemminger 2007-04-20 4210 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 4211 = ^1da177e4c3f41 Linus Torvalds 2005-04-16 4212 if (put_user(len= , optlen)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 4213 return -EFAULT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 4214 if (copy_to_user= (optval, &val, len)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 4215 return -EFAULT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 4216 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 4217 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 4218 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============3830859464725288851== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" H4sICEzgJWAAAy5jb25maWcAjFxLc9y2st7nV0w5m2ThHEm2dZ26pQWGBIfIkAQMgPPQhqXIYx/V kaVcPU7if3+7AT4ATHMSLxIR3cSz0f31g/PjDz8u2OvL47ebl7vbm/v774uvh4fD083L4fPiy939 4X8XuVw00i54LuwvwFzdPbz+9a+/Pl52l+8XH345P//l7O3T7f8s1oenh8P9Int8+HL39RU6uHt8 +OHHHzLZFGLVZVm34doI2XSW7+zVm6+3t29/XfyUH36/u3lY/PrLO+jm/MPP/q83wWvCdKssu/o+ NK2mrq5+PXt3djYQqnxsv3j34cz9G/upWLMaydMrwTtnwZgZa7pKNOtp1KCxM5ZZkUW0kpmOmbpb SStJgmjgVR6QZGOsbjMrtZlahf7UbaUOxl22osqtqHln2bLinZHaTlRbas5y6LyQ8B9gMfgq7PqP i5U7xfvF8+Hl9Y/pHJZarnnTwTGYWgUDN8J2vNl0TMOuiFrYq3cX0Ms421oJGN1yYxd3z4uHxxfs eHi7ZUp0JcyEa8cy9VvJjFXDDr95QzV3rA33zC24M6yyAX/JNrxbc93wqltdi2DiIWUJlAuaVF3X jKbsrufekHOE9zTh2tgcKOOmBfMl9iyZc/oWTjh8K6Xvrk9RYfKnye9PkXEhxIxzXrC2sk5WgrMZ mktpbMNqfvXmp4fHh8PPI4PZm41QwX3pG/D/ma3CxStpxK6rP7W85eQMt8xmZXdEH8RUS2O6mtdS 7ztmLcvKsPfW8EosyX5ZC9qN6NGdL9MwpuPAGbOqGu4YXNfF8+vvz9+fXw7fpju24g3XInO3WWm5 DK59SDKl3NIU0fzGM4tXJhA0nQPJdGbbaW54k8daI5c1Ew3V1pWCa1zCnh6sZlbDpsOy4FKCOqK5 cEy9YTiprpY5j0cqpM543qsj0ayCs1ZMG45MdL85X7arwrhjOjx8Xjx+SXZ10uAyWxvZwkBeCnIZ DOOOKGRxQvqdennDKpEzy7uKGdtl+6wizsdp3M103AnZ9cc3vLHmJBHVLcszFqpEiq2GY2L5by3J V0vTtQqnnOgdf1sy1brpauP0f2I/TvI4IbZ33w5Pz5Qcg5Fbg6XgIKjBvBrZlddoEWonn+MVgkYF E5a5yIiL5N8SeRXbQMQCndUsW0dSk1K8gCVzCHZDrEqU0H6NoTAdrW7cGM15rSx05czypIL69o2s 2sYyvSf1Rc9FLHR4P5Pw+rDHsP//sjfP/1m8wHQWNzC155ebl+fFze3t4+vDy93D12nXN0Jbd2As c334jRlHdocSk4lZEJ2gQMW31gk5PcrS5Ki6Mg76FDgsuQkoSoiFDLUNRgRCaMRoJnJhEMjk4SH9 g+1x26izdmEoOW32HdDCBcBjx3cgkNQZGc8cvp404cpcH/0tJEhHTW3OqXaUYT5Or19xvJLxUNb+ j+CY1qNYySxs9mgr0D6VROxUgFURhb26OJvkUTQWMCsreMJz/i7SJi0AUg8xsxJ0uVNPg/ya238f Pr/eH54WXw43L69Ph2fX3C+GoEZ62bRKAWw1XdPWrFsywOJZdN0d15Y1FojWjd42NVOdrZZdUbWm PILUsKbzi49JD+M4KTVbadkqE8oHgIRsRUq1Z/a7cIpBidycout8BsH19AIUxTXXp1jKdsVhD06x 5HwjMhor9RxwuWZv8LAUrovTg4CRJhkQ8IGJBz1BwbGSZ2sl4TRQOQO0iBStFzME/24QsnswwIWB 4UGpAjaZOQ/NK7Ynhl9Wa9weBwV0CJfwmdXQsUcEAZbV+eBeTL3nHqPTQ+fzQB1oMUgP3wl8C/f8 PnruPYlhHVKiOekVw3Q2WScVqHBxzdE8ukOUuoa7RULjhNvAH4HyyDupVQkO7pbpwEqMCD16BsWa ceWgoFNuKSzJjFrDfCpmcULBQlQxPXjlPD3XYBwEIHQdyQjIf42ApUdiJ4SE4OjpBawrwh0eE41Y IVKU6XPX1IEhg2sQrKAq4FhioU7WTs53yQAQFy091xZwzzSEewRNEwyqZAhIjVg1rCoCaXHLChsc xAwbTAnKL5w0E5KYipBdq2M1nW8ETL3faZMcu1PBeIDOzhd5tw3cdBhxybQWPHAv1tjJvjbHLV0E usdWt3F4263YRLsOgnXi/CfrMmAQ5P8t9A+CaSc2BY3NNHkYpcmGQx/uq+GBb+NUZdIGr/M853l6 T2DMbnQiAhE6P4vcc2dq++iaOjx9eXz6dvNwe1jw/x4eACQxMMIZwiTAuRMmmuncT88RYc3dpnZu XyymvVX/hyNOfW9qP6CHvnC3aJMia8XgCPSaAmYVW0b3v2pp62cquZx5H45Lr/hw1nFvQEWzWwnw /DRoBUnf0JgRXW9AgbTxMWVbFACaFIMxRx+amtreWF534MYxDDmKQmQsdvEB4hWiim6cU6/OgkZO TRzbG5gv3y9Dmd65CG30HNpAH31EHZ7zDBz64GLK1qrWds6a2Ks3h/svl+/f/vXx8u3l+zCCtwa7 PGCuQLtYcNk85j2i1XWbXK8aYZ5uwMYK7wZfXXw8xcB2GJckGQbBGjqa6Sdig+7OL1OHO1LyQeOo ejp3IpHxGJ11VomlxuhCjqiEUCbolGFHO4rGABNhjJkn9nnkAAGBgTu1AmGxiT4x3Hos5x0/zYOI Z8MBaw0kp4+gK43xj7INw9wRn5Npks3PRyy5bnxICEyqEcsqnbJpjeKw6TNkp5Td1rFqALsTyzV4 5h2A6HdBTNdF4dzLoX0wAFxMyXK57WRRwD5cnf31+Qv8uz0b/9GeQuvic8FBFoAMONPVPsNAFw/Q i1p596gCJQfG70PikcAcuBd+PBqe+Uia093q6fH28Pz8+LR4+f6H928jNypZL61naiqIjHe84My2 mnsoHqo7JO4umCLjMUislQvOBVIsq7wQobuluQXAIeIQCb7rxRjQoKZMLnLwnYWjR3GagGDUxTAa uV5kwEtWdZUytCVBFlZP/Z/yhYQ0RVcvxcxcR3noY8cFE1VLuSuyBvErwHsYlQAVNN7DDQKoBDB7 1UbpENhvhqGZyN73bcdeVjDBcoOqpVqCeIH16IVr2gneUBkGMMjJ+D5MqlqMw4HUVrZHk9NkNvRx jJNMYkZU5GdgHSIIYye/wa6WEnGHmxYdiM90c4Jcrz/S7cpkNAHBGu28gXGL7X+qy1VgrQZ51A3Y yl5R+zDKZchSnc/TrMni/rJa7bJylRhpDPhu4hYwZ6Jua3fpClaLan91+T5kcKIDnlltAjMuQHM6 7dBFPhzyb+rdkd6YUAhG/dBF5BVIWuRywvhwVfzFpJzMng63Mgi+9I3lfhUHjAdCBpiRtdRFGjiu SyZ3YXajVNyLYrDc3DlqY+8rBiIoJEAOKhrtDJxBDAgmbslX0Pk5TcRMyxFpAJcpYWqAWVcIA+I8 hBMRzH12qJYT6ZJDY6ThNNeAx7zT3idvXUAAk0Fzej07UtfQhMG/iq9YRke0e67Zsx3o0dkOjZj4 MSXoc2LcPpt15NGEjsW3x4e7l8enKA4eeDC9JdBMBXIc0p0ZkFsQh28TSp4ZIJ7g+eWSTPy5W9L7 lACY2ioB6/7EVIX/4WGQQ3yMdF4tMrhQoDPmN91Qot/bWJFs9geHPuK2XGjY3261RLx2hAAyxXzB grEiow0p7h4YPhD1TO/JpIYHTQ4teEZGYL2RPLleEd2pk8HCYg6xSjh6UpIyFRVKbTXYW8zftRwB 3uHm81nwL1k2xh4B5UuD7rpuXbhqZp99bhPD49tAr9ZWR0YWnxHlCSvmwrbYGTgXcxvoPc748Az4 JXFLW4ukxUv/tDvWJ4e7Nd9Hx80LQU6rvO7Oz84ooHLdXXw4C7uAlncxa9IL3c0VdDM6gA4olRoT VWHXa77jtI12FHRtZuLYmpmyy1sSAatybwQqVJBxjbj/PJUGcLbQKUeJPfU+OG6rBt6/iLyFfA/m EbBAv/ng0oEyDuKmTp+miiLSvinLTjYVrYFTTsxM0htS585HBDtAaWq4WqKAuea2O0pgO0exAh9W YaIljCmcclKO3FCW592gbUKaVwzDbpXSqqpN8zxHPBr+2qTapOcyqgLArVC92x5OElzoOjpntRYr PShqb2Qe/zw8LcAG3Hw9fDs8vLh1sUyJxeMfWKAWRMx6XzWIZPTOa5+oiZyBnmTWQrmYICVZdWcq zqNkArRhwsO10zi7Bqd4zV25AtlnYP9qD/uiFpZvMAGQEyQ36NgejthnKO3MKrIq2PbtJ29oQdkU IhN8iqoeuf69S4W7HdCOnga5dzfUgBKW61allkGsStuHmfEVlWdJJ314zc8N7R10NcWfAvdCCb8H K9J1832pTPvppDNVIZjzvP0Rh22abzqQaK1FzsPQRzwLUHl98cvcPFi6yCWzYAH3aWtrbYysXfMG Rqfi+o5YsOMXLKNDnH7PQCLnOnNuieYgGcYkc5u8icwdyiw5rgyJiUcznV5jq5UG8aFDrn5VJcAz lkINp8T8olGBtAr0Rp5OIKURUjS/YSpD4ZBzXi5umwS/B/Q4jSUcS69Be2U5t8SBS8jUgfAiupyB fe7dmbi2n2FrwEWG0W0pT7BpnreoczBQvmXgUqYmLjQ+XrIVD7RA3N5n3OIhkHBCOJWl89f+ou3A dJw4Kf93QW+SQusvFQjZPH5EFdr7opOFiLHYUAW0KJ4O//d6eLj9vni+vbn3Dk/kEeNFIvMx9Ntj x+Lz/SEot4ae+isV9e4CPyu5ASST56QGjLhq3rSzXVhOF5lGTEOQiRQHTxoCUiEamVY04pO/teRu K5avz0PD4ie4g4vDy+0vPwdeJVxL7zAFxhHa6to/hMkK/APjLednURkpsmfN8uIMlvipFXEia4o4 GgaamRYqpOU1Q3+futOAdpooDeYchb0plqRgzCzZb8fdw83T9wX/9np/M+CdaRoYIBp92xnh3oXh d588SZ9dbKK9fO8xNMhMmA7qa33HN6dpH03Nza24e/r2583TYZE/3f03SmnyPHfu/fSI0X5ygwuh a6eJQHGCg0Xy5LUQZJlzLXxJAQwWNmH5f82yEpE3QHP0tkA4fEw2yB9su6xYjR1MMwraBwBPTmsl 5ari4wqOlIg9fH26WXwZdumz26WwGmuGYSAf7W+khdebKEyPcdwWTvV6TkLQjG52H87DFI3BXMx5 14i07eLDZdpqFWtdBiL6ZuHm6fbfdy+HW/Q+3n4+/AFTxxt/BNmHSC1InENF47ylz6VSDp9b5kCf 5jK0oPU51uZrnyYiuvsN3FJQpsswmOG/D3HuOUY9iv6TiMk2eLpz8gb63EwnmN027nphzVSG6CdB NBhWx28nrGi6pdmy9BsJIcHPYqojEofrNAnmWzH3QxGkotv7bvDbkoKqCyraxsctABkj4qOK3Dc8 LriZKktcjyU4BwkR9SgiKbFqZUtkZA2cj7NGvjidwIGgvSw6zH012DGD4UPYaobYR+Dqo033M/cf 6fiEe7cthXV1BUlfmAs1Y7zBVWn7N9IuTY0efv/xTHoGgFPgRqJnipnIXlLQzqR8UYFKfDz4CdDs i+W2W8JyfFlfQqvFDqRzIhs3nYQJS20wrdjqBtQobHxUE5QWxhDSgCgT/WNXl+gTre4NqhNi/KH2 RfdbhHEl6tSoi01Rw4KkETm0HfgkJe+9SBdBIMlYYUyx9NLlb4Ov3e2TRclk+lafVJih5bKNXNlp FYZnaJdPkPqCg0C3pa8cMU5qrqf4hNhcdjMYEs+jAuFJ5nOUVA8VaUA52flWWLDc/Zm7BG4qGKhE 6K8RSLKrNLCR7Xd8f1t577UxWX4fXSaJwtqmRWO+uU6bBxXZYBQercUQEvunfMRQXgiBjmViaUTG lW44IgbnwLhrWsJk4dSj3R+tIx/SBjzDYqjgfsi8xUgQWjSsscQLRiheR3IR9ahUZho7Kh1KGPhO WNoixG9N1UhEv0Ep0VwnIQvRVU927FjdmE7Ti2v/xdKxqYSdET5MOhZdTRy9AxLr8H7AdxdL4ROo 1MbhcXeJbFNtkw20YGnt8Pmg3ga1TSdI6ev+3MnXKdI0X/DOK/Bk+kB/bBXRUoRlielJ9fWdQ+7r eP8HpDZPOfq2d7ogc3XVcYS0L8qEW+gKCEc0nMnN299vng+fF//xtZh/PD1+ubuPsqTI1O8usTJH HZAti0s9UhrpW56aQ7Qf+FU2BqFEQ1Yq/g2iH7oC1VljyXN4EVzVr8FC1Sm73quIVGf4z8TgzMNb 3ZPapm+eEnrhO55M14lMaGuOjv0YnY1fNM9Uqg+cgo5G9WS8o5rPFD31PCgoWwBcxqB9Gb/C6ETt RIp8tW1Ao4Ku3tdLWVG+DNy1euBax5XZYWsAYacvJwalbQHHTDH8qUK7mokfm+Y8HMVfJTAKYKvx SI7UzZRWsBKBMnjJhCPkPhDOXTculTLPorcUA94d9PExil8xpXCTWZ7jqXRuoyktNpSGd0te4P8Q ZMafyga8PsW31dB5CK+mXJNTAfyvw+3ry83v9wf3WwwLV8/wEnjAS9EUtUVbOPUBD3GFupsU4tyx AB5t59EXZH1fJtMiVIR9M8haNkVEsMseOY93fW6ybiX14dvj0/dFPcXvjhNwpwoEpuqCmjUtoygU MyA2cHs5Rdr42NBRMcMRR+on4WfDqzb+uAFnLIxMq0TmEqFxez/kLHk4NdmklZhpEpWqO/cZVJc9 9TVK76dDBDAwuOBBqd8KkQXeMrrAL0yyjj2hA94N5mvoqdy7VDG4QWlxuq8llAhQpsa1Cc5wWLQ7 I/99dK6v3p/9eknrg6PKzXiLiIrOcgteqoFbflygNPJQUPnUJyagAEvASVH4JaqpXgdLzMDZaZx3 FE4rm6kARomc4DTJcq2SioCJsmxp43Ztjj8BGQDCEF3DcughfhTgy3z47OHYYxoVnXKV8LH/4Mtn xyrWRDEb/zU3vNIVFVtRmln1hS+DmHHtCgXxS+QI4LRq7gdLovk5D4RVoSqb11bToY4fdzeHlz8f n/4DkCjQacF1ytac/NGURgRoFp9A9UbRV9eWC0ajBVvNlEUXuna2h6TCvDEwSX3v5Zc0ZQeU/yYP f72AzmKoqdzA1ShSHjgwqSaUGvfc5WWmksGwGSsb6Wh9z6CZpum4LqHEKeIKrSCv2x1VEOo4Ots2 HkhPIYZ9A9pNrgWnd9u/uLF0dhKphWxP0aZhZ3JFyMfoqmxHA+Q3TxQKlfzMaU/LDRtR4JImm6mh Oe6+zdW8gDoOzbZ/w4FUOBfw9CSt1XB0+HM1ShsFXQeerF2GsYTBigz0qze3r7/f3b6Je6/zDwkm H6VucxmL6eayl3X0Ounkk2PyH9tizWWXz/gVuPrLU0d7efJsL4nDjedQC3U5T01kNiQZYY9WDW3d pab23pGbHPBhh8Xxdq/40dte0k5MFTWNqvpfuZq5CY7R7f483fDVZVdt/248x1bWjC5I9MesqtMd 1QpkZ+5q4y+sYAS0ZjP54YEHQJILxID5qlUCuEJmH18lqUt1ggjqJc9m5onFa9mMwtUzv24Ax0Rv GrP0x5TVxcwISy1yEk35wDeqBsNCSeqbyM42FWu6j2cX559Ics6zhtNmrKoy+vsQZllFn93u4gPd FVP056qqlHPDX4Ijr1hDnw/nHNf0gf65LtyP+Z+pyDPqC9m8wawMeCqbvlh+OAw4PoYge0N2JhVv NmYrbEarq43BHzOaCTzAPN3v5s3agVrNGD9cYTPzhVhp5hGOnykAz1mO6h04kgb1+BzXJ23nB2gy Q1v8/hczkEdpMVMgM/FkFTOGLENwxnOHDtK+i7/5X36KEEr/MftRoUAPSxcvh+eXpM7IzW5tV5wW O3fPtAS7KBuRJFZGiHzUfUII4XBwaKzWLJ/bl5lrsJwpoitgg/ScNiq6dUZ93bUVmlc+fT4NXKz+ n7NraW4cR9J/xceZQ++IpB7UYQ4UBUko82UCkihfFC7b2+1Yl11hu2e7//0iAT4AMFOq2IO7S/gS IEgAiUS+AMssGHtsdcDb8/PT583X+833Z/WeoON4Av3GjdpBNMGgxehK4DwCR4wdRBmbcF7bKX1z y1GnKPj2y8rnestLOVjShBPZW1i1O1MZ74oN/uEqofYhwhNfS5QbHMO2yo7nQABxe8ztzmZ1qbpn kkgMPjLqjA4aN6QJJndSnW07VuJbc4aEDnrY1s//eXlEPIgMMReWOan9NXgVgdnkkK1g9ea4/kOT gBMYXte4zCgpkfD91FRaY0ttfapt63Tr/Wiz+nkpI7jW13j+ZhaaCMd1vC3BkiT0mHalFskBH26X DNQwv0SM56hxCNWZHBcktJuewIRWQLQnnv9VLqwa7Z8r99geCRCoy4BNIIl3AOYlvmkApmYOjSU4 t9ePbJ0N3K8BJjy1spjv6+bTEEOpMXAgoL83UPzSwBhCVofwH3xPbjWW4IXo81Ioe3x/+/p4f4VU YU/94myX7OfL729HcEwDwvRd/UP8+fPn+8eX7dx2iczomd+/q3ZfXgF+Jpu5QGX4/sPTM4QNanjo NOQRHLV1nbZ3YcW/QP912NvTz/eXty9HfQR8plhrfxp0H3Yq9k19/u/L1+Mf+Pd2l8CxFZakH5xl tU+3NkzDNLFzbFVpnvJksBeY39oyd065pbyDakYJ3Pb9t8eHj6eb7x8vT7+76RFOECaMT871fBEu cQk6DidLIndXUnFPEhmcEF8e293jpvTNFHtjTd6xzLHcOMUQBbhzcuQeZF5tvFQ8pkxJWfsCzVIo k2KdZOP8lPpBvYurTpg8eovezfP1Xc3Pj6H7m6MeBcfo1BVpde4aUgRaG2Qj66R/mvVOQy3tTdV/ j2E7xwh6l1l0TIYqmBF0IBqU5r5Xa/u6liCoLaWQB66zWREHRLDBr2uOyx8tzA418wYRykHL3NY9 k4YYTZRoK2FLagJd+zVi5R3QUWJE6mCAD/sMkqaseMYlt+3gNds6unbz+8zDdFQmMp475peu3PYX acvynJfjRu2cvuCGqb2A9PTZuDMBwA0rUmMqYCifIZZd79T/pGU6hyPkOz52sbec4rsqlkRcKhHV 9xXr0W1BGd0lfsQusR3ZD1irUkiJ4QeitUXYjm6ry7WuXM8xJS+KNuKySyrz9f74/mrn/CqqNrzO HAAPOcM2P6fcbJovn4/WB+74DytEWQt1ghBRdpiE62GqJutZOGvOaluy3ViHQnfC2QDMLkvtoNZj foKZhHPvVQ7+roRKJSkkkb9L8k2ulzumrUzFMgrFdGL5HaipmZUCkmFAIDhPmeO6v1NTPUMj6aq1 WKrDXpJZsQJcZOFyMonsFkxZiMVOdx9ZKpLZbGLX6qDVLlgsLtXV/VhObN+oPJ1Hs9CKYBDBPLZ+ Z4mU6j3PLK2iQcTt2q2T3Bd4OxlkZFEblGKQu0yddNcbhlkTwX/gXEvR2K9YHaqk4PhBNA39BWJc Ipjii7kjiHWjqJFzIsMp8vwBnTlRJKZ4nBjDxdUZfh4vZs5pzyDLKG3mdMVl1DTTOfJEvpbneLmr mMDsUS0RY8FkMnWcLNzXtz7XahFMRpO+DRn56+Hzhr99fn38+UNn8Pv8Q+2VTzdfHw9vn9DOzevL 2/PNk2IDLz/hn/ZnlXBOQnns/6NdjLdoZmF9oAR02TppRUVo8Nt8CPgxq0fV3xUC2eAUByNZHfIU f4Taio93GHNh6a50/DNg0idZCi7qRFv9uvApRvherBy2lKySIjknHB0bh6U72gW+7uNtBGgxDZG1 oLohUiB44dizD6tgSW974UUJmVsSGGM3QbSc3vxDiWnPR/X3T2z9KhmTgXYOlwxb8FyU4oS+8cXH WNo5Nfwl5JPQMpibEzpJIRwuhxRVK4mFOxVMmiRjltik1bheGthVWawpW47e8lAE3m+7T2pc2GB3 OhLrgl1fsgTfD9WLgX2EsAGR0KGhEJBFCV3PSq2c/RoXsreEJUj1TxC5QdR7qX+JktBIyj3eQVV+ PuiR0VeCELUPTOK2hSLLS7xhJd15lhyjvnhRTPDl+59wa5Iwp+XEcnl1Tt+dKuMXq1gqUHDzle7M U2fBteIuUVo6WzbLIkKPo8/hUTpb4DalgSDGT9QHtSmzBv/op2pXomGCVk+TdVJJ5kapmyKdwmXD UanNbmDL3MXGZBAFlFNHVylL0pqrhziRvOoIlJboGdOpKpmfXoFRQku7d0lx7SXy5N52oHMgx0tZ /YyDIDhTU7WC+RjhKo52MIs8pRYyxBo329W13irWU0juKLuTOyIk1K5Xp/grwlQuHd6byIyywmYB CeDLGhBqeK7ME3Nfi7uWVlN8qazSHPggLg2vigZ/n5SaOpJvywJftdAYvuRM2hNfULYrYkdM94VT L7vFqkgu14EKhZtjTnFwTJPuVDrwvfNd5W5fgKpHfZBzhVuwbJLDdZLVlmBMFk1N0GT8bu/rA5G3 2LFMcEfGa4vOEp+mPYwPbQ/jc2yAD5iuwe4Zr+u9a9UU8fIv7Nzo1BKp8zY+Z0OqaMdghxekzRnu Z8DFnQL1frQaXLu7gXFMy9BL0+xarR1weFAW4kpFoQafuBXBag/yIOjU+8M6YOHVvrP7dMcrlMlt 9t+4FHv3IK358SY/fAviK5zI5AFAW97tk6OdP8WCeBzOmgaH4NjjDDWeFA6KJz7dhDhKbXHjsion litvqCr+NjQgU/LpOCf9ll8Z6zypD8yNhsoPOeWWIG63+PPF7Sm88iD1lKQonWmVZ830THheKGw2 OsPbqDhehDfHK/3hae1OglsRxzOccxlINYufwm/FfRxPqWOr99CyXSYWn0nD+NscTzWowCacKhSH 1SddTKMr60c/VbAcXyf5qXaSDMHvYEKM84YlWXHlcUUi24cNjMwU4QcMEUcxqhC022QSLlRzZE8R ErP00KC+dG5zdVmUOc5UCrfvXImFDGJtlLgNGV3OvqQzbiGOlhOE2yUNJSMVLLwl9SJt7co/biE9 P6h929mPzHWEnsQ8rljeOu8MWa6u7H3GmV99iy0vXEPQLtG5YdBXOTGwQW34FWm5YoWAeGbHeba8 uh/fZeXWzfp1lyVR0+Bizl1GCqCqzYYVZwq+Qx2v7Y7sQdOVOzLeXQpaTMrPts6vDm69dl6tnk+m V1ZNzeAQ5ogGcRAtCRdYgGSJL6k6DubLaw9T8yAR6IqqwSWyRiGR5EoqcbxKBOx//ikPqcnsxB02 UGbq9Kz+3Kz1hJeXKgdLbHrtBCd45mYKFOkynETBtVrO2lA/lwQrV1CwvDKgIhcpwldEni6DlDDu s4qnAfVM1d4yCIgDFYDTa5xZlKlamXCPNToUUm8+zieQudYuXh3evXunZlJVp1xNaEqwVcwZPzeA W2lB7D0cTYludeJUlJVwcwuvj+m5ybbeSh7XlWy3lw5bNSVXark1IKWkknTANV4QzvfS02iM2zy4 e4L6ea53VNYtQA+QP4BLzApkNXvk916glCk5H2fUhOsJIlTgtho3NjS78daqljScZqMtTZapb311 gBpee/qNdj0BEFa4AXyzXhOppXlV0aFPYuVnjB4eujtRnqlGSAXxc7mcUcGQSlhH7vtofYhEZ6NA 1K4IavWqIu4h9I6jusHd++fXb58vT883e7HqLA2a6vn5qfUPBqTzlE6eHn5+PX+MLS2KqPW5NiYJ y8gDkDpZ4+MO4K06ChKaQYArtk0EkYUQ8FpmcTDDh2jAcR4LOIjiMSFqAK7+KOkPYF7tcJZ4NNuO 9WvQH+dmd8cw6ah31c9LWVrlbjYSP9FGcztGzoYsbSGCdroVBOrO4gRUq23X2QZKMIbi66jmIp9h Bm+70eHAi4FMic/kN7VPbwhcJ64/toP1khgG2hcE24CdGc0ulwT9/WltC2A2pNXWrHCVVS27q5MT cR3CkTKH5XCSwdV4rbLnTEeJKmYlOL5Z60hQxPd9OAWINWJWffv55xdpveVFZSeq1z/PGVvbniq6 bLOByHIdEeEhJivBLfiTeYi5Mr5FdGf2n88fr5CR9QVuBfzvB89Tq60GhlUv3MYh+FaeFOx4zuhy dqCCdDrcW+TWB6JiAUzNW3ZalY7naleiGE01m4WT4d1dJI7tfnoYdmoYSOTtyjHx9MidDCYzTERw KBYT9Ml3MgzmFyuv2yiseh7P0CayW9WzSy1sK16iNQHQYUroIbEnk2kynwZz5JsqJJ4GMYKYyYYA WR5HYUQAUYT2M0+aRTS7ODx5KrBeVHUQBmibBTtKwlrc00D8HCjucPbQk7XnwotD0N6a1l3uifVI yPKYHNFLkQeafQHTEBmJPDzLcp/uVAkCN9JUGz8V9G1n1Pdr+IryVmfUHjGU0mSBHeQ7fU1YJYib uzQqWM0T/AIMgNXRKWP6RYanGWSV5rPlYuoXp6ekSvxCBtuJ56DkIvBHdqInEq6vrUEPommaJBm3 Dcvp0pufiqSC63wuPnug8jyHemYL4elE9mpNooOxMQVNC8PHFUpYt9MbWoXg4AyXPDseyjaerMUi dr3jXHgRLxbI40dEy2HYxlg7fDTu+aQ6FCD8nfMGF2Edyr1igLxJOb6F26SrfRhMAlyQGNERgQ02 HUhncHckT4t4NsFDkx36U5zKPAmmuNw/Jt0GAbaxuIRSiso4QqHfuiXwlhJCIdCk6GPC6dWHTemR 7wguDP06WU5mmH3HIYI1VpdUG7skr8QOd2mx6RiTHO8oXH0F8aOa11GPYU0a4Vcz2VSdQZJoZFuW a45ZOZwX4mu47wTtKs+4mq8NDoq5OC3mAQ5u98U9MZLsVm7CIFwQKBwTqY+S4SzUpjkmoJ8+xpMJ ptEcU5LzSckVQRBPAqozSqiYXR+hPBdBMCWewLIN5KrkFUXg7XXO0BSs0ZIbVu92EYRUv5XYQoUn Od96rQ4SctZM5vgz9L9riIm4gB95QaD8nORRNGv0FZooieG8OHZcy3jRNPTgHZW8GBDzVitgyrwq BZfEFM3TIFrEEV3frGFHw+lRVEnhhfCTpBEW1O4TcZnjO67ujtzXq/JSd/R6/IXHrPMUhiSY0A/j tZmWNMF6bK8Z9ae9IlqX/9JX2payxBUmPuU3yAJBeGT5Hw6NAhlRhZx+2/sT2GDtDEXj0YFsRdMZ yGwkkVnOF74YS8Rp9LWohcfVyTGiOIAaX737XHt1RRdOJs2FTdlQENzLgLNLILEH1PlZCmLT4Rkk eCYwQXMEIYMwIpmikPlGoglUbaJ9PZ0Qre/rTZKy6JL0IZp4jqr1nO9SiflssiBY1z2T8zAk+NK9 tpETX7Tc5a3wSdTmdwLcjIi+38OltxxXCrfnPS6wc0udc1+q00We0KjLBGF3MGCOeSNqaDOJrEjG tsTMcO+p4boNU/Hpg2BUEvol0WRUMnUM2aYMt24YkMj604KOmG/sEQ8fTzoGlv+rvAFtoBPLV9sR nEiMokehf555PJmGfqH6bxvN6BSnMg7TReCFsAFSpdw7yTtwxlcKdqylurxOjugHMGjraU2pCNon ixAyi5GPVt8BaIaBN8VGmyUcBrAfMcEe2iY5G7vgtvYmbFT6kBVMhWv0pn88fDw8grVoFJYppXPV zYHKLbmMz5W082S29yxShSY/+r/DWZ9gNdM53SAUuU2dbYKGnj9eHl4t05r16dQerbOFprZvewvE 5qrZceF5zaoa/EfZWqfNc/K323QmMtYZ4g4K5rPZJDkfElVUEGmobPoNmFmwhNQ2UWoCT4jO2HlZ bIA1SU11k7A42CS5ligx9mVTFfV5n9TSSuZrozXcKJGzngR9EGskK9aovtYZnKNan9T7rOkV2vdF hjHq62oTZc7Nkc7n4P3EK97ffoMy1YiegdrcisSRtdXVkSwiXUBsEsIRxJDAJ8y4xKThlsLNtW0V WvPHb/UbEdTcwhlEW+Ah0S2FSNOiIWzVHUUw52JB2GZbolWaz6PLJC2f/SYTCE3Dzygu6TUyvmnm DeH52bVUE25LBq4rmukreCPUJ6yudUNT8WKTseYaKazJ+yDCNWvd9678uL0uZtLll95EyVNZZ8au Mp4mhZpAOgkIERLY2wIkkRC6OG+JmVaU9yXlm7oHTxKiRXNXsODFBeYJyTYcbbdVrl9XNe7nQ1BF YMsuJK6PhqxaIGNcCAXkVc6VNFOsMyIRcb5qPUaMjX3j3lB2HF3P3heZ++B46eSYH1DPmD8AXiTX AKySKepCN1B4zksD0IDLRI2LjWDx4KmbE6H1iAGT980jIlQMU+5UpNo+SOxRkKgHMkROcTXWANun HnUgCKfOOYFXXQI+dLGQPbVMIEcqzRgkGmeYekQBt87gFQdIcfDDwv35uKsItxU1w7bpjqW3ZlZg J7RU/VU5Pn4KoKpw4e0lbal1BGvJTIqWYe0Mxee0Rg3IHQmYojyHFhtS7JAXEO04eiSgxf5QSh8s HJVcuu2bd7rXNYzzFEWQ1rgzGGAHCanj6rLBDJr9y8souq/C6fjFOsRNSjJCzWG8Q1mWtreP9F1p eJadqHwzY4G9P/21A1/vhb4YzDkF2hgkPzfZj8auDGGKuHiE/v3gMEjdXcWW74cq1eZXNQiuc3nY 3cuK8UsA4a497ZBhFeb7ppPI8j9fv15+vj7/pV4bupj+8fIT7SdU6jY5rzST6TSazMdAlSbL2TQY PbwF/vLfBCD16sSrAJpnTVplxnjdpUm49AZ2/TZ7FRyG3K4m2bZ0rrboClU3O+8YaLk/B0JmouEb tfz5RuRQ/sf759eVpG2meR7MCHGkx+e4gbHHmwt4vl7MiNThBoaQ5Ev4OSdENM1l4gldWR05iYzo GsyJuwgUWHHe4CoTzby0wovulIkiUZMUz9avbfhczGZL+rMrfB7hcm0LL+eEVkzBasu/hCn+N2IL +vprYo6INB/nYNR85O/Pr+cfN98hQZapevOPH2revf598/zj+/MTuK7+q6X6TR25HtWS+Kffegq5 IEkvBaBYM8G3hc6jUmWJhOySv0RLhAMBGcvZgR5AvzcWVGrXG5eTqOXZd8xFBM9NggKrrHfMbq9l Uoz+TQn1CvqXWbkPrXPvSC2i34+X4Aeyt9XNujwrHB0TlNXlqpSb/f39uRREXl8gkwk42xwwYULD vDi1bh+6x+XXH4bDtd21Rt9j1D2PtEfbePZ090VY/JPkbM4HlfuV94mzxL4wtS9q8x75rN1gkHlq XxBmMjONIFEaGR85kAB7vkJC7fP2Ttx3P3LU0ynkWFdlbYJxTB49Wrjj/cNhF1fQDnVL9uQ+kPeo a1UBa9v/2ynTYrBR5CnmkT98wqxNhy1nPWYnUM+c7fEDMMAN1/83kXFEf9Q2uUrsa4K0wNonE3De qmMIo/c9QjZBsh8Kxj26W1AnMvzhFJo1aJUUTXUGrYCTCBEAV4CBEqOoOQtbBoby0qxAv/NVk4SU tkXBEDAGvjwkgUiDWO0xE1SXDjjfmIuInVp5wzFjC0CNH6+nCzWvI2rcn4q7vDpv75C5qPb90Y6j J5klZGH6OuijeytPX7XLcthOVFvdXOkZ54inekjKsoL8oppduJDM2DxsJn63NXehpoy5j9utkmMT bCes44P64Yjcxj4j7PS/feZjXfz6AvnT7K8CTYD8jTyqqtw815UYswEjV1aia3oslkM1deKH2N5b c+H9D7fNFtRWALwXHUm7MPpn/q5v/fx6/xhLurJSPXp//B9sIijwHMzi+Jz6t0WaXVfn3b9pI4fA 2Zy8Q+XrXVV7vlGbntqYn14glajarfWDP//LiQYa9ad/PV6ArmpY76rAHH0sAvWvoaBL0DoAlmZC 3/BqmkSXd4v5a2iEg1faHFv/HUGeVmEkJrF7PByhDnPz0TEimmA2cVxYOmSVnGSd8Mtvle5YXZ8O nOH2go4sOyneO8507X+ibA23ct4Smcq7ftVlQ7ll991KiqIsrjaVsnUC6dFx1WQ/Mqw4sPraI1l2 uwOTwrVnMrVTSbHa10T2+pZsy3Je8Kut8ZRdpfmWiOoXvisQbDjLLk/TjB359d6LfVFzwa4PueTb cdf0Oq4Vq/l8+Lz5+fL2+PXxikX8USSj2Q+qFztneTf8YrrIgtl4UWggooCYApYTCrBM7cBSjeHN LdDXj0J28XPG1Qz59ywIbYpzmwDYq8TrOz8Bh2FJxKFJNyVOYiPctpRsq/bbcdH5EHilLTPsNUXm QsUfDz9/quOlfipybjVvkK8rTCGlwfUxqRxrpC4FkytVo+fK3VnPr8xRJykN5at4Lmz3GlPKivv/ Y+xKmtzGkfVf8XEm3nQMAXABD32gSEpiFynRJLXYF0WNS91TEXZVR7k8r+f9+oeFCwBmkj50RRvf JyyJLQFmJiyLVC2t4mhddKvE85Xbhhom2J8p7Wzk3clWmXG6j1FCstN7qti2fulRaWTgSNfMfRsR zq9OVxUdj2ZSwW5hBpBhDvSKcCkOMgQm1vJLS8LU578akUUXGzHeXajU+19/is1/3jjALUv3l/T5 AT9aTDB1hdKn2kHOtV2IvH5kLr9P7fl2BRQWwRdDPWHLgwhSuRXc1UVKeW9ZY5xDHWnoibbNfkJK 1JtVMmmKz0cw8pueeMoafiZblYyOcPd+QyWWNY/A4D293PtF2P6RtnTj8J3kxODhghAFHhPqzLfu Y3Xl4aw8bRIM3gAAEh6f3ZhJfra0oRenirDpMGdqLRyxkx8X5qV6mUZ6xpMFQamnXBSLwrelitVk KaOIBICWjge2xbGn7C1icp0NPj1FoU+iGk4Z49xzp1zRHttmlte1kZ4tDKw5UEPtvtpuoL7rfwWg Cj4/v73/EOeK5e1st2vyXYK+OaDaJ447pxqsMVjGIIYLGe73yC//+9zfwE0n5bGQCxkeu5POlEdo jkyUrKV+bFnx2RiHTh8mhVyMC9UJcH1HJ6TdwTGsgUaZjW2/Pv7HNIwTGfYXheK0UTlFaaSFvw+P uGyfaYRsAxzMU0PS2T1z3zWBqIRh2YcIQJFfcLSmzMMAggFYrRi7pY11/2HDfKW9gekQZAIRRyoZ cYLJmeceGOnAopDI3CftsWKcLNSzZU3egv6N46NmdWld4pnp6NWrRdpfKjuAW50lmgE1RO06NzmM ToaTVZ+sfmV+om47N01eGO3kZ0qxyXshMcvdJJ2Ya59u6YV6BNqxB4LsgtDoGzOdY+kESTdONEN6 u2nnFdaJ0z24ijunkhdquvlIo6sZ7dIB+iuQmQgGeJ99XM/9lnW3k+g0Ie7b4VzNC+s1o1m6dAmL pDUMUIMegz9mWSQKRrYexCYUR9HPtq/7gBVtLcuAjXl6jiiCx+5e6XCkvkajRQpyipxKUb1pCmLM vGMhEn7SqCPxg2i5BqKzfBIsiUox7H3NhGgAORqbjIgFUAsEFKyWHHA7NKIJxRy0pxomRrVhfjQf XbvktMul8QSNfQLAvWUg1Nymi/0A/oo91iuL4xh0PxnWM/Oft3PhGLrJxP5r3B6InHR4fBeKDGRC 3j9osym60+7UWL6qM5AB1RtJWcSIYQtkpPtoOofSK+LZcR9sCFpJbUaI5RojgLlJmwCJIvAXMfU9 COiiK0EAhgE+sT+PWBCkn1uMkCK5RuDDRhpalGDLkJ+2aRRSeOEYOdfitk0O0mhUKL1ICL2e+8Bl GPVlCvFWOdukIsF+vr/P61ZlMqJqs4NM2qZ3neoyb6sUGA4qshog7LbO8wwUWHetl8WVij9J0dxS x9IEJdYtbCoz8LI2XHzySr5JRcm8EVlelmLdq6CBqDdbMXLAL5omKYCkUAQPQvSwpeHYhxERmjUU bd1kcLrdQRXcRgGLAkhrGRi9u7BsA1TFbZvukW9AI6UTx6ZTJ1WShXJ2ZUB4W83lKwDqtdV8VO2E 3pdAdRIAZnCvCftiHxLE9GmSfQBewhnDKpcTbF4vdUE5S/0t9SnUA2LyNYTS5cqUxSFPwIDJI0Nt rcFcfBqIIDn1EBKVxWVZBqcWGINrnoaWO0JaUxJEoTI5lGDODAaHwj57BgORj09DYHHSADDhVfAE QqDOlBCFNDOTEHohUA+FkHguYgWEHAZiYI9V11YRBTY3jTBwz5RPxq1tUYrDoHBUFsOn0HhQEGjt bTFiYO7oesdAJ1VpzRCFpyqvTS5faYcCr47vGKZh4AMF5octJZsqnR+IR0oTiXVpWalLr1dgylQh g1IjD0xlwMisogDkAoNBpHKo+mUF6vEGDBbMwYI5vLxUYKhkAwaGqEgFpRMHlAGKsAJ8YJJqAKht nfKIQfNdAj4FRt+hS/UdXdF2pnf1iKedmJ+AuCQQQV0lgIh74CyRUAxeG42MOq0iaGCpzzKxNRfq amYY6Pyo3XQtbMI6MvYdeAFj4JBaJJLZX2ByCk7XJWvlUVOqcrF8La2vuVBXfA8YQQKgxH7m1IBC ecu0LIWqTf2oWjpTDJSYzovX2IZBq5vQoILwKkNRVJXtiGzgNIJmsYIY9J7nyOi6Ngqg/qmqENqH xKpFKM84fLxsI06BrUgBEXQQFLLlFACKQ0K9GGqTRFAfz5HCKF3qiy6NgNWi21dpAEz9rqrFAReq jEKWFnlF4NCwEogPfiMyCdDMEekBAZYTGfQ7rU9K6QSqKuCQh9AX0ZHREUrAyXfuOAVd/AbChbMo YuARQkKcwH7ZEyMm4DlPQXT1x4A0VHqAVSgO5MaPmq8Z1DLiARgdxeaEliHwBImJud9iSC6g2cgf wzct+kSME0g6Sv3EAb178JCod3LnSmwPN50kA/mWjmfsjNOKc1shAy+CAWR6Ul7lzS4/yMAMsqbH 7VaeipNPt6r91XPJM41qAC5NoSI43rqmqJeKy/Jtciq72+54FvXL69ulsMNxQsStvANQT74vttf8 iYyhIcMKu0/AOz/BcweIi/WVBGlyrv6slrlSvSw/b5v84/CTxezka2KJ+0BiH5X4/f5VWqa+fXv8 CjrvqOeJ22N6y7oWKmwa5oLKfO+6kpukwJXuv5Et5uVWrE73i5nB7Rt67pJ06T47GlN/SHF8X8fk w/GSfDqasaxHSDt7K7/JW36QIz0DWDL0rrIOlpl4M3iwclNCuzy+f/n30+sfH+q3+/vzt/vrj/cP u1fRgpdX54v68PO6yfu85RCaddOYIRaGuj1uu0kqk0eyvudCgACQozIMZsgvQiir6UwGYp+9MDaR qe1Z0smgevgHTOhX/SMVAwTOns9F0cjvuBCppyi8rU0BTF8Ny6tbr+nLhnYzWS4/uyzj8jzNrnAj ekqSfjzJZ6pFPczWJ9lZhqIXcwerYFIWlXTqXCRExCOI6PNNeksZ91XJ46hQl5l8Vp22lo+VCKUO uekVeW2Lrk7psjzyU3NcbFSxiUQxOFolLbwNX5KtWIvRH4bM8/J2gxNyqf+jqGg3IkV51UjotpeX kdiLdfrGVS+Nglao/LrhhjmxPA4T5mZ0OLvd0AOhp5tgfcKrT7MBMhRZyUB92jDTLlgiLNpEYyOG vUqZvrlFSKUYmdy9cua2QKTzKNriv4p71JqrSbr/jPaQHIB5LU5wbHkAHorYY3hHH4o08ghHcRnX JaGzGTWY8/3yr8fv96dpDU8f356sXUAGNksXKyhydvzRBnszLPP+h4IxZW30pQwWemzbYuPEFWqh iFGbtEpAugRmlVJuWr//ePki3WXmL+gMMttmzlYtU+SHOjMsngzybpiamsykozzygDxUWHbvaj+W KdOzOIhIdYHejVA5XmtqWhlNabPA7dsxSv0NfodCMlw/gCkNyq9H4KjVqkDXfWBMZFAihxJjD0q0 DthK4nKvB21rR9S0VJE59YqG481nIEiE+YEQzLMLqS07rZkA2RPw8lqBllOmEnNK5JuGYKL9JcUE oP6qaYjEVN936a1O2iKFDWIkLDKsEdcXmblWkT+ekuYB9EkfyWWduo4HFoYGQRgPB6pH032XSVfT lQrJ8Grq4PszPMwDf6LVSBAGxfjYhshb5RL+LTl8vqXVEXtrV3Ie8sqRsQFyXlfc89xe1cnwZeeI hx40NfQk1jZG88l9jaIwhsfDSOA+dKHVwzz2Infsq2TQdGREY/hHMcer0oUMfP9lAM1PWypt0P/N kvLPKsAKbOYgf3Uu6rxRvq0oRRyJoBcGJWQYrI17qE7pv4e7qa7VsMofsk038S7wGN5nTRp0Acfx Nk8XHlmWhMKPwuuMYzKqwI4FPyZitnKK8PCJi2FoLevJ5hp43mJZn9rUvOWWaVbEdMfQQOJlzWIf l4A0+eOQZW+fd1md3NFZJ6VQ5qG7mroNiRfY4c+VNwd8uzYLaazK7N0/3FJ1OvhVbKiq8jZxpNO7 ioC5xWC1DJgCmYlU19jUwnDtQFDEcsasj9/dpfQ9Nu90kyDfwV0epZeS0IgtjZyyYoE5FVV9Zv4w atIjfmxK1dKOQ46WpxNtJ2QTmG3ZSqWhvivCSyVOqsgrQD1MYFMPDcuVFKm4Avm8QO6Ddio9yMhs 3PS3Hrim1BMAJUsigef+dN4G6PulAtMsZr4xvof7kV69Bnbving3seiDl3eLR4CxiHwnLzetuNhD krb6hIBtcc3FQDqWXbLLIYIM8XhSoVMP7akyrdonjryhVRe0iyyx2e/09IYgV32YwCTtOA9hJcJg ZQFDtmGDpE85ayx1aoJuuSbKcLgBfj4cmFZKQR+ycSgBJEtXobcQSjwUsVY0Yxgkh4AF4GIykfpN f5ZetGXMvADqWAGFNCIJ9DOxzoXsCiJiHzS/sjoI2G5lDw8OLonAUiy7lAU8hrtRgmEEfXOeOJCC aqMB4hxpsXjow0cfhwXqkTZHq7UwZDuKOmAMW/JbLKFT0xWB9Cc857UAC7ceZbEhHmNVrDkH3wc0 KEKXtr/62hiFFSubFEDqlU2xjwATJt2JffDobHJcPdvAzpx7IThzFcRxKEZWziZp640M8SGj7FjP p8kwSCviaDofCwhokqozYtM5kQYFeo1W7gL3YeoZSShmARGdCQ1yQ6cFMWrZQ9lYYD2q4WIRmmev /sIYwesZ6AC8MCZ3SbBDB811RZKD9rooyfH7/JTB/IDVI2l/9jK/RMmwjDJdetQ5UXoVfR8xCldU wfNXKS1cnPbgqwj1LtOpbHMueSilSYpDu0+y48WlWQ0YKm8q1iYg9KOyQ2wSBuIma84qAmmbl3k6 v7Ku7k/Pj4PW9v7fP03n2F6MSaUuK0dJWmhySMqjOF2cMUJW7IpOvsOEMppEOpYjYJs1GDRE58Bw 5exoDoAxNsasyYYovry+AU8jn4ssV4/HzwbZUTmKlGbMvOy8GQakU6iVee8P/nR/9cvnlx9/fXj9 U6rQ391Sz35pKBVTmnt6NBDZ77nod/AIqXlJdnYVbw1opbsqDmqNPuzMhzhV5tvL4ZhZjYMaYYl0 jBQ4NdEZqZMcpfjggwaWmcote/7j+f3x64fuDBUiu6Sq7CsqAzrknd19Qp8QEkpq+a76ryQ0oT68 m5aQFVRNobmMGiwWCGnIcSuPbSv+IF+OBf1U5tBz832LgTaZk3b2mUVJUi4w06jXFgX3f315/AZF cJdk3e1pmbTQXYx6Ga3VgYmtn1VBiByyVQ26sxcixwyVZcmR5xzGAm+b/AA/aDFRREK+UIjm1EUC qwoTJ+vSFrv/m1h5d6xgS96JI2OW18hDVhPrt1yaNvy2xirl+2abFL42nXgPoswUvl83SPINOTgK 5kSqkmatgVUTS1/AtZwOF468kjJxjueAwGcLi8Ngh2SHc1vLqU5S6sEHCYsUsYVxbbCQoCwTq819 REc1OIdY1IrCdwMubU2erejiK+yp5pDWRp78EyAP4bis1SYqFnxF4rLg86jLWpWWZIU/Uy8SrIv+ Y7xeecnB9b2RxNa7UNqQro13QSLY0zImSyzBfLUPT4e6RPwTJlYXIm9PG5Qj5gRqck6184YWxDrz gK1NwXPqMeSjoUESKx4cQnziXItGv2GCRImemJ9T7N0jpfdf4AHQb69iE8Kb9Llhob+Qt+jwS75Z aktLKfC8X/Ly+PX1D6k/yHhEwP6vK1efG4HD1dOMfSY4C7gakaHXu08g9fjn06TPLNYnOXkcmZe9 NK9UHA/n4X+z1QKU0iWVHri1Eu46Sdicsh3ynMtEypBDXlu1+rHb5ozmsKEpVTGj02MtySgxaZ2v GYZO9w/Z1L89WuL9+7Jw84pyQHTt6+/vKiL70/3355f704e3x6fnVycrY8AlRdPWn1ylcJ+kDw3k B600xraggfMdXp/k0mJQWaFbAXU+HLVx6ykUdXIs/AhZVyfCwvJVNXxhp8vaDTzwdd7ioFCo/1sq f58gcWANHF8cHvL8AH+y03cJTS6mHL7yVkmM3ZSp0rs8CaIQeTdU1y9JosgLYeuSIZNtyBGHb83Q nxax4+jmtKXOJc6UDhyAVXolGl634C+qpCyPKQRlldjzLCtjkf10l5A1xTlHdGBJFGVS8d8iT07a n8pQXm4sEfVhr0r/2coBJs/F/ZMRtpeKWGwkAV1tZL3VZchapXGSfXVihtjUSY8vX56/fn18+y92 Kk26LlFPeuv94IdcW57uX15lZLx/fPjz7VUsMN9l8G8Zo/vb819WFnrh6s7JKbMtO3ogSyIfURhG Rsx96PK2x/Mk9EmQAnlLBAxJofGqrZnvee79TNoyZnukDenipAJ9yJrgktEEqEd5ZtRLipQyeKfQ tFOWEOZDH+40fqm45Qw7pbJ4dsdU06it6qubLg4Qn26bbnvT2OQS8lOdqiMwZ+1IdLtZrDbhEJJ1 iMZs0qdrMzMLV4PIztKKfen2S+BsLmcJhEgErInBF0S86TiZyVIkBiGQGM4SH1rPChTcD7OSh6Ji 4QyQazOxH1A2AXhb7IeU/L4YgXZow4SrA2I/xWcAAbxnjozIQ47RPeNCOehiPcBxbLoQG6kzkclU MpuC5/rKKPUGHz89YuRAfLTG6XzsKMmBkXVH5TPgvje7AAWH6P0FHeWR7meodI4vEWrkRrPW6uTZ zJbJzEfGOUOMFCdGgNxxDIyY8RgyIu/xB87JbPno9i2nHiC+UVSG+J6/iVXkP/dv95f3D/JRKaC7 TnUW+h4j8IWUyXHt96zS5yVNO9U/NeXLq+CIFU3auSCVkYtXFNA9vH0uZ6bV8Kz58P7j5f42lmDo CkLZpLqTp+i0Dl/vyc/fv9zFdvxyf5UPxN2//jnPb+yMiM3nWRXQKJ6NMccyejj5qReIMneyDxoD XhUtvcdv97dH8ZsXsVHgh5Z9ESCPy/VVq4RkllZtRYBvCCdCsHTmlIRorYh4aVEUBLZWB4ZE2dOE 49mjCWK7NjBo6K8RgqVKSAJya2QQlmspBLWcQxD68E3sQHCj1AA5IKZSBmG5kkGIRLoYCBFFoiKN hAi5gRoJa30RrbUiWpMk54sT43iO1+oQr4k6jpAb+IFAGF+cOuc2DJHA4f1608WVh5xSDcaiji8Z WKD0kVE7hgdzRrdaj44gNg4j4+yt1eO82pbzclvaxmNenSLx0zTncDwePLLGqoLqWCIHXkVosiSt EDuanvFb4B8Waxs8hMnSBq0IS9qIIPh5uluaboISbBL4+cNec0Peqe4vxjqePywN4zZII1bBSgS8 j6mNrBRpkJv9oEQFfFG4yUPEFley7BJHi3ufJIRLDRME7kW3c1qBbbMaoFqw/fr4/d8L97dZTcJg qTulGTny/XckhH4IVscufHxFwFFznPx2LQnd+ykjwP9cMdH3GhJLpjuXPsv0mlHOPf3aW3Oe23lY P3OsUk4HZYGsq/jj+/vrt+f/u8trXKXGAaYR6hfyhdG6BK3yDVInjv+cBobm5qCcxkug5UMxyzey 3VNsPOYcNJo3WeqmkSBFKDCCwaotPA/5YdVR73rFaiZRZKDNaIhzi02jIWRk6pAIQyr7sSMeQXrg qj4EY1jgeejvfBSrrqX4YdCi4lF4hLk6G8TU91sORmGyaPKEEgZLo4ggTdymoosRsSmMLmBssUTk lzkut20qDgOYTDlv2lD8tEMKPSWx56FzpS0oCWDl16QVXUxAt1yT1IitA7APHPuWeQT8GmMNyYpk RMjQR6Sk8I1orm+uc9DKZS5p3+/qvnr79vryLn4yvlypvEW+vz++PD2+PX342/fHd3E6fH6///3D 7wa1r4a8k267jcdj40KtTwyJ2Xc68ezF3l9AIpkzQ0IAakjMEagMwcQEMV2IVRrnWct0IDuoUV/U m5P/80Gs/uKE//72LL/JIc3LmuuDnfuw1qY0y5wKFvbcUnU5cO6bTgdT4lg9kfRL+zOyTq/UJ66w VKJpf6xK6BhxCv1cih5hIZTo9l6wJz4Feo9yPu9nD+pnOh8RqkuhEeHN5Ms9zuZC9zwezqk0dEbE OW/JNXZ/38/ZjMyqqyEt2nmpIv+ry0/mY1v/PPx/yp6uuW1c17/iOQ9nujN3b23Zjp175zxIFC1z o6+KkuPsi8ZN3TazaZzjpHe3//4CpCSTFJjueeg0BsBPgQBIggAFXFGfy50I4ByXi2sJ6sahA7Ye 9R8T2oVu03q+VjOTxerJu7/D8bIES8HtH8L2o4EEK2IeABgQ/DR3gLCwnOWTXi2spCOXcSycpvN9 PWY7YPklwfLzpfNRYxHhJGYRDWYj8ArBJLQcQa/H7KVH4CyccHM9dbmNM1Jkzq9GHATWbTCtCOhi xh1wVafBej6lgAEJxINMQqw5/f89noHuQm/aIib6sZ6ajMc6ketlOVyya5fX9cQFJEO44k6LnFXf aFhLaDM/nV+/TkLY9z3cH57e35zOx8PTpL4sgfdMKYK43nl7BpwWTKcO+xXVsosR6QBn7pxGDPZR rtRLk7iez91KO+iShF6FLhg+icsruMqmjtgNm/UyCChYC8Mm4btFSlQ8G0SJkPHflyXX7veDNbKm RVgwlVYTtkb853/Ubs3weSSldRfzIapk74xkVDg5PT3+6Myl92Wa2rUCgFIdMCQQtaRWUajrYTFI znr/+H5/PPl8OmsDYGR3zK/3d7853z2PtoHLIgi7HsFKd+YVzJkSfGG5cHlOAd3SGugsO9yuzl3O lOskHXExAF39FtYRGGquaIL1fXW1dCw/sYc989JhV2XmByNeQsk6dzq1LapGzp01FEpW1AF3KHnK c95/L3b69u30pMIfnj8f7o+TdzxfToNg9ov5zGHkUdGLwenICCoDwkYfmeKq7fp0enzBpOfAKMfH 0/Pk6finxe6WZ0jcZNldu+HkAYrPBURVkpwPz18f7l+o5O1hQj3I2CVhG1ZGGuMOoB5lJGWjHmRc jncAKW9FjenCCypKRlyZyrXK1HVVG0fChsYlCKi9ymZk5StWOJWWSPJ0gx4ydrmbTOJXLS3F2ME3 UY8iqoMGM1mj22yRFsldW3EzczLSbdQjniEsKIUsdrzSrk6gtYxPNhCkPFS57uUoj6FFnBZh3MKm L243ospuQ/KhXTdNjDO7KwnPWowaRo0Vp8GHw3Jyi95UFFblTRuy+HaXwxOQZvR9JhbB8ElsC5aT FYyix0iRzjx+bj1Jvi/VWdb1mj5oHtG5NydGpl1fj7UFUWXW8Wl/QWyA7VarMOaeNPGIDrMYVoYX nRfNjod+vLj25PZQHyJ5g3F2N54XMfoT3iYb/0wmmfvGwEA2cep+xFB6/HFxUSdhEnjcOBH/YU8H 30VcVLAt9fQJcWWY87RnxPjh5fnx8GNSHp6Oj9aHczBmDVElYjN6xVDrBWNVftEG0fnh0xfHfRmn QT25FHv4Y78a5f51OjSuza6M13m4Ex4vZcAzUYFuaz+AFPLMUJLNgmZuWtf4fhsx2/16vlxZIcd7 lEjFdRDQPGfSzBf0tZJJs/BEMehpMjGFjccHyrW4J6l4GVoSvEfIerU0TwUM+Gq+rFwO3UXFXt03 eOYq5UnIrOygCK3jNxZJNfN4wndc7198wo+T4Y7OZKRYYq8fF+NbbVB3kmLdohI8r5VaajF47Y20 tV8q0DM5j4tBiG/Oh2/Hycfvnz+DJIxdj3LQlCyLMcOSEYcWtkdFLTZ3Jsj4u1NUSm1ZpRj824g0 rTirRwhWlHdQKhwhRAZTEqXCLiJBc5J1IYKsCxFmXcPEY6+Kioskb3keCzIlTt8i+jWblcZ8w6uK x60oLDhsj3mnPaXTVi1S1QVgWet16fhrfD2cP2nX//ElJU6OEgEkLwG2zOiLbCx4F/EqoIMmADq0 cwQjBFQ0zAst5dUnkrUXCYagJ4X5Rp0A0KsBmYzOUojGW2LY9PAbw4Kjk7r9beQs7uNMWtWCIPAs QcBWYufFCZ/PB+BSvp4uV7REQH4Y5eq2GvUbETj79Z1P1misDyXpizPEjOSMhRVervIJL5xXXsDq EvTDG8Df3HmeoQFu7pO02GRRxEVBqxtE1+srT5QWXGygyrmfcX3vP9T68VbKwBwUOSWmcfLccIEK JlmzoS6NAKkNKoPLItDd+3qxNJNCAtxIA2t+DxVoy2kv48BteZF5vzAevDh5ZMzPjzfajgiQ2cr1 rumv/SkFokRVdLj/4/Hhy9fXyT8nKYv70A6jIA6A08/cMZCDYIaqQUy62EynwSKo7QRFCpVJsCCS zZRyy1UE9W6+nH7Y2TVqI8c4luiB2lqymqjjIlhQeeYRuUuSYDEPwoVdVf90xG41zOT86nqTmH7S 3SCAY24207lNr600m7aoszmYZ4Ziw/ziqUi2tT2DxiguFDd1HCypm+ILiRtG8ILpAg6TFavkpiSv XWg+sCJrb1NOv5m/0MkQdvpUop4LyTgIjdEVHaf6zfJAs17badEt1IpEjcMwGcV0iDgKpQKWXVOY IUQoVaGOwU1g7HhqRjs7GPYqLSlcFF/NpivPhFVsz3LK5rnQdIEIzTOsn6ztvo5tnFlxEmGDVJBS ZHQcdSkjiya3uEYJl62Ix5IEgOYo4eclVX1d8Typ6cdyQFiFtySqwYbGk4NVJ5j1V7DhlPf5eI9n yViAsNiwRLjAFAue6kLGGhVw6/IJNbhq9u6oFLDd0E51isBdki5OVKM6ZUPtthWqAWs6tfsV8fRG 5C6sLkrolgMVScTzERhPBqs7Fybg153btS5Nsad3rGiSsLIrykIWpum4IuVB4asHBlkLZPVoulxM nZ7dlWBgShsIXJMUeYUZi4xtVg/DEf8wyTmePTqzwNMwdyEcZKXbc55Sm1eF+f2GO9OY8CwS1Wgt JJuKPjFSyBQ2j4WXBbZFWvMbq0YFcZjQrLAokhR2QWGmY3tare3Azk5jKgySKlpfreejMjBMtT48 hW7uuFuiYXgiQ0XyQuxtmAK72jO3E/wWI3Gw0dzdVaMkUAZaYFIat4yofUvwtzAy0xIgqL4V+dbl hRueS9gn1oUDT5lKJuYA+eiLpzwvdj7GwblBeeTU0kHxR1la9lCPIT85Yqsmi1JehnGged8qmlwv pj6RhfjbLeep9POT2l1kwKHcXeopmrvu0LPwbgMmkVfgt7BtV0vV15zAcHPFph5VXOSgUTiV7V2h m7QWvRy3Cua1j99z2KckLnlROSE5DFwJu3EQn7BkrU9ugN9SDrBdhnnMqZM3ja7D9C7f29NcgmQG Te/2sgPDHsFXW0cwmBO2TOzRWPUPumrga3pDqohAfuLnp5PwKYpKZKEzmAp3SLHDSFXBWFjbMFA7 WuxZsEw2eeIAHbWlXuN6eVmWnOOxmltzzcNsBIJVAXYGd3RPFyDGGUImRoILo3eG0qv1ZBZW9W/F nV2ZCR3pMVCShSO8ilLysfiptyC8qN2TRlaNrLMQRmie8BrQUcMNmmltKed2602w+Z1Xhdv6bQh6 1Ms4t0JkhVdA7wUsEbsVbMKepB7iCDtFfBeDjeYVLjo1ZbttIrfTHYbBJMCGSf/yWWVpKUfCiZVB 4GYq7x3qCQO1T2FE29MqdIiIXUFgHOt2FPpq1qosOkH75fn0ero/kekMVQyNyB9DTYl6ciA/acIl swI74hWgPdahUbxBdKx96+ZwXJfKjyhAx/hqVFHagcBfL1mFvovM4oncaIQkLukzYJaNv2ayeI+0 GjPmvNgy0eLhNBhu+jDc/tSjkJ4I7HIzOyFnQGrj8RuVUg3RTVqKNjJXk64qz/UW12oBNqkw0FC2 W2bznl26ZNZmU5XMc9B0jLc5v+0OR4hQHtZjWGSbUchPHVVIpz/FQ30ha7epDbQgclEr5SI4rbJU PVakSs/8FHXiNgAgUGZF3LA6FZ47154uFlKli+V7kKM5ZpZtKAXdk29kZk8l6lz1+RJeqQRmOuCt ObMYvLYBRZbHOqHtvwJ3/Y4DTqkleXp5nbCLH80oj6ZihKvVfjpV39tqdY8MurXNkAEeRwkjY4kO FMghVEmMdFTBdl6SeU8uZP3JntUnfumTC60wnylMfVs7a0Zh6xrZUsJGOCawuq8udCNTunVP54p9 E8ym23LcQSHL2exqT83mBngCSiHKL57D/XwRzN6kKbq+eQkagsBEz+bBuOMyXc9mVLcHBIyN2vRc aJh0y1ZrdEC7Xr3ZXaxaBePB+z2SubvcsOzx8EI+LlQrh1EmkRJgFWqMyh7ubZy5na3tnB+qgRyM mf+Z6Kh0RYXXO5+Oz+gzNjk9TSSTYvLx++skSm9QDLYynnw7/OhffxweX06Tj8fJ0/H46fjpf6HS o1XT9vj4rDwWv2Gg5Ienz6e+JI5ZfDt8eXj64otjm8XsjUBeovTFD1diIM7l3B29ArbbQlIbmAsB runbKizd4pn6knFFHQso8XzL5vYXQIhSWPYqVWDsRm/6lI+HV5ilb5Pk8XufH9hQ3W7R0QLXFYal HIGDMcRqOTl8+nJ8fR9/Pzz+CmL1CB/q03FyPv77+8P5qFWaJum1PnoYwgc/PqEr9Cf3k6n6fcnj BgIiQLJLUlew6wNFJyXHLdLGJ13ZFmNV8NCxBjpoP1QKNZrEAZO5Om3AXA5uHXG4Mm8FDODI7rgg oGcg5VNumr9qgj2LH7dyRA5wLGabISP3UiXsM3Hl8AKAgitHNcdN3ewdocl3kieukk+KujtHsm03 r0TujkHh/xW7Gq/MO5VO3FNWxM7pjVI1dSycQ1A1BDyjBiOmRMPCTL6M8DbbgCKELSJ6hZL+MmrE AsyTaJeMImSTCQmVWK1CMBV3IqpUSiSbE4rbsKqEC7YdT7U+lrzWWmIj9nVTcbd9IfEYZOO5bwCC OyhEXc6q6n9Xs7YP3FrRyoD/g+XsjVDDWwl2J/wxX5JPRk2SxdV04bALhmOF78ErYtjwKQqpD6IH hi6//nh5uIcdZ3r4QTlMK5W3NfyIch1ys90zLnZ2/bgpaHe4YRitw3l34W5s+zwt25ORhG4o0f4M 4q7khnRQP9ualZYeHqCMOtXT2A1OtfksSoMb0MbW54PfLWMeWYpIN+GnVd02nkvZxdSyO6cyf6z3 425LDJM6c5JoDt+t/vF8/JXp55PPj8e/juf38dH4NZF/Przefx2fF+jKMdJ+KeZq7Mt54H6b/7R2 t1vh4+vx/HR4PU4yVHIjrtKdQL/xtM4K+1Re47QLUI/3HjG83Z7JhagAOm93d9OGKNkdBOAegviK mZ22U8WMbEIy5iqQ6rX3wwxCqeNQ+vdVQ9VY3K+1ESvjrS9nLDYtNhmajnTHxh4qqsbS4nXdCGjf Ytt6wn4gCYtWvlyAgN2pDCRZRuZoQXyDj/rcZhu59RVoYNziCr7V1O48XnviJZd11KD692FrHzYg cCvpvAhq6gq5FVHoT8kLNFlNuyNlPJO1YNRlAB5r4F7d8B3BnbtyBrn0+AJr1Z2IdatzwamrC1ak 5ImjoosqVF05WgDbW5T5eaL2rjqgCo/Hq1EVC8tm1GQo51eLJXUqrdDKE2XqDEEBAwo4H9WvIpVQ 4SAH7NQMgqegOuWXA8QcXeNWO2h/WGW37c8VrdrGjK1UiMUBazvadODllPTY6r4f32HQY5GOCqqO Lr0lEW1l1FPQPstlHdaNy0eDJ5ANZLNgIafrpYO4ZJi04VEcrKfjYXZJseXC92hA847Xy0d/xiFh nF2sZiHm5fLXW6dseT3zT3OfznnMgOrpml3ZkJN5pGMvC0Vtqj8+Pjz98W6m44NXSTTpvKS+P+E7 FeLUfvLucrnyi7PUIrTSMpev0z3mOh93Md3D9/HPB+bo9GNzwVbryDtZOrkwcTo8LEBf3D5dvEvM 5qeQSTaf2S65RhQkDClan85gSNhyya6jqtfL2ThAPxapzw9fvoxlWXco6krc/qy0Fpl6MeUMpsMW IDq3BaXZLbItB/UfcfMy0sJf7lJpPCsbbxdCVoud8HgNW5Se9NYWTX8mrp7Bqal7eH7FM4WXyaue vwsn58fXzw9oTOErys8PXybvcJpfD+cvx1eXjYfphC2ZxDcNnunWWdC8gy1DYNKfjzTndcx3Pxtr qVzJcs+c90Gw+40qY6AlRSRSmOt+bmAtH/74/ozjf8FTmpfn4/H+q/lgyUNhXiltRA6GRE5ZYRzE cAvCFm8XJKsa41mGQo2ubxDq0Oi3MPjcwXz3qFBOXrIOxvCtQ8Ysj2HdkSz2vOtTaL5aesI0KrRY B9crz/LXBPOpR0d0aJ8K0Wg+n71JsJ/TPve69HLxZuXLt7uGKSvfQK/mb6ITnpMJVWuG73uM5JEA AFW4uFrP1h1mqAlxo9RiAzbOQt9dGaCiZjO+IJN3OcMXOYb3trxVUGtH1BX3NAqoNit2vHtg9BZZ /+rXOwAkAjla0iF/nWEMq7bZ94dO5oV+vFisyKjlIkvwQbkQreMaAz8D6rATT6yUN0zaFrbXgImh 34IYFH7PpoaU2fhOoM8gYOUmjIp90nDPZSKWwlwaPKefqO7ikrLfd+pQFEtZTSlo7sndorHocSW7 i+dOEBGXtffn08vp8+tkC/vz86+7yZfvx5dX6vp9C7t9N/fCEP/47Vr6sSQVv9O31EOtHajlkn5h BUZz4rztGnD79ZWRWWK8xDqyMtNi/LKW+r11W4rSOEFl26rI+FClIbA1pgBDKyy1l6PBRx2qxPsd 2nF/oKkjcpfdpWI1eqIBXTBqB+icAfTgtHyjarzqrq2tlULcRMoh7GICUTt6nqZhXuyJlxja4m3B BivTxjgO7+CmBpdNtcH09ObkXj5yh5y3UVPXngV7IVLemm1RQhviJ8RJSX+RoTtVQTXaszy66rP0 xmCE9EYFHCiKm6Y03Kk6QqiPl2FliG1tsHeVXCZ/gHabQ5ptLlSwV7peeOJRG2RSLH2PiR0qT9Bn m2pBGxwGEYsZX3kS2plkKsYIWNLUJN8CQ+dpwW56w449nu7/mMjT9/M9cSIJ9fFdjRbNcm59mCiN B+glPAhV18CnsMUHmW1+mZJRqwjPraqwzZB4YGkB42vcLKTJ8QlDJU0UclIewBpX8ZFMn6P+lcZP SA0zVbWkDMYNraLRf0nX40r46vjt9HrENCXUtg3TKtUcVgEjBTtRWFf6/O3lC1lfmclEP09K1A0H AMgOa0KtE+mmrSaMlYsPWG5FNfYYkDCId/LHy+vx26R4mrCvD8+/oMl///AZZvlygKv9wb49nr4A WJ6YNY7e34tA62d459Ph0/3pm68gidcuBfvy/eZ8PL7cH+AjfzidxQdfJT8j1VvD/872vgpGOIXk 6n56kj68HjU2+v7wiHvJYZKIqv5+IVXqw/fDIwzfOz8k3vy6eC4++rT7h8eHp7+cOnsrAJPM7tsd a8y7EarEsC38W4xyMR/QtthU/MMQxEL/nCQnIHw6WVGLNAosjF339BPsz5hnsMO0AiIYZGBVoULE y1La+jZpUfNJUDaEjDLp8KhJliEzX9KY1cBWBaxXdzwj37HL0Fu+s44N+L5ml1MK/tcrbLF7dx3i qkSTt+G+DNaejaCm2MgQ9By1OegIuhd7brnONzSv54trajvXkYEanS2WK+PM8YKYz5dLd4DDGaUL L+sckwNZu3SNqer19WpOWfIdgcyWy2lAlOwvZv1FgYIZxiJRAawevCn0xFrHXHIVvREUnjP2vPZk 4gJDOfIETChvs9EKFtUHFRpofM2Ju2PQrUBgrt8R/aB1S3SCcXYRURFWcVuXTPhOIbSnCJQuWG17 jAyaED0N4Mco073GRBXLZB3hLxamLrYWeMbD1NGs9l7a3oEi//iipMxlsJ2zTHdRbztSJBmCia5F LMPE1irreeAWhZ9tuQ/bYJ1nyt2A/iQmVeOkQTVolObWjguXNeIg7OdciOzecLxVsboiD+wcXgjX CxfHzp0byIEV7KkcKkVRyMLSnAsRg7wV+W9OnvCe0Zj1PgB++u8PAefsp/RXPZ7RJe3wdI9OYU8P r6eztVXue/wG2cA3obG/hB92xLEOMBwSmpyyGHUrfPp0Pj18urAZqJuqMF8WdIA2EqCNKlgGzIcz zymdUt0W+1//+PiAR9D/9fXP7o//e/qk//qHYZGOWhxOmciv3I9h0Ffh3nBlAXGTOT+HQ9WLTalf VrccDdqxCNreTl7Ph3t0riSON2RNeVpp9vz/yo5suY0c975f4crTPmRmLV+xH/zA7qYkrvpyH5bt ly7H0WZUie2ULdck+/ULgH3wABXvVE3FAkA2TxAAAbCxHBEGWHD1jAQBR5MRv2iM6/0RCnuJ/xwb 8Taip6UyhCX4/Z1qnZcL7oxq5CgVwJ+cAGeCDTmhKK2d2OYKU/xcq7qoIjYMtlaFMcH4C5m6E65Q pyqzvJQQoHlR3FQGFyZPX/g71xmMDB20RQxvtbTFFX3btcVrAuI0plQXi3gpuzVGAuqriOnL1yJV iWgkiC4gV1W1eXIgqKgxiVmcmiIEKozWfUAP6SJUgzs7L5ICnoZglRu3BShQ4j3wrYufJhhNf3F1 WwbibAF/DUdRc+sU0kDfscWjiFqVNgrkGbXIBXrmmY2u3aRWiQtQGkCiqtUEscdcfdUWDZ8zBwMo 5vVJF9KPCd2xLrPzFqPLLXki9oKlhtnWRly2HkxTmYpbp6oJijGyClNsdYniL4I5WpGuBSXLStOC d3I0SiGv5a6QDZIbGHgaDnPQDXwmG4Epvzz2Gd8//GX7o89r2hfs5uqp9an5unn78nzwH9hb3tZC 00Nns3ECrQJ+7IREUasxdhQBS7GQGCaj0D3CRsVLlSaVzN0SGPaHwVC9Z8aIXckqN/enc33XZKXd YgJMW52dJU1zI5qGn3uNh8lJ5BnnzrJsF7JJI7MdPYh6brAGmc379AsGdAz6WqiFyBsVD6UMVon/ eJtkEmr8WRw/qWp9XQUD1UjTcF5U6NRElVoaDzGm0GaNK5EFUL6RfRAJZAPsecW3Ih8aYPy+PnJ+ H5sN1BB3Mk3kibnJNaQLvECOYUt5oENYEvlPf1Gc5BxnGYhwXcJhD0R224f4tDYpDXuk+Q3ufntR kQUcuHlhSIp4lLg/sbfWB3s3lGmDtHllipT6d7cw3eYAUEuCdasqOjWHrycfuqFyIGwx6WEeo49p 4F3xvlDQAzOW5ZLn1LFy2D38JiZQc+oLYTH/8HpqmZ/jkqjWlIh4jRuNv1AkqrbEdCphvMckTKSn EUxQ/gZtwmOC6xITfwS2HRG+o331Ot9LUyQieA4z/KVHXZT8ZOWpudrTevCSufywfX0+Pz+9+GNm qB1IgD4UdBqcHHOvdVkkn44NY5CN+WStUQt3HnhM0iHiJ8Qh4tKtOSShJlp5txzMLIg5CmKOg5iT IOY0iDkLYi4CmIvjs+CQO1mo+eJH4eIn/HOwdssCLnRIBJoMLrbu/HetmFlP07momdtCcngI1Dl8 05nLAez1dkBw0Sgm/oSv75QHn/HgTzz4ggfPjgPwQFtmTmNWhTrvKgbW2rBMxHDgZmYE1ACOJTpk u2OmMaAkthVneR1JqkI0SuRs8dtKpaniLg4HkoWQqRkjN8IraSZEGcAqxiCuhEHkrWq4NlCfnXS7 HhFoaSsVOJmQpm3m3PIGZR6XsBErpAFdjvcWqbrTKZLHpwMmHa/o1lemScJSr/Wl3ebh7WW7++X7 QOE5ZYrkt6gUXaF7TUdqhyHM6xQCMIlIVoEibArrmAFFJk51vWrsweFXlywxB65OUGW7KeDZT8px Jmuy/DaVinkXnIGWs3z0KEfrQQbRaPmnLtJgeiy0cdHzDTk0HpVnVNZIPImF1nwmjx2XjG3pHKRF VMTroq1iTrRGwYii2GSFET7uMwYsGt07l5cf/vX6efv0r7fXzQuG0P6hnwj4MNoEenfXaVxN/8m0 zi4/4O39l+e/nz7+un+8//j9+f7Lj+3Tx9f7/2yggdsvH7dPu81XXD8f9HJabV6eNt8p2fPmCS1f 07LS/k6bx+eXXwfbp+1ue/99+997xE5rjjJOQIfiFaxtM003IfAGC8fZ9tM1DHWaZg572iDhPab4 dgzocDfGO0x334xCIq7rYnSlePn1Y/d88ICR5uMbDYYvBRFDrxbCjMe2wEc+XIqEBfqk9SpW5dJc Lg7CL4KyMwv0SSvTJDbBWMJRbPQaHmyJCDV+VZY+9aos/RpAUWJIgVXDbvfr7eHW5WCPcoMH2IKj BuWktO+pFvPZ0XnWph4ib1Me6Ded/mFmv22WMo89uB3aOsy9yvwaFmk7JHlHxz4PL/OFTpyvTUpv n79vH/74tvl18EBL/CumPP3lreyqFl5NyZIZXxknAY1twFdJILv60KtAjvhh4NrqWh6dns4uwtM4 0fRDoG933nZ/bZ5224f73ebLgXyiDsOeP/h7i0+zvb4+P2wJldzv7r0RiOPMH+s48yYlXsKhKo4O yyK9neETav4YCblQtZM9naeAP+pcdXUtj/zZl1fq2p9e+Dgw0Ovh/jQivy08NV79LkX+QovNVxMG WONvsbipvRbJ2C+bVmsPVsytC8QeWkJzwiNy09TMSIKYgck0wsXypTEPIdQwvm7tBoW4vmFNGv10 oWtw02bcfkAPEf8KDWOBApOSCX9WlhzwBufPnYNrTfmP/k25zevO/0IVHx/FTFs1Qt+E7d2CSLdn 9yEapjPVLNItfXPjWnVsfJSKlTyKmJIawxqiLALa9N6+rOJmdpioOcOKe8zQZrfoYinM+OFhvYY3 +Lhs0LOatUIP501y4tWbJafMWswUbGyZ4r/7pqbKkr2MBfFnh0yTAXF0GvA/HSmO2ejGgR8txYyp GMGwwWrJKdMTDXxcU/l8bilOZ0dhJJT0pSIqw7dmXzuyY7+qBsTQqFgwc9IsqtnFno2wLnUjmNXU 0UrrgLfTbhu4dbz98ZftpDucB74UArCuUUyzEDFUvG9Co7RYz0NqrEPDrGSPKwj0cGczejoUfWX+ Fh3w+tQDnvt+yqMwKSq6jp3dwPkHA0HNr3ME/poj6L5GJ9I/MgF23MlEhsrM6V9uIYu0Fvu24yCH cHy+R/2WPYGsXFruijaczs1Qywcaaxy9XkxER+9YYnW2p7HNurDzPNjwKeSXR4/d8Ha5RdAdrwWv /zvkU7/9G+Dnxx8vm9dXS2UeF8Q8xQtHt5npXeHBzk987pLe+esVYEtfUrirmzFJQnX/9OX58SB/ e/y8edEO9Y5GP/CWHJPClJzCmFTRYoivYjCsCKMxWlF1B5JwMX+BM1F4Vf5bYTysRPfD8papFhXA DtTxPXdLDuGgYr+LuArEWLl0qOaHe0ZHhMrnrv3h+/bzCz6a+vL8tts+MdIjPqXGHRYEr2J/m/b3 2deSSHoByl99E87PU+bTsDjNdcbiXAs1yW/aOCl3fB2T7jd9yp0GmzA8D0jHsW2Ej0JeVas7eTmb 7aPZ1+tRkAyPmqFOckQBKWjpq14YdFWKpI8SCuJoDfln1YSvmWlCvGgy9B9n1YsJL9ngII8Mu3V4 IgJVxXYUFEdyJZouWZ5fnP6M90rNA22ML7O9i/AsECTu0J28s76hkdd8EDLXzHeSQkN/T1mLubyJ JeejYU5KRu9WdIsbTq1zKIKOb6K+zfApMCDDSwL0SzC8ayZk2UZpT1O3UU823X9PhE2ZmVTMJ29O Dy+6WKJ5XsXoYuj6F5aruD7HPKfXiMXKOIpPcLrVNV4v8FjKrme9eoIufRKfLtDehejwRy1QU8hH vHnZYbjM/a5/fv11+/Xpfvf2sjl4+Gvz8G379NUMZ0eHHPMqprK8GX18ffnBuNTv8fKmqYQ5IPzl SpEnorr97deA52PQa928g4LONfxLN2vwcXvHGAxVRirHRlFO2vkwiGnwWMRHQkXVkfeUcSpi7IPV 0kiBmodx6MZiHGIMQAPM4/K2m1fkum9OvEmSyjyAzWXTtY0y/S8G1Fzl9Io2jE2kHI/bKmGvQvHl CNnlbRZh2PzkFkTLyoyoGGMkYoUxjaL0UQ6YDlp0kIqz8iZeaq+lSs4dCnR/w0SXOjVXmSqz02Md sEMp0XkzXgCODCMG5q0aS6+IZ2c2RW+seTRhqmk7ywweH1sSMNqdjNtTg0URBviJjG75uCmLhNcy iEBUa+0P6JSE2QvVG9Rp4sB3PpnVw/mu7XI87fnUf21YM8vqR3WNQWHqACUCVSP9jtQvE4pJVFz4 HYobIJimllPknZaTHM0FVJapZgvK1QxKCtMOUl3YWk749oFSw1RDYI7+5g7BptanIai6cSeJRlLM jOmn18OVsLXcHizY5LMTslnCZvYqq0v95q0NjeJ/M18IzO3U425xp4yNbiBQseThJyy8VxsdRmLe m49HdF3ESr9dJqpKGD7ryECA9ZihKBpEb0lbLAnhSWZcPuUSkzZTMhV8SGrRLB0cIqAKuk93HXcR J5Kk6hrQyyPz9eZ6rYomtazORAyqWtgzcvhUJPMY9NuKy4VYL1I9OsZoXplcOi2sr+Lvffs1T9Gr 0eB66R26O0wAVV2hSmF8IiuVlYKnoLeGFnAMV9akwEQN83md1IU/ywvZYCaxYp6Ys2mWoUxjncnt xxOjxFgj63p8RLU6GKSbp5gN03ZKGYnIPyOLHQw5GayFmVuCQIksC+sMQB+TfLE/dsqTI2xfiEEa I+iPl+3T7hsldPvyuHn96jvekIyyohExG9KD0e2Tv4qGw7KgWJRFCiJJOl64fwpSXLVKNpcn43z3 YqpXw8nUigidqfum0EMZ/ALvHwXZswVMilDSfBAFogKleVlVQC5NxoLF4H+QvaKi1gPVz0ZwhEcj 2vb75o/d9rEXE1+J9EHDX/z50N/qrSoeDCNF2lg64eUjduB/gadiDcoaBCJeFjCIkrWo5rxcsEgi TJOmyoYNsqlg/DoonV+ezy6O/mGs7hJYLkbzmR77lRQJeTIAytjqEmOFMUoC9orJKXQLQfYnR7RM 1ZnQ2YMnrcDCUEO6Ik9v/WGbF1UMik+b6yIixbfsj4+4B1+0p1AfAaZsbyCzMu0WrlMJ8tEy710U Vo6RfoMnm89vX+nNCPX0unt5e9w87YzlQy/9oUpTXRmsdQKOrkoyxxG/PPw5m3ph0vnJ9u2u1u58 jG7zeq7codFxC0TgPaDn02pC9MoKecURX13BMjS/hb85bX5k4VEtchCPc9WoO+m2lLD7vxfXIjd3 /7smxx4nHdbhjh4G1QyKYu8uNlZmMGtkmPguUV6zCxDxdIzz4TRYuljnLEMnZFkofMHTji2cqoaN yr3KpwmqAraF6Gyf0HHkNc36xu23CRlVwQZDFww9mH4T2/aAfZocv71FhIHhgRR3moGkgn14EWe7 nyoQBlLYzX7tAyY4GppZtLUTdkUPFvVIfP0JfrK5qZ1xu866ckHuou74XWc+hNwrbPlkRFWR3xmq HdSiBcfKww1w26iqphXM1u8Rwbp1ngpyqHTFJh3dVMNwg/yKsnva89jMTgUwTIpPtX87i9p8pc1B 4DDaInEcU3811jeWaywGpqEMlxcTnwFh3lLonA+7FU78jBBF26CFiOmKxqs8Vab7qobSIruc2cCp S+M3tEGQsFmRtO5r9LYL68STvN20xCQe7iUi0R8Uzz9ePx6kzw/f3n7oo255//TVFEIx1yx60xZW NLQFxpO3lVOHNJIk/ba5PBx17iJetcgXGtj+pqaH79EGkShogiYrMpOMvvAeGrdp6IrtfIoS/5hL baQgFkD9gBnLSpbGaLAlG+vmGISlm7T3t8R92w/N+cSPdUvM8dGImmNP6yuQqUCySoqFt5R05ewi 2r8adIQAyENf3ugNBv/409zTi4kjMAX0sV/lqrQ5EA7+SspSH3zaWIsOidNx/s/XH9sndFKElj++ 7TY/N/DHZvfw559/mumX8dKJqlyQFuemDC4rTNDKhO9rBD7QSlXkMI5OGkzzC9hVl7WjRaJt5I30 5DIj357Ndnny9Vpj4Hgs1uTX735pXVvhthqq7+NsdknRpJJh1D0ieCIMaZhTGSqNw0u33ntT2VKj YNtgvoKQ9WnqL2OSreN5sPxkIq0T/aW1UA2nhA56+/+xpIbWNRS1C5yVjudpaG14l2eGwYIYPxFM MNKAYHq6NsfHhmEXaasrc4hqwSnAyb9pOffL/e7+AAXcB7z/8LTXVNXeAi05YM0ImpQQQkn2dU8S 7PKOBE0QB6u2HBUxi8UEmul+KgZtWuYN6Dl+suYqblkJXO/U2PAfMReIodPGbYe5o0b4ZO8GzG8X FRKBtG1UwQwH1WRPNILklRk4PGRYtPrj7PmrXmCq/Pz3ApSN+LYp+LdBQcudlpvP8PBRKkJVl7aU NSrc+7GLSpRLnmYw6cydAWCQ3Vo1S7Ql1u8g6xNxoOHrPeSi8mrt0Rllo4HP4h2ZQ4IpLXA3EiUo XXnjVYK+Qa7dM+5r01W73CC2uTwZEqN2PjeHjhL7Eb11sQj/AAts+neYvAEvKykz2GrVFd9ir74e wKUn0KPD66ewt1Qi6enT2fHFCVmuUS3gY+4EJlzkuIShmFDqKNXbE6bndn6en3Gb2+Gq3nL2uS7z LICo0tvBZolvH013I+dnXW9AJHnMTClslgrUlUSLQAH97lsSWWJ9L9mkEZmrQ2pQlqnC3bvTtQ00 WL9RUO2z9atC22a7w5tzy5HTQAQMkiNFG7bujjSuNcjpqrYVo4wbSHhQiqC7h65h2HLugZSpgEHe GieyXLkWv2FltxgtiGJNsAltvta504rKTvs/wLVNlbZeIMWVvarNW4Fm87pDmQOF7RjzmN5/3Zi5 fVZtaJcNpzEaxUGL0en2AjmmyK44UkxrdS5UisYWiw0ATNuUwvYqp8LfBLZihXOU5H7fNMaGScX1 s2UUdcyYOVZxYUYyaW0f1GYA95zBvGy1qfFXb3IlI72o0NBmma2IBG3dVZuRt3HKmUw0FTBiUUnR kU/f4c+TQ/hv5PtwNOD1VqOVCO8xgXSVNHyWZq2+oQdMXVT8ctAvOKucnocIUwTLR5OsADtqj/gT YUDDHjzdrxZpgTnHg1S0VUC/7fZXBqo5SD0hIUsrI2cnrIJAvV3KG7RF7hkOfaun4x25E2ugquPS erJV22YA0RTcsib06GRkAiPVOCYyAret4hkxYW/oAjyMx7xh81BeMqKo0LeDzIRhmqBHM2FVwodd 6rW52rNwocuF+2KJie9NX6FhJFkWuYs3/lHJuyZqJHqNLfGe03kFaWJM6DwFjePv3+3a5qrKQFXb M3o6GVoY7x+k9hKj6H1yuXO7CZJSLGA57SmLerfy1z+UDEppulu4/ZDZ75ke5+jsUVD1uOXsaHn+ SPNC6vVt+P8AI/ASs97TAQA= --===============3830859464725288851==--