summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.depend347
-rw-r--r--.skipped-commit-ids2
-rw-r--r--ChangeLog3783
-rw-r--r--INSTALL12
-rw-r--r--Makefile.in31
-rw-r--r--OVERVIEW15
-rw-r--r--PROTOCOL37
-rw-r--r--PROTOCOL.certkeys22
-rw-r--r--PROTOCOL.chacha20poly13054
-rw-r--r--PROTOCOL.krl4
-rw-r--r--README2
-rw-r--r--README.platform2
-rw-r--r--TODO6
-rw-r--r--aclocal.m415
-rw-r--r--addrmatch.c25
-rw-r--r--audit-bsm.c1
-rw-r--r--audit.c2
-rw-r--r--auth-bsdauth.c6
-rw-r--r--auth-krb5.c6
-rw-r--r--auth-options.c154
-rw-r--r--auth-options.h6
-rw-r--r--auth-pam.c264
-rw-r--r--auth-passwd.c23
-rw-r--r--auth-rhosts.c6
-rw-r--r--auth-shadow.c23
-rw-r--r--auth-sia.c1
-rw-r--r--auth-skey.c1
-rw-r--r--auth.c63
-rw-r--r--auth.h8
-rw-r--r--auth2-chall.c83
-rw-r--r--auth2-gss.c107
-rw-r--r--auth2-hostbased.c16
-rw-r--r--auth2-kbdint.c14
-rw-r--r--auth2-none.c3
-rw-r--r--auth2-passwd.c3
-rw-r--r--auth2-pubkey.c68
-rw-r--r--auth2.c81
-rw-r--r--authfd.c28
-rw-r--r--authfd.h4
-rw-r--r--authfile.c24
-rw-r--r--bufaux.c259
-rw-r--r--bufbn.c69
-rw-r--r--bufec.c74
-rw-r--r--buffer.c118
-rw-r--r--buffer.h95
-rw-r--r--channels.c495
-rw-r--r--channels.h26
-rw-r--r--cipher.c2
-rw-r--r--clientloop.c236
-rw-r--r--clientloop.h4
-rw-r--r--compat.c47
-rw-r--r--compat.h4
-rw-r--r--config.h.in19
-rwxr-xr-xconfigure206
-rw-r--r--configure.ac85
-rwxr-xr-xcontrib/aix/buildbff.sh16
-rw-r--r--contrib/cygwin/ssh-host-config2
-rw-r--r--contrib/cygwin/ssh-user-config2
-rw-r--r--contrib/redhat/openssh.spec2
-rw-r--r--contrib/solaris/README2
-rw-r--r--contrib/suse/openssh.spec6
-rw-r--r--defines.h6
-rw-r--r--dh.c18
-rw-r--r--entropy.c32
-rw-r--r--entropy.h7
-rw-r--r--gss-genr.c61
-rw-r--r--gss-serv-krb5.c5
-rw-r--r--gss-serv.c5
-rw-r--r--hostfile.c15
-rw-r--r--kex.c110
-rw-r--r--kex.h11
-rw-r--r--kexdhs.c4
-rw-r--r--kexgexs.c4
-rw-r--r--key.c236
-rw-r--r--key.h69
-rw-r--r--log.c8
-rw-r--r--log.h3
-rw-r--r--loginrec.c7
-rw-r--r--match.c36
-rw-r--r--match.h5
-rw-r--r--misc.c67
-rw-r--r--misc.h5
-rw-r--r--moduli843
-rw-r--r--moduli.02
-rw-r--r--monitor.c679
-rw-r--r--monitor.h10
-rw-r--r--monitor_wrap.c726
-rw-r--r--monitor_wrap.h10
-rw-r--r--msg.c4
-rw-r--r--mux.c932
-rw-r--r--myproposal.h4
-rw-r--r--opacket.c2
-rw-r--r--opacket.h4
-rw-r--r--openbsd-compat/Makefile.in1
-rw-r--r--openbsd-compat/arc4random.c16
-rw-r--r--openbsd-compat/bcrypt_pbkdf.c2
-rw-r--r--openbsd-compat/bsd-closefrom.c2
-rw-r--r--openbsd-compat/bsd-cygwin_util.c1
-rw-r--r--openbsd-compat/bsd-cygwin_util.h2
-rw-r--r--openbsd-compat/bsd-getline.c113
-rw-r--r--openbsd-compat/bsd-misc.c1
-rw-r--r--openbsd-compat/bsd-nextstep.h2
-rw-r--r--openbsd-compat/bsd-snprintf.c2
-rw-r--r--openbsd-compat/bsd-waitpid.h2
-rw-r--r--openbsd-compat/explicit_bzero.c2
-rw-r--r--openbsd-compat/fmt_scaled.c9
-rw-r--r--openbsd-compat/freezero.c1
-rw-r--r--openbsd-compat/openbsd-compat.h4
-rw-r--r--openbsd-compat/port-aix.c24
-rw-r--r--openbsd-compat/port-aix.h7
-rw-r--r--openbsd-compat/port-net.c4
-rw-r--r--openbsd-compat/port-uw.c4
-rw-r--r--openbsd-compat/sha2.c2
-rw-r--r--openbsd-compat/strndup.c2
-rw-r--r--openbsd-compat/strnlen.c2
-rw-r--r--openbsd-compat/sys-queue.h5
-rw-r--r--packet.c60
-rw-r--r--packet.h7
-rw-r--r--platform.c3
-rw-r--r--readconf.c190
-rw-r--r--readconf.h8
-rw-r--r--readpass.c3
-rw-r--r--regress/Makefile3
-rw-r--r--regress/allow-deny-users.sh12
-rw-r--r--regress/authinfo.sh2
-rw-r--r--regress/cert-file.sh6
-rw-r--r--regress/cert-hostkey.sh9
-rw-r--r--regress/cfgmatchlisten.sh202
-rw-r--r--regress/cfgparse.sh6
-rw-r--r--regress/forward-control.sh77
-rw-r--r--regress/forwarding.sh3
-rw-r--r--regress/key-options.sh5
-rw-r--r--regress/keygen-knownhosts.sh35
-rw-r--r--regress/mkdtemp.c61
-rw-r--r--regress/multiplex.sh3
-rw-r--r--regress/rekey.sh12
-rw-r--r--regress/setuid-allowed.c1
-rw-r--r--regress/sshcfgparse.sh62
-rw-r--r--regress/test-exec.sh32
-rw-r--r--regress/unittests/hostkeys/test_iterate.c37
-rw-r--r--regress/unittests/match/tests.c4
-rw-r--r--regress/unittests/sshkey/test_sshkey.c5
-rwxr-xr-xregress/valgrind-unit.sh6
-rw-r--r--sandbox-seccomp-filter.c15
-rw-r--r--sandbox-systrace.c1
-rw-r--r--scp.04
-rw-r--r--scp.16
-rw-r--r--scp.c6
-rw-r--r--servconf.c288
-rw-r--r--servconf.h24
-rw-r--r--serverloop.c33
-rw-r--r--session.c240
-rw-r--r--sftp-client.c26
-rw-r--r--sftp-server.02
-rw-r--r--sftp-server.c8
-rw-r--r--sftp.022
-rw-r--r--sftp.122
-rw-r--r--sftp.c29
-rw-r--r--ssh-add.02
-rw-r--r--ssh-agent.02
-rw-r--r--ssh-agent.c63
-rw-r--r--ssh-gss.h8
-rw-r--r--ssh-keygen.024
-rw-r--r--ssh-keygen.124
-rw-r--r--ssh-keygen.c40
-rw-r--r--ssh-keyscan.02
-rw-r--r--ssh-keyscan.c12
-rw-r--r--ssh-keysign.02
-rw-r--r--ssh-keysign.c10
-rw-r--r--ssh-pkcs11-client.c136
-rw-r--r--ssh-pkcs11-helper.02
-rw-r--r--ssh-rsa.c60
-rw-r--r--ssh.014
-rw-r--r--ssh.114
-rw-r--r--ssh.c321
-rw-r--r--ssh.h9
-rw-r--r--ssh_api.h4
-rw-r--r--ssh_config.082
-rw-r--r--ssh_config.577
-rw-r--r--sshbuf.c22
-rw-r--r--sshbuf.h11
-rw-r--r--sshconnect.c69
-rw-r--r--sshconnect.h24
-rw-r--r--sshconnect2.c850
-rw-r--r--sshd.038
-rw-r--r--sshd.842
-rw-r--r--sshd.c232
-rw-r--r--sshd_config3
-rw-r--r--sshd_config.0120
-rw-r--r--sshd_config.5113
-rw-r--r--ssherr.c4
-rw-r--r--ssherr.h3
-rw-r--r--sshkey-xmss.c8
-rw-r--r--sshkey.c104
-rw-r--r--sshkey.h5
-rw-r--r--sshlogin.c22
-rw-r--r--ttymodes.c129
-rw-r--r--uidswap.c39
-rw-r--r--uidswap.h3
-rw-r--r--umac.c14
-rw-r--r--utf8.c13
-rw-r--r--version.h4
-rw-r--r--xmss_wots.c4
203 files changed, 8274 insertions, 7301 deletions
diff --git a/.depend b/.depend
index 0893a87ab..7cc0bfdc8 100644
--- a/.depend
+++ b/.depend
@@ -1,182 +1,175 @@
1# DO NOT DELETE 1# DO NOT DELETE
2 2
3addrmatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h match.h log.h 3addrmatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h match.h log.h
4atomicio.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h 4atomicio.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h atomicio.h
5audit-bsm.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 5audit-bsm.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
6audit-linux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 6audit-linux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
7audit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 7audit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
8auth-bsdauth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 8auth-bsdauth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
9auth-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h uidswap.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h 9auth-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h sshbuf.h sshkey.h misc.h servconf.h uidswap.h hostfile.h auth.h auth-pam.h audit.h loginrec.h
10auth-options.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h misc.h sshkey.h match.h ssh2.h auth-options.h 10auth-options.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h sshbuf.h misc.h sshkey.h match.h ssh2.h auth-options.h
11auth-pam.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 11auth-pam.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
12auth-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h 12auth-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h sshbuf.h ssherr.h log.h misc.h servconf.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h
13auth-rhosts.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h pathnames.h log.h misc.h key.h sshkey.h servconf.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h 13auth-rhosts.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h pathnames.h log.h misc.h sshbuf.h sshkey.h servconf.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h
14auth-shadow.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 14auth-shadow.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
15auth-sia.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 15auth-sia.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
16auth-skey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 16auth-skey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
17auth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h groupaccess.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h canohost.h uidswap.h packet.h openbsd-compat/sys-queue.h 17auth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h groupaccess.h log.h sshbuf.h misc.h servconf.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h canohost.h uidswap.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h
18auth.o: dispatch.h opacket.h authfile.h monitor_wrap.h ssherr.h compat.h channels.h 18auth.o: authfile.h monitor_wrap.h ssherr.h compat.h channels.h
19auth2-chall.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh2.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h 19auth2-chall.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh2.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssherr.h log.h misc.h servconf.h
20auth2-gss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 20auth2-gss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
21auth2-hostbased.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h canohost.h 21auth2-hostbased.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h sshbuf.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h canohost.h monitor_wrap.h
22auth2-hostbased.o: monitor_wrap.h pathnames.h ssherr.h match.h 22auth2-hostbased.o: pathnames.h ssherr.h match.h
23auth2-kbdint.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h log.h misc.h servconf.h 23auth2-kbdint.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h hostfile.h auth.h auth-pam.h audit.h loginrec.h log.h misc.h servconf.h ssherr.h
24auth2-none.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h xmalloc.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h ssh2.h ssherr.h 24auth2-none.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h atomicio.h xmalloc.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h ssh2.h ssherr.h monitor_wrap.h
25auth2-none.o: monitor_wrap.h 25auth2-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssherr.h log.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h monitor_wrap.h misc.h servconf.h
26auth2-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssherr.h log.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h monitor_wrap.h misc.h servconf.h 26auth2-pubkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h sshbuf.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h uidswap.h
27auth2-pubkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h uidswap.h
28auth2-pubkey.o: auth-options.h canohost.h monitor_wrap.h authfile.h match.h ssherr.h channels.h session.h 27auth2-pubkey.o: auth-options.h canohost.h monitor_wrap.h authfile.h match.h ssherr.h channels.h session.h
29auth2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h 28auth2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h atomicio.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h sshbuf.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h ssherr.h
30auth2.o: monitor_wrap.h ssherr.h 29auth2.o: monitor_wrap.h digest.h
31authfd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h sshkey.h authfd.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h compat.h log.h atomicio.h misc.h ssherr.h 30authfd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h sshbuf.h sshkey.h authfd.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h compat.h log.h atomicio.h misc.h ssherr.h
32authfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h ssh.h log.h authfile.h misc.h atomicio.h sshkey.h ssherr.h krl.h 31authfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h ssh.h log.h authfile.h misc.h atomicio.h sshkey.h sshbuf.h ssherr.h krl.h
33bitmap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h bitmap.h 32bitmap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h bitmap.h
34bufaux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h 33canohost.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h canohost.h misc.h
35bufbn.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 34chacha.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h chacha.h
36bufec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h 35channels.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h ssherr.h sshbuf.h packet.h dispatch.h opacket.h log.h misc.h channels.h compat.h canohost.h sshkey.h authfd.h pathnames.h match.h
37buffer.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h 36cipher-aes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h
38canohost.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h canohost.h misc.h 37cipher-aesctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h cipher-aesctr.h rijndael.h
39chacha.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h chacha.h 38cipher-chachapoly.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h sshbuf.h ssherr.h cipher-chachapoly.h chacha.h poly1305.h
40channels.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h ssherr.h packet.h dispatch.h opacket.h log.h misc.h channels.h compat.h canohost.h key.h sshkey.h authfd.h pathnames.h 39cipher-ctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
41cipher-aes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h 40cipher.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h misc.h sshbuf.h ssherr.h digest.h openbsd-compat/openssl-compat.h
42cipher-aesctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher-aesctr.h rijndael.h 41cleanup.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h
43cipher-chachapoly.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h cipher-chachapoly.h chacha.h poly1305.h 42clientloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h sshbuf.h compat.h channels.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h
44cipher-ctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 43clientloop.o: myproposal.h log.h misc.h readconf.h clientloop.h sshconnect.h authfd.h atomicio.h sshpty.h match.h msg.h ssherr.h hostfile.h
45cipher.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h misc.h ssherr.h digest.h openbsd-compat/openssl-compat.h 44compat.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h log.h match.h kex.h mac.h
46cleanup.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h 45crc32.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crc32.h
47clientloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h channels.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h 46dh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
48clientloop.o: kex.h mac.h myproposal.h log.h misc.h readconf.h clientloop.h sshconnect.h authfd.h atomicio.h sshpty.h match.h msg.h ssherr.h hostfile.h 47digest-libc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h digest.h
49compat.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h log.h match.h kex.h mac.h key.h sshkey.h 48digest-openssl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
50crc32.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crc32.h 49dispatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh2.h log.h dispatch.h packet.h openbsd-compat/sys-queue.h opacket.h compat.h ssherr.h
51dh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 50dns.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h ssherr.h dns.h log.h digest.h
52digest-libc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h digest.h 51ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h ge25519.h fe25519.h sc25519.h
53digest-openssl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 52entropy.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
54dispatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h log.h dispatch.h packet.h openbsd-compat/sys-queue.h opacket.h compat.h ssherr.h 53fatal.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h
55dns.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sshkey.h ssherr.h dns.h log.h digest.h 54fe25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h fe25519.h crypto_api.h
56ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h ge25519.h fe25519.h sc25519.h 55ge25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h fe25519.h crypto_api.h sc25519.h ge25519.h ge25519_base.data
57entropy.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 56groupaccess.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h groupaccess.h match.h log.h
58fatal.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h 57gss-genr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
59fe25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h fe25519.h crypto_api.h 58gss-serv-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
60ge25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h fe25519.h crypto_api.h sc25519.h ge25519.h ge25519_base.data 59gss-serv.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
61groupaccess.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h groupaccess.h match.h log.h 60hash.o: crypto_api.h includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h digest.h log.h ssherr.h
62gss-genr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 61hmac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h digest.h hmac.h
63gss-serv-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 62hostfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h sshkey.h hostfile.h log.h misc.h ssherr.h digest.h hmac.h
64gss-serv.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 63kex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h log.h match.h misc.h monitor.h ssherr.h sshbuf.h
65hash.o: crypto_api.h includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h log.h ssherr.h 64kex.o: digest.h
66hmac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h hmac.h 65kexc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h log.h digest.h ssherr.h
67hostfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h sshkey.h hostfile.h log.h misc.h ssherr.h digest.h hmac.h 66kexc25519c.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h sshbuf.h digest.h ssherr.h
68kex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h key.h log.h match.h misc.h 67kexc25519s.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h kex.h mac.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h sshbuf.h ssherr.h
69kex.o: monitor.h ssherr.h digest.h 68kexdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
70kexc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h log.h digest.h ssherr.h 69kexdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
71kexc25519c.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h digest.h ssherr.h 70kexdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
72kexc25519s.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h kex.h mac.h key.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h ssherr.h 71kexecdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
73kexdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 72kexecdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
74kexdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 73kexecdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
75kexdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 74kexgex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
76kexecdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 75kexgexc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
77kexecdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 76kexgexs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
78kexecdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 77krl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h sshbuf.h ssherr.h sshkey.h authfile.h misc.h log.h digest.h bitmap.h krl.h
79kexgex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 78log.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h
80kexgexc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 79loginrec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h hostfile.h ssh.h loginrec.h log.h atomicio.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h canohost.h auth.h auth-pam.h audit.h sshbuf.h ssherr.h
81kexgexs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 80logintest.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h loginrec.h
82key.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h key.h sshkey.h compat.h ssherr.h log.h authfile.h 81mac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h digest.h hmac.h umac.h mac.h misc.h ssherr.h sshbuf.h openbsd-compat/openssl-compat.h
83krl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h ssherr.h sshkey.h authfile.h misc.h log.h digest.h bitmap.h krl.h 82match.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h misc.h
84log.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h 83md5crypt.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
85loginrec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h key.h sshkey.h hostfile.h ssh.h loginrec.h log.h atomicio.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h canohost.h auth.h auth-pam.h audit.h 84misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h misc.h log.h ssh.h sshbuf.h ssherr.h
86logintest.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h loginrec.h 85moduli.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
87mac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h hmac.h umac.h mac.h misc.h ssherr.h openbsd-compat/openssl-compat.h 86monitor.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h atomicio.h xmalloc.h ssh.h sshkey.h sshbuf.h hostfile.h auth.h auth-pam.h audit.h loginrec.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h
88match.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h misc.h 87monitor.o: rijndael.h kex.h mac.h dh.h packet.h dispatch.h opacket.h auth-options.h sshpty.h channels.h session.h sshlogin.h canohost.h log.h misc.h servconf.h monitor.h monitor_wrap.h monitor_fdpass.h compat.h ssh2.h authfd.h match.h ssherr.h
89md5crypt.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 88monitor_fdpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h monitor_fdpass.h
90misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h misc.h log.h ssh.h ssherr.h uidswap.h 89monitor_wrap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h loginrec.h
91moduli.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 90monitor_wrap.o: auth-options.h packet.h dispatch.h opacket.h log.h monitor.h monitor_wrap.h atomicio.h monitor_fdpass.h misc.h channels.h session.h servconf.h ssherr.h
92monitor.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h atomicio.h xmalloc.h ssh.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h cipher.h cipher-chachapoly.h chacha.h poly1305.h 91msg.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h ssherr.h log.h atomicio.h msg.h misc.h
93monitor.o: cipher-aesctr.h rijndael.h kex.h mac.h dh.h packet.h dispatch.h opacket.h auth-options.h sshpty.h channels.h session.h sshlogin.h canohost.h log.h misc.h servconf.h monitor.h monitor_wrap.h monitor_fdpass.h compat.h ssh2.h authfd.h match.h ssherr.h 92mux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h log.h ssh.h ssh2.h pathnames.h misc.h match.h sshbuf.h channels.h msg.h packet.h dispatch.h opacket.h monitor_fdpass.h sshpty.h sshkey.h readconf.h clientloop.h ssherr.h
94monitor_fdpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h monitor_fdpass.h 93nchan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h ssh2.h sshbuf.h ssherr.h packet.h dispatch.h opacket.h channels.h compat.h log.h
95monitor_wrap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h 94opacket.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h
96monitor_wrap.o: loginrec.h auth-options.h packet.h dispatch.h opacket.h log.h monitor.h monitor_wrap.h atomicio.h monitor_fdpass.h misc.h channels.h session.h servconf.h ssherr.h 95packet.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h crc32.h compat.h ssh2.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h digest.h log.h canohost.h misc.h channels.h ssh.h
97msg.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h log.h atomicio.h msg.h misc.h 96packet.o: packet.h dispatch.h opacket.h ssherr.h sshbuf.h
98mux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h log.h ssh.h ssh2.h pathnames.h misc.h match.h channels.h msg.h packet.h dispatch.h opacket.h monitor_fdpass.h sshpty.h key.h sshkey.h readconf.h clientloop.h 97platform-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
99mux.o: ssherr.h 98platform-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
100nchan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h ssh2.h ssherr.h packet.h dispatch.h opacket.h channels.h compat.h log.h 99platform-tracing.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h
101opacket.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h 100platform.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h misc.h servconf.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h
102packet.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h key.h sshkey.h xmalloc.h crc32.h compat.h ssh2.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h digest.h log.h canohost.h misc.h 101poly1305.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h poly1305.h
103packet.o: channels.h ssh.h packet.h dispatch.h opacket.h ssherr.h 102progressmeter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h progressmeter.h atomicio.h misc.h
104platform-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 103readconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/glob.h xmalloc.h ssh.h ssherr.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h pathnames.h log.h sshkey.h misc.h readconf.h match.h kex.h mac.h uidswap.h
105platform-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 104readconf.o: myproposal.h digest.h
106platform-tracing.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h 105readpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h misc.h pathnames.h log.h ssh.h uidswap.h
107platform.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h 106rijndael.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h rijndael.h
108poly1305.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h poly1305.h 107sandbox-capsicum.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
109progressmeter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h progressmeter.h atomicio.h misc.h 108sandbox-darwin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
110readconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/glob.h xmalloc.h ssh.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h pathnames.h log.h sshkey.h misc.h readconf.h match.h kex.h mac.h key.h 109sandbox-null.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
111readconf.o: uidswap.h myproposal.h digest.h 110sandbox-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
112readpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h misc.h pathnames.h log.h ssh.h uidswap.h 111sandbox-rlimit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
113rijndael.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h rijndael.h 112sandbox-seccomp-filter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
114sandbox-capsicum.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 113sandbox-solaris.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
115sandbox-darwin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 114sandbox-systrace.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
116sandbox-null.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 115sc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sc25519.h crypto_api.h
117sandbox-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 116scp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h atomicio.h pathnames.h log.h misc.h progressmeter.h utf8.h
118sandbox-rlimit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 117servconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h log.h sshbuf.h misc.h servconf.h compat.h pathnames.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h match.h channels.h
119sandbox-seccomp-filter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 118servconf.o: groupaccess.h canohost.h packet.h dispatch.h opacket.h ssherr.h hostfile.h auth.h auth-pam.h audit.h loginrec.h myproposal.h digest.h
120sandbox-solaris.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 119serverloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h packet.h dispatch.h opacket.h sshbuf.h log.h misc.h servconf.h canohost.h sshpty.h channels.h compat.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h
121sandbox-systrace.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 120serverloop.o: cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h loginrec.h session.h auth-options.h serverloop.h ssherr.h
122sc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sc25519.h crypto_api.h 121session.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h sshbuf.h ssherr.h match.h uidswap.h compat.h channels.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h
123scp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h atomicio.h pathnames.h log.h misc.h progressmeter.h utf8.h
124servconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h log.h misc.h servconf.h compat.h pathnames.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h key.h sshkey.h kex.h mac.h
125servconf.o: match.h channels.h groupaccess.h canohost.h packet.h dispatch.h opacket.h hostfile.h auth.h auth-pam.h audit.h loginrec.h myproposal.h digest.h
126serverloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h packet.h dispatch.h opacket.h log.h misc.h servconf.h canohost.h sshpty.h channels.h compat.h ssh2.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h
127serverloop.o: poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h loginrec.h session.h auth-options.h serverloop.h ssherr.h
128session.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h match.h uidswap.h compat.h channels.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h
129session.o: cipher-aesctr.h rijndael.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h authfd.h pathnames.h log.h misc.h servconf.h sshlogin.h serverloop.h canohost.h session.h kex.h mac.h monitor_wrap.h sftp.h atomicio.h 122session.o: cipher-aesctr.h rijndael.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h authfd.h pathnames.h log.h misc.h servconf.h sshlogin.h serverloop.h canohost.h session.h kex.h mac.h monitor_wrap.h sftp.h atomicio.h
130sftp-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h atomicio.h progressmeter.h misc.h utf8.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h 123sftp-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h sshbuf.h log.h atomicio.h progressmeter.h misc.h utf8.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h
131sftp-common.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssherr.h log.h misc.h sftp.h sftp-common.h 124sftp-common.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssherr.h sshbuf.h log.h misc.h sftp.h sftp-common.h
132sftp-glob.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h 125sftp-glob.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h
133sftp-server-main.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h sftp.h misc.h xmalloc.h 126sftp-server-main.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h sftp.h misc.h xmalloc.h
134sftp-server.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssherr.h log.h misc.h match.h uidswap.h sftp.h sftp-common.h 127sftp-server.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshbuf.h ssherr.h log.h misc.h match.h uidswap.h sftp.h sftp-common.h
135sftp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h pathnames.h misc.h utf8.h sftp.h ssherr.h sftp-common.h sftp-client.h openbsd-compat/glob.h 128sftp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h pathnames.h misc.h utf8.h sftp.h ssherr.h sshbuf.h sftp-common.h sftp-client.h openbsd-compat/glob.h
136ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h xmalloc.h ssh.h log.h sshkey.h authfd.h authfile.h pathnames.h misc.h ssherr.h digest.h 129ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h xmalloc.h ssh.h log.h sshkey.h sshbuf.h authfd.h authfile.h pathnames.h misc.h ssherr.h digest.h
137ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshkey.h authfd.h compat.h log.h misc.h digest.h ssherr.h match.h 130ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h authfd.h compat.h log.h misc.h digest.h ssherr.h match.h
138ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 131ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
139ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 132ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
140ssh-ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h log.h sshkey.h ssherr.h ssh.h 133ssh-ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h log.h sshbuf.h sshkey.h ssherr.h ssh.h
141ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sshkey.h authfile.h uuencode.h pathnames.h log.h misc.h match.h hostfile.h dns.h ssh.h ssh2.h ssherr.h ssh-pkcs11.h atomicio.h krl.h digest.h utf8.h authfd.h 134ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h sshkey.h authfile.h uuencode.h sshbuf.h pathnames.h log.h misc.h match.h hostfile.h dns.h ssh.h ssh2.h ssherr.h ssh-pkcs11.h atomicio.h krl.h digest.h utf8.h authfd.h
142ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h compat.h myproposal.h packet.h dispatch.h 135ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h compat.h myproposal.h packet.h dispatch.h opacket.h log.h
143ssh-keyscan.o: opacket.h log.h atomicio.h misc.h hostfile.h ssherr.h ssh_api.h ssh2.h dns.h 136ssh-keyscan.o: atomicio.h misc.h hostfile.h ssherr.h ssh_api.h ssh2.h dns.h
144ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h sshkey.h ssh.h ssh2.h misc.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h ssherr.h 137ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h sshkey.h ssh.h ssh2.h misc.h sshbuf.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h ssherr.h
145ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 138ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
146ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h log.h misc.h sshkey.h authfd.h ssh-pkcs11.h ssherr.h 139ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h sshbuf.h log.h misc.h sshkey.h authfd.h ssh-pkcs11.h ssherr.h
147ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 140ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
148ssh-rsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 141ssh-rsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
149ssh-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 142ssh-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
150ssh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h canohost.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h packet.h 143ssh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h canohost.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h packet.h dispatch.h opacket.h
151ssh.o: dispatch.h opacket.h channels.h key.h sshkey.h authfd.h authfile.h pathnames.h clientloop.h log.h misc.h readconf.h sshconnect.h kex.h mac.h sshpty.h match.h msg.h uidswap.h version.h ssherr.h myproposal.h utf8.h 144ssh.o: sshbuf.h channels.h sshkey.h authfd.h authfile.h pathnames.h clientloop.h log.h misc.h readconf.h sshconnect.h kex.h mac.h sshpty.h match.h msg.h version.h ssherr.h myproposal.h utf8.h
152ssh_api.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh_api.h openbsd-compat/sys-queue.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h key.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h 145ssh_api.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh_api.h openbsd-compat/sys-queue.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h log.h authfile.h misc.h
153ssh_api.o: log.h authfile.h misc.h version.h myproposal.h ssherr.h 146ssh_api.o: version.h myproposal.h ssherr.h sshbuf.h
154sshbuf-getput-basic.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h 147sshbuf-getput-basic.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h
155sshbuf-getput-crypto.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h 148sshbuf-getput-crypto.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h
156sshbuf-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h 149sshbuf-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h
157sshbuf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h misc.h 150sshbuf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssherr.h sshbuf.h misc.h
158sshconnect.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h key.h sshkey.h hostfile.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h compat.h sshconnect.h log.h misc.h readconf.h atomicio.h dns.h monitor_fdpass.h 151sshconnect.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h hostfile.h ssh.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h sshkey.h sshconnect.h log.h misc.h readconf.h atomicio.h dns.h monitor_fdpass.h ssh2.h version.h authfile.h
159sshconnect.o: ssh2.h version.h authfile.h ssherr.h authfd.h 152sshconnect.o: ssherr.h authfd.h
160sshconnect2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h key.h sshkey.h kex.h mac.h 153sshconnect2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshbuf.h packet.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h myproposal.h
161sshconnect2.o: myproposal.h sshconnect.h authfile.h dh.h authfd.h log.h misc.h readconf.h match.h canohost.h msg.h pathnames.h uidswap.h hostfile.h ssherr.h utf8.h 154sshconnect2.o: sshconnect.h authfile.h dh.h authfd.h log.h misc.h readconf.h match.h canohost.h msg.h pathnames.h uidswap.h hostfile.h ssherr.h utf8.h
162sshd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h log.h misc.h match.h servconf.h uidswap.h compat.h cipher.h cipher-chachapoly.h 155sshd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h log.h sshbuf.h misc.h match.h servconf.h uidswap.h compat.h cipher.h cipher-chachapoly.h chacha.h
163sshd.o: chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h key.h sshkey.h kex.h mac.h myproposal.h authfile.h pathnames.h atomicio.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h authfd.h msg.h channels.h session.h monitor.h monitor_wrap.h ssh-sandbox.h auth-options.h version.h ssherr.h 156sshd.o: poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h kex.h mac.h myproposal.h authfile.h pathnames.h atomicio.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h authfd.h msg.h channels.h session.h monitor.h monitor_wrap.h ssh-sandbox.h auth-options.h version.h ssherr.h
164ssherr.o: ssherr.h 157ssherr.o: ssherr.h
165sshkey-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 158sshkey-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
166sshkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h ssh2.h ssherr.h misc.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h sshkey-xmss.h match.h xmss_fast.h 159sshkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h ssh2.h ssherr.h misc.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h sshkey-xmss.h match.h xmss_fast.h
167sshlogin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h loginrec.h log.h misc.h servconf.h 160sshlogin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshlogin.h ssherr.h loginrec.h log.h sshbuf.h misc.h servconf.h
168sshpty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshpty.h log.h misc.h 161sshpty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshpty.h log.h misc.h
169sshtty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshpty.h 162sshtty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshpty.h
170ttymodes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h compat.h ttymodes.h 163ttymodes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h compat.h sshbuf.h ssherr.h ttymodes.h
171uidswap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h uidswap.h xmalloc.h 164uidswap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h log.h uidswap.h xmalloc.h
172umac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h umac.h misc.h rijndael.h 165umac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h umac.h misc.h rijndael.h
173umac128.o: umac.c includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h umac.h misc.h rijndael.h 166umac128.o: umac.c includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h umac.h misc.h rijndael.h
174utf8.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h utf8.h 167utf8.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h utf8.h
175uuencode.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h uuencode.h 168uuencode.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h uuencode.h
176verify.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h 169verify.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h
177xmalloc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h 170xmalloc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h
178xmss_commons.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 171xmss_commons.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
179xmss_fast.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 172xmss_fast.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
180xmss_hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 173xmss_hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
181xmss_hash_address.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 174xmss_hash_address.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
182xmss_wots.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h 175xmss_wots.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
diff --git a/.skipped-commit-ids b/.skipped-commit-ids
index b51baf90d..b94cadf1c 100644
--- a/.skipped-commit-ids
+++ b/.skipped-commit-ids
@@ -2,6 +2,8 @@
2a337e886a49f96701ccbc4832bed086a68abfa85 Makefile changes 2a337e886a49f96701ccbc4832bed086a68abfa85 Makefile changes
3f2c9feb26963615c4fece921906cf72e248b61ee more Makefile 3f2c9feb26963615c4fece921906cf72e248b61ee more Makefile
4fa728823ba21c4b45212750e1d3a4b2086fd1a62 more Makefile refactoring 4fa728823ba21c4b45212750e1d3a4b2086fd1a62 more Makefile refactoring
51de0e85522051eb2ffa00437e1885e9d7b3e0c2e moduli update
6814b2f670df75759e1581ecef530980b2b3d7e0f remove redundant make defs
5 7
6Old upstream tree: 8Old upstream tree:
7 9
diff --git a/ChangeLog b/ChangeLog
index bb729917c..6d7a7d265 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1866 @@
1commit 71508e06fab14bc415a79a08f5535ad7bffa93d9
2Author: Damien Miller <djm@mindrot.org>
3Date: Thu Aug 23 15:41:42 2018 +1000
4
5 shorten temporary SSH_REGRESS_TMP path
6
7 Previous path was exceeding max socket length on at least one platform (OSX)
8
9commit 26739cf5bdc9030a583b41ae5261dedd862060f0
10Author: Damien Miller <djm@mindrot.org>
11Date: Thu Aug 23 13:06:02 2018 +1000
12
13 rebuild dependencies
14
15commit ff729025c7463cf5d0a8d1ca1823306e48c6d4cf
16Author: Damien Miller <djm@mindrot.org>
17Date: Thu Aug 23 13:03:32 2018 +1000
18
19 fix path in distclean target
20
21 Patch from Jakub Jelen
22
23commit 7fef173c28f7462dcd8ee017fdf12b5073f54c02
24Author: djm@openbsd.org <djm@openbsd.org>
25Date: Thu Aug 23 03:01:08 2018 +0000
26
27 upstream: memleak introduced in r1.83; from Colin Watson
28
29 OpenBSD-Commit-ID: 5c019104c280cbd549a264a7217b67665e5732dc
30
31commit b8ae02a2896778b8984c7f51566c7f0f56fa8b56
32Author: schwarze@openbsd.org <schwarze@openbsd.org>
33Date: Tue Aug 21 13:56:27 2018 +0000
34
35 upstream: AIX reports the CODESET as "ISO8859-1" in the POSIX locale.
36
37 Treating that as a safe encoding is OK because even when other systems return
38 that string for real ISO8859-1, it is still safe in the sense that it is
39 ASCII-compatible and stateless.
40
41 Issue reported by Val dot Baranov at duke dot edu. Additional
42 information provided by Michael dot Felt at felt dot demon dot nl.
43 Tested by Michael Felt on AIX 6.1 and by Val Baranov on AIX 7.1.
44 Tweak and OK djm@.
45
46 OpenBSD-Commit-ID: 36f1210e0b229817d10eb490d6038f507b8256a7
47
48commit bc44ee088ad269d232e514f037c87ada4c2fd3f0
49Author: Tim Rice <tim@multitalents.net>
50Date: Tue Aug 21 08:57:24 2018 -0700
51
52 modified: openbsd-compat/port-uw.c
53 remove obsolete and un-needed include
54
55commit 829fc28a9c54e3f812ee7248c7a3e31eeb4f0b3a
56Author: Damien Miller <djm@mindrot.org>
57Date: Mon Aug 20 15:57:29 2018 +1000
58
59 Missing unistd.h for regress/mkdtemp.c
60
61commit c8313e492355a368a91799131520d92743d8d16c
62Author: Damien Miller <djm@mindrot.org>
63Date: Fri Aug 17 05:45:20 2018 +1000
64
65 update version numbers in anticipation of release
66
67commit 477b49a34b89f506f4794b35e3c70b3e2e83cd38
68Author: Corinna Vinschen <vinschen@redhat.com>
69Date: Mon Aug 13 17:08:51 2018 +0200
70
71 configure: work around GCC shortcoming on Cygwin
72
73 Cygwin's latest 7.x GCC allows to specify -mfunction-return=thunk
74 as well as -mindirect-branch=thunk on the command line, albeit
75 producing invalid code, leading to an error at link stage.
76
77 The check in configure.ac only checks if the option is present,
78 but not if it produces valid code.
79
80 This patch fixes it by special-casing Cygwin. Another solution
81 may be to change these to linker checks.
82
83 Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
84
85commit b0917945efa374be7648d67dbbaaff323ab39edc
86Author: Corinna Vinschen <vinschen@redhat.com>
87Date: Mon Aug 13 17:05:05 2018 +0200
88
89 cygwin: add missing stdarg.h include
90
91 Further header file standarization in Cygwin uncovered a lazy
92 indirect include in bsd-cygwin_util.c
93
94 Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
95
96commit c3903c38b0fd168ab3d925c2b129d1a599593426
97Author: djm@openbsd.org <djm@openbsd.org>
98Date: Mon Aug 13 02:41:05 2018 +0000
99
100 upstream: revert compat.[ch] section of the following change. It
101
102 causes double-free under some circumstances.
103
104 --
105
106 date: 2018/07/31 03:07:24; author: djm; state: Exp; lines: +33 -18; commitid: f7g4UI8eeOXReTPh;
107 fix some memory leaks spotted by Coverity via Jakub Jelen in bz#2366
108 feedback and ok dtucker@
109
110 OpenBSD-Commit-ID: 1e77547f60fdb5e2ffe23e2e4733c54d8d2d1137
111
112commit 1b9dd4aa15208100fbc3650f33ea052255578282
113Author: djm@openbsd.org <djm@openbsd.org>
114Date: Sun Aug 12 20:19:13 2018 +0000
115
116 upstream: better diagnosics on alg list assembly errors; ok
117
118 deraadt@ markus@
119
120 OpenBSD-Commit-ID: 5a557e74b839daf13cc105924d2af06a1560faee
121
122commit e36a5f61b0f5bebf6d49c215d228cd99dfe86e28
123Author: Damien Miller <djm@mindrot.org>
124Date: Sat Aug 11 18:08:45 2018 -0700
125
126 Some AIX fixes; report from Michael Felt
127
128commit 2f4766ceefe6657c5ad5fe92d13c411872acae0e
129Author: dtucker@openbsd.org <dtucker@openbsd.org>
130Date: Fri Aug 10 01:35:49 2018 +0000
131
132 upstream: The script that cooks up PuTTY format host keys does not
133
134 understand the new key format so convert back to old format to create the
135 PuTTY key and remove it once done.
136
137 OpenBSD-Regress-ID: 2a449a18846c3a144bc645135b551ba6177e38d3
138
139commit e1b26ce504662a5d5b991091228984ccfd25f280
140Author: djm@openbsd.org <djm@openbsd.org>
141Date: Fri Aug 10 00:44:01 2018 +0000
142
143 upstream: improve
144
145 OpenBSD-Commit-ID: 40d839db0977b4e7ac8b647b16d5411d4faf2f60
146
147commit 7c712966a3139622f7fb55045368d05de4e6782c
148Author: djm@openbsd.org <djm@openbsd.org>
149Date: Fri Aug 10 00:42:29 2018 +0000
150
151 upstream: Describe pubkey format, prompted by bz#2853
152
153 While I'm here, describe and link to the remaining local PROTOCOL.*
154 docs that weren't already mentioned (PROTOCOL.key, PROTOCOL.krl and
155 PROTOCOL.mux)
156
157 OpenBSD-Commit-ID: 2a900f9b994ba4d53e7aeb467d44d75829fd1231
158
159commit ef100a2c5a8ed83afac0b8f36520815803da227a
160Author: djm@openbsd.org <djm@openbsd.org>
161Date: Fri Aug 10 00:27:15 2018 +0000
162
163 upstream: fix numbering
164
165 OpenBSD-Commit-ID: bc7a1764dff23fa4c5ff0e3379c9c4d5b63c9596
166
167commit ed7bd5d93fe14c7bd90febd29b858ea985d14d45
168Author: djm@openbsd.org <djm@openbsd.org>
169Date: Wed Aug 8 01:16:01 2018 +0000
170
171 upstream: Use new private key format by default. This format is
172
173 suported by OpenSSH >= 6.5 (released January 2014), so it should be supported
174 by most OpenSSH versions in active use.
175
176 It is possible to convert new-format private keys to the older
177 format using "ssh-keygen -f /path/key -pm PEM".
178
179 ok deraadt dtucker
180
181 OpenBSD-Commit-ID: e3bd4f2509a2103bfa2f710733426af3ad6d8ab8
182
183commit 967226a1bdde59ea137e8f0df871854ff7b91366
184Author: djm@openbsd.org <djm@openbsd.org>
185Date: Sat Aug 4 00:55:06 2018 +0000
186
187 upstream: invalidate dh->priv_key after freeing it in error path;
188
189 avoids unlikely double-free later. Reported by Viktor Dukhovni via
190 https://github.com/openssh/openssh-portable/pull/96 feedback jsing@ tb@
191
192 OpenBSD-Commit-ID: e317eb17c3e05500ae851f279ef6486f0457c805
193
194commit 74287f5df9966a0648b4a68417451dd18f079ab8
195Author: djm@openbsd.org <djm@openbsd.org>
196Date: Tue Jul 31 03:10:27 2018 +0000
197
198 upstream: delay bailout for invalid authentic
199
200 =?UTF-8?q?ating=20user=20until=20after=20the=20packet=20containing=20the?=
201 =?UTF-8?q?=20request=20has=20been=20fully=20parsed.=20Reported=20by=20Dar?=
202 =?UTF-8?q?iusz=20Tytko=20and=20Micha=C5=82=20Sajdak;=20ok=20deraadt?=
203 MIME-Version: 1.0
204 Content-Type: text/plain; charset=UTF-8
205 Content-Transfer-Encoding: 8bit
206
207 OpenBSD-Commit-ID: b4891882fbe413f230fe8ac8a37349b03bd0b70d
208
209commit 1a66079c0669813306cc69e5776a4acd9fb49015
210Author: djm@openbsd.org <djm@openbsd.org>
211Date: Tue Jul 31 03:07:24 2018 +0000
212
213 upstream: fix some memory leaks spotted by Coverity via Jakub Jelen
214
215 in bz#2366 feedback and ok dtucker@
216
217 OpenBSD-Commit-ID: 8402bbae67d578bedbadb0ce68ff7c5a136ef563
218
219commit 87f08be054b7eeadbb9cdeb3fb4872be79ccf218
220Author: Damien Miller <djm@mindrot.org>
221Date: Fri Jul 20 13:18:28 2018 +1000
222
223 Remove support for S/Key
224
225 Most people will 1) be using modern multi-factor authentication methods
226 like TOTP/OATH etc and 2) be getting support for multi-factor
227 authentication via PAM or BSD Auth.
228
229commit 5d14019ba2ff54acbfd20a6b9b96bb860a8c7c31
230Author: markus@openbsd.org <markus@openbsd.org>
231Date: Fri Jul 27 12:03:17 2018 +0000
232
233 upstream: avoid expensive channel_open_message() calls; ok djm@
234
235 OpenBSD-Commit-ID: aea3b5512ad681cd8710367d743e8a753d4425d9
236
237commit e655ee04a3cb7999dbf9641b25192353e2b69418
238Author: dtucker@openbsd.org <dtucker@openbsd.org>
239Date: Fri Jul 27 05:34:42 2018 +0000
240
241 upstream: Now that ssh can't be setuid, remove the
242
243 original_real_uid and original_effective_uid globals and replace with calls
244 to plain getuid(). ok djm@
245
246 OpenBSD-Commit-ID: 92561c0cd418d34e6841e20ba09160583e27b68c
247
248commit 73ddb25bae4c33a0db361ac13f2e3a60d7c6c4a5
249Author: dtucker@openbsd.org <dtucker@openbsd.org>
250Date: Fri Jul 27 05:13:02 2018 +0000
251
252 upstream: Remove uid checks from low port binds. Now that ssh
253
254 cannot be setuid and sshd always has privsep on, we can remove the uid checks
255 for low port binds and just let the system do the check. We leave a sanity
256 check for the !privsep case so long as the code is stil there. with & ok
257 djm@
258
259 OpenBSD-Commit-ID: 9535cfdbd1cd54486fdbedfaee44ce4367ec7ca0
260
261commit c12033e102760d043bc5c98e6c8180e4d331b0df
262Author: dtucker@openbsd.org <dtucker@openbsd.org>
263Date: Fri Jul 27 03:55:22 2018 +0000
264
265 upstream: ssh(1) no longer supports being setuid root. Remove reference
266
267 to crc32 which went with protocol 1. Pointed out by deraadt@.
268
269 OpenBSD-Commit-ID: f8763c25fd96ed91dd1abdab5667fd2e27e377b6
270
271commit 4492e2ec4e1956a277ef507f51d66e5c2aafaaf8
272Author: Damien Miller <djm@mindrot.org>
273Date: Fri Jul 27 14:15:28 2018 +1000
274
275 correct snprintf truncation check in closefrom()
276
277 Truncation cannot happen unless the system has set PATH_MAX to some
278 nonsensically low value.
279
280 bz#2862, patch from Daniel Le
281
282commit 149cab325a8599a003364ed833f878449c15f259
283Author: Darren Tucker <dtucker@dtucker.net>
284Date: Fri Jul 27 13:46:06 2018 +1000
285
286 Include stdarg.h in mkdtemp for va_list.
287
288commit 6728f31bdfdc864d192773c32465b1860e23f556
289Author: deraadt@openbsd.org <deraadt@openbsd.org>
290Date: Wed Jul 25 17:12:35 2018 +0000
291
292 upstream: Don't redefine Makefile choices which come correct from
293
294 bsd.*.mk ok markus
295
296 OpenBSD-Commit-ID: 814b2f670df75759e1581ecef530980b2b3d7e0f
297
298commit 21fd477a855753c1a8e450963669e28e39c3b5d2
299Author: deraadt@openbsd.org <deraadt@openbsd.org>
300Date: Wed Jul 25 13:56:23 2018 +0000
301
302 upstream: fix indent; Clemens Goessnitzer
303
304 OpenBSD-Commit-ID: b5149a6d92b264d35f879d24608087b254857a83
305
306commit 8e433c2083db8664c41499ee146448ea7ebe7dbf
307Author: beck@openbsd.org <beck@openbsd.org>
308Date: Wed Jul 25 13:10:56 2018 +0000
309
310 upstream: Use the caller provided (copied) pwent struct in
311
312 load_public_identity_files instead of calling getpwuid() again and discarding
313 the argument. This prevents a client crash where tilde_expand_filename calls
314 getpwuid() again before the pwent pointer is used. Issue noticed and reported
315 by Pierre-Olivier Martel <pom@apple.com> ok djm@ deraadt@
316
317 OpenBSD-Commit-ID: a067d74b5b098763736c94cc1368de8ea3f0b157
318
319commit e2127abb105ae72b6fda64fff150e6b24b3f1317
320Author: jmc@openbsd.org <jmc@openbsd.org>
321Date: Mon Jul 23 19:53:55 2018 +0000
322
323 upstream: oops, failed to notice that SEE ALSO got messed up;
324
325 OpenBSD-Commit-ID: 61c1306542cefdc6e59ac331751afe961557427d
326
327commit ddf1b797c2d26bbbc9d410aa4f484cbe94673587
328Author: kn@openbsd.org <kn@openbsd.org>
329Date: Mon Jul 23 19:02:49 2018 +0000
330
331 upstream: Point to glob in section 7 for the actual list of special
332
333 characters instead the C API in section 3.
334
335 OK millert jmc nicm, "the right idea" deraadt
336
337 OpenBSD-Commit-ID: a74fd215488c382809e4d041613aeba4a4b1ffc6
338
339commit 01c98d9661d0ed6156e8602b650f72eed9fc4d12
340Author: dtucker@openbsd.org <dtucker@openbsd.org>
341Date: Sun Jul 22 12:16:59 2018 +0000
342
343 upstream: Switch authorized_keys example from ssh-dss to ssh-rsa
344
345 since the former is no longer enabled by default. Pointed out by Daniel A.
346 Maierhofer, ok jmc
347
348 OpenBSD-Commit-ID: 6a196cef53d7524e0c9b58cdbc1b5609debaf8c7
349
350commit 472269f8fe19343971c2d08f504ab5cbb8234b33
351Author: djm@openbsd.org <djm@openbsd.org>
352Date: Fri Jul 20 05:01:10 2018 +0000
353
354 upstream: slightly-clearer description for AuthenticationMethods - the
355
356 lists have comma-separated elements; bz#2663 from Hans Meier
357
358 OpenBSD-Commit-ID: 931c983d0fde4764d0942fb2c2b5017635993b5a
359
360commit c59aca8adbdf7f5597084ad360a19bedb3f80970
361Author: Damien Miller <djm@mindrot.org>
362Date: Fri Jul 20 14:53:42 2018 +1000
363
364 Create control sockets in clean temp directories
365
366 Adds a regress/mkdtemp tool and uses it to create empty temp
367 directories for tests needing control sockets.
368
369 Patch from Colin Watson via bz#2660; ok dtucker
370
371commit 6ad8648e83e4f4ace37b742a05c2a6b6b872514e
372Author: djm@openbsd.org <djm@openbsd.org>
373Date: Fri Jul 20 03:46:34 2018 +0000
374
375 upstream: remove unused zlib.h
376
377 OpenBSD-Commit-ID: 8d274a9b467c7958df12668b49144056819f79f1
378
379commit 3ba6e6883527fe517b6e4a824876e2fe62af22fc
380Author: dtucker@openbsd.org <dtucker@openbsd.org>
381Date: Thu Jul 19 23:03:16 2018 +0000
382
383 upstream: Fix typo in comment. From Alexandru Iacob via github.
384
385 OpenBSD-Commit-ID: eff4ec07c6c8c5483533da43a4dda37d72ef7f1d
386
387commit c77bc73c91bc656e343a1961756e09dd1b170820
388Author: Darren Tucker <dtucker@dtucker.net>
389Date: Fri Jul 20 13:48:51 2018 +1000
390
391 Explicitly include openssl before zlib.
392
393 Some versions of OpenSSL have "free_func" in their headers, which zlib
394 typedefs. Including openssl after zlib (eg via sshkey.h) results in
395 "syntax error before `free_func'", which this fixes.
396
397commit 95d41e90eafcd1286a901e8e361e4a37b98aeb52
398Author: dtucker@openbsd.org <dtucker@openbsd.org>
399Date: Thu Jul 19 10:28:47 2018 +0000
400
401 upstream: Deprecate UsePrivilegedPort now that support for running
402
403 ssh(1) setuid has been removed, remove supporting code and clean up
404 references to it in the man pages
405
406 We have not shipped ssh(1) the setuid bit since 2002. If ayone
407 really needs to make connections from a low port number this can
408 be implemented via a small setuid ProxyCommand.
409
410 ok markus@ jmc@ djm@
411
412 OpenBSD-Commit-ID: d03364610b7123ae4c6792f5274bd147b6de717e
413
414commit 258dc8bb07dfb35a46e52b0822a2c5b7027df60a
415Author: dtucker@openbsd.org <dtucker@openbsd.org>
416Date: Wed Jul 18 11:34:04 2018 +0000
417
418 upstream: Remove support for running ssh(1) setuid and fatal if
419
420 attempted. Do not link uidwap.c into ssh any more. Neuters
421 UsePrivilegedPort, which will be marked as deprecated shortly. ok markus@
422 djm@
423
424 OpenBSD-Commit-ID: c4ba5bf9c096f57a6ed15b713a1d7e9e2e373c42
425
426commit ac590760b251506b0a152551abbf8e8d6dc2f527
427Author: dtucker@openbsd.org <dtucker@openbsd.org>
428Date: Mon Jul 16 22:25:01 2018 +0000
429
430 upstream: Slot 0 in the hostbased key array was previously RSA1,
431
432 but that is now gone and the slot is unused so remove it. Remove two
433 now-unused macros, and add an array bounds check to the two remaining ones
434 (array is statically sized, so mostly a safety check on future changes). ok
435 markus@
436
437 OpenBSD-Commit-ID: 2e4c0ca6cc1d8daeccead2aa56192a3f9d5e1e7a
438
439commit 26efc2f5df0e3bcf6a6bbdd0506fd682d60c2145
440Author: dtucker@openbsd.org <dtucker@openbsd.org>
441Date: Mon Jul 16 11:05:41 2018 +0000
442
443 upstream: Remove support for loading HostBasedAuthentication keys
444
445 directly in ssh(1) and always use ssh-keysign. This removes one of the few
446 remaining reasons why ssh(1) might be setuid. ok markus@
447
448 OpenBSD-Commit-ID: 97f01e1448707129a20d75f86bad5d27c3cf0b7d
449
450commit 3eb7f1038d17af7aea3c2c62d1e30cd545607640
451Author: djm@openbsd.org <djm@openbsd.org>
452Date: Mon Jul 16 07:06:50 2018 +0000
453
454 upstream: keep options.identity_file_userprovided array in sync when we
455
456 load keys, fixing some spurious error messages; ok markus
457
458 OpenBSD-Commit-ID: c63e3d5200ee2cf9e35bda98de847302566c6a00
459
460commit 2f131e1b34502aa19f345e89cabf6fa3fc097f09
461Author: djm@openbsd.org <djm@openbsd.org>
462Date: Mon Jul 16 03:09:59 2018 +0000
463
464 upstream: memleak in unittest; found by valgrind
465
466 OpenBSD-Regress-ID: 168c23b0fb09fc3d0b438628990d3fd9260a8a5e
467
468commit de2997a4cf22ca0a524f0e5b451693c583e2fd89
469Author: djm@openbsd.org <djm@openbsd.org>
470Date: Mon Jul 16 03:09:13 2018 +0000
471
472 upstream: memleaks; found by valgrind
473
474 OpenBSD-Commit-ID: 6c3ba22be53e753c899545f771e8399fc93cd844
475
476commit 61cc0003eb37fa07603c969c12b7c795caa498f3
477Author: Darren Tucker <dtucker@dtucker.net>
478Date: Sat Jul 14 16:49:01 2018 +1000
479
480 Undef a few new macros in sys-queue.h.
481
482 Prevents macro redefinition warnings on OSX.
483
484commit 30a2c213877a54a44dfdffb6ca8db70be5b457e0
485Author: Darren Tucker <dtucker@dtucker.net>
486Date: Fri Jul 13 13:40:20 2018 +1000
487
488 Include unistd.h for geteuid declaration.
489
490commit 1dd32c23f2a85714dfafe2a9cc516971d187caa4
491Author: Darren Tucker <dtucker@dtucker.net>
492Date: Fri Jul 13 13:38:10 2018 +1000
493
494 Fallout from buffer conversion in AUDIT_EVENTS.
495
496 Supply missing "int r" and fix error path for sshbuf_new().
497
498commit 7449c178e943e5c4f6c8416a4e41d93b70c11c9e
499Author: djm@openbsd.org <djm@openbsd.org>
500Date: Fri Jul 13 02:13:50 2018 +0000
501
502 upstream: make this use ssh_proxy rather than starting/stopping a
503
504 daemon for each testcase
505
506 OpenBSD-Regress-ID: 608b7655ea65b1ba8fff5a13ce9caa60ef0c8166
507
508commit dbab02f9208d9baa134cec1d007054ec82b96ca9
509Author: djm@openbsd.org <djm@openbsd.org>
510Date: Fri Jul 13 02:13:19 2018 +0000
511
512 upstream: fix leaks in unit test; with this, all unit tests are
513
514 leak free (as far as valgrind can spot anyway)
515
516 OpenBSD-Regress-ID: b824d8b27998365379963440e5d18b95ca03aa17
517
518commit 2f6accff5085eb79b0dbe262d8b85ed017d1a51c
519Author: Damien Miller <djm@mindrot.org>
520Date: Fri Jul 13 11:39:25 2018 +1000
521
522 Enable leak checks for unit tests with valgrind
523
524 Leave the leak checking on unconditionally when running with valgrind.
525 The unit tests are leak-free and I want them to stay that way.
526
527commit e46cfbd9db5e907b821bf4fd0184d4dab99815ee
528Author: Damien Miller <djm@mindrot.org>
529Date: Fri Jul 13 11:38:59 2018 +1000
530
531 increase timeout to match cfgmatch.sh
532
533 lets test pass under valgrind (on my workstation at least)
534
535commit 6aa1bf475cf3e7a2149acc5a1e80e904749f064c
536Author: Damien Miller <djm@mindrot.org>
537Date: Thu Jul 12 14:54:18 2018 +1000
538
539 rm regress/misc/kexfuzz/*.o in distclean target
540
541commit eef1447ddb559c03725a23d4aa6d03f40e8b0049
542Author: Damien Miller <djm@mindrot.org>
543Date: Thu Jul 12 14:49:26 2018 +1000
544
545 repair !WITH_OPENSSL build
546
547commit 4d3b2f36fd831941d1627ac587faae37b6d3570f
548Author: Damien Miller <djm@mindrot.org>
549Date: Thu Jul 12 14:49:14 2018 +1000
550
551 missing headers
552
553commit 3f420a692b293921216549c1099c2e46ff284eae
554Author: Darren Tucker <dtucker@dtucker.net>
555Date: Thu Jul 12 14:57:46 2018 +1000
556
557 Remove key.h from portable files too.
558
559 Commit 5467fbcb removed key.h so stop including it in portable files
560 too. Fixes builds on lots of platforms.
561
562commit e2c4af311543093f16005c10044f7e06af0426f0
563Author: djm@openbsd.org <djm@openbsd.org>
564Date: Thu Jul 12 04:35:25 2018 +0000
565
566 upstream: remove prototype to long-gone function
567
568 OpenBSD-Commit-ID: 0414642ac7ce01d176b9f359091a66a8bbb640bd
569
570commit 394a842e60674bf8ee5130b9f15b01452a0b0285
571Author: markus@openbsd.org <markus@openbsd.org>
572Date: Wed Jul 11 18:55:11 2018 +0000
573
574 upstream: treat ssh_packet_write_wait() errors as fatal; ok djm@
575
576 OpenBSD-Commit-ID: f88ba43c9d54ed2d911218aa8d3f6285430629c3
577
578commit 5467fbcb09528ecdcb914f4f2452216c24796790
579Author: markus@openbsd.org <markus@openbsd.org>
580Date: Wed Jul 11 18:53:29 2018 +0000
581
582 upstream: remove legacy key emulation layer; ok djm@
583
584 OpenBSD-Commit-ID: 2b1f9619259e222bbd4fe9a8d3a0973eafb9dd8d
585
586commit 5dc4c59d5441a19c99e7945779f7ec9051126c25
587Author: martijn@openbsd.org <martijn@openbsd.org>
588Date: Wed Jul 11 08:19:35 2018 +0000
589
590 upstream: s/wuth/with/ in comment
591
592 OpenBSD-Commit-ID: 9de41468afd75f54a7f47809d2ad664aa577902c
593
594commit 1c688801e9dd7f9889fb2a29bc2b6fbfbc35a11f
595Author: Darren Tucker <dtucker@dtucker.net>
596Date: Wed Jul 11 12:12:38 2018 +1000
597
598 Include stdlib.h for declaration of free.
599
600 Fixes build with -Werror on at least Fedora and probably others.
601
602commit fccfa239def497615f92ed28acc57cfe63da3666
603Author: Damien Miller <djm@mindrot.org>
604Date: Wed Jul 11 10:19:56 2018 +1000
605
606 VALGRIND_CHECK_LEAKS logic was backwards :(
607
608commit 416287d45fcde0a8e66eee8b99aa73bd58607588
609Author: Darren Tucker <dtucker@dtucker.net>
610Date: Wed Jul 11 10:10:26 2018 +1000
611
612 Fix sshbuf_new error path in skey.
613
614commit 7aab109b8b90a353c1af780524f1ac0d3af47bab
615Author: Darren Tucker <dtucker@dtucker.net>
616Date: Wed Jul 11 10:06:18 2018 +1000
617
618 Supply missing third arg in skey.
619
620 During the change to the new buffer api the third arg to
621 sshbuf_get_cstring was ommitted. Fixes build when configured with skey.
622
623commit 380320bb72cc353a901790ab04b6287fd335dc4a
624Author: Darren Tucker <dtucker@dtucker.net>
625Date: Wed Jul 11 10:03:34 2018 +1000
626
627 Supply some more missing "int r" in skey
628
629commit d20720d373d8563ee737d1a45dc5e0804d622dbc
630Author: Damien Miller <djm@mindrot.org>
631Date: Wed Jul 11 09:56:36 2018 +1000
632
633 disable valgrind memleak checking by default
634
635 Add VALGRIND_CHECK_LEAKS knob to turn it back on.
636
637commit 79c9d35018f3a5e30ae437880b669aa8636cd3cd
638Author: Darren Tucker <dtucker@dtucker.net>
639Date: Wed Jul 11 09:54:00 2018 +1000
640
641 Supply missing "int r" in skey code.
642
643commit 984bacfaacbbe31c35191b828fb5b5b2f0362c36
644Author: sf@openbsd.org <sf@openbsd.org>
645Date: Tue Jul 10 09:36:58 2018 +0000
646
647 upstream: re-remove some pre-auth compression bits
648
649 This time, make sure to not remove things that are necessary for
650 pre-auth compression on the client. Add a comment that pre-auth
651 compression is still supported in the client.
652
653 ok markus@
654
655 OpenBSD-Commit-ID: 282c6fec7201f18a5c333bbb68d9339734d2f784
656
657commit 120a1ec74e8d9d29f4eb9a27972ddd22351ddef9
658Author: Damien Miller <djm@mindrot.org>
659Date: Tue Jul 10 19:39:52 2018 +1000
660
661 Adapt portable to legacy buffer API removal
662
663commit 0f3958c1e6ffb8ea4ba27e2a97a00326fce23246
664Author: djm@openbsd.org <djm@openbsd.org>
665Date: Tue Jul 10 09:13:30 2018 +0000
666
667 upstream: kerberos/gssapi fixes for buffer removal
668
669 OpenBSD-Commit-ID: 1cdf56fec95801e4563c47f21696f04cd8b60c4c
670
671commit c74ae8e7c45f325f3387abd48fa7dfef07a08069
672Author: djm@openbsd.org <djm@openbsd.org>
673Date: Tue Jul 10 06:45:29 2018 +0000
674
675 upstream: buffer.[ch] and bufaux.c are no more
676
677 OpenBSD-Commit-ID: d1a1852284e554f39525eb4d4891b207cfb3d3a0
678
679commit a881e5a133d661eca923fb0633a03152ab2b70b2
680Author: djm@openbsd.org <djm@openbsd.org>
681Date: Tue Jul 10 06:43:52 2018 +0000
682
683 upstream: one mention of Buffer that almost got away :)
684
685 OpenBSD-Commit-ID: 30d7c27a90b4544ad5dfacf654595710cd499f02
686
687commit 49f47e656b60bcd1d1db98d88105295f4b4e600d
688Author: markus@openbsd.org <markus@openbsd.org>
689Date: Mon Jul 9 21:59:10 2018 +0000
690
691 upstream: replace cast with call to sshbuf_mutable_ptr(); ok djm@
692
693 OpenBSD-Commit-ID: 4dfe9d29fa93d9231645c89084f7217304f7ba29
694
695commit cb30cd47041edb03476be1c8ef7bc1f4b69d1555
696Author: markus@openbsd.org <markus@openbsd.org>
697Date: Mon Jul 9 21:56:06 2018 +0000
698
699 upstream: remove legacy buffer API emulation layer; ok djm@
700
701 OpenBSD-Commit-ID: 2dd5dc17cbc23195be4299fa93be2707a0e08ad9
702
703commit 235c7c4e3bf046982c2d8242f30aacffa01073d1
704Author: markus@openbsd.org <markus@openbsd.org>
705Date: Mon Jul 9 21:53:45 2018 +0000
706
707 upstream: sshd: switch monitor to sshbuf API; lots of help & ok
708
709 djm@
710
711 OpenBSD-Commit-ID: d89bd02d33974fd35ca0b8940d88572227b34a48
712
713commit b8d9214d969775e409e1408ecdf0d58fad99b344
714Author: markus@openbsd.org <markus@openbsd.org>
715Date: Mon Jul 9 21:37:55 2018 +0000
716
717 upstream: sshd: switch GSSAPI to sshbuf API; ok djm@
718
719 OpenBSD-Commit-ID: e48449ab4be3f006f7ba33c66241b7d652973e30
720
721commit c7d39ac8dc3587c5f05bdd5bcd098eb5c201c0c8
722Author: markus@openbsd.org <markus@openbsd.org>
723Date: Mon Jul 9 21:35:50 2018 +0000
724
725 upstream: sshd: switch authentication to sshbuf API; ok djm@
726
727 OpenBSD-Commit-ID: 880aa06bce4b140781e836bb56bec34873290641
728
729commit c3cb7790e9efb14ba74b2d9f543ad593b3d55b31
730Author: markus@openbsd.org <markus@openbsd.org>
731Date: Mon Jul 9 21:29:36 2018 +0000
732
733 upstream: sshd: switch config to sshbuf API; ok djm@
734
735 OpenBSD-Commit-ID: 72b02017bac7feac48c9dceff8355056bea300bd
736
737commit 2808d18ca47ad3d251836c555f0e22aaca03d15c
738Author: markus@openbsd.org <markus@openbsd.org>
739Date: Mon Jul 9 21:26:02 2018 +0000
740
741 upstream: sshd: switch loginmsg to sshbuf API; ok djm@
742
743 OpenBSD-Commit-ID: f3cb4e54bff15c593602d95cc43e32ee1a4bac42
744
745commit 89dd615b8b531979be63f05f9d5624367c9b28e6
746Author: markus@openbsd.org <markus@openbsd.org>
747Date: Mon Jul 9 21:20:26 2018 +0000
748
749 upstream: ttymodes: switch to sshbuf API; ok djm@
750
751 OpenBSD-Commit-ID: 5df340c5965e822c9da21e19579d08dea3cbe429
752
753commit f4608a7065480516ab46214f554e5f853fb7870f
754Author: markus@openbsd.org <markus@openbsd.org>
755Date: Mon Jul 9 21:18:10 2018 +0000
756
757 upstream: client: switch mux to sshbuf API; with & ok djm@
758
759 OpenBSD-Commit-ID: 5948fb98d704f9c4e075b92edda64e0290b5feb2
760
761commit cecee2d607099a7bba0a84803e2325d15be4277b
762Author: markus@openbsd.org <markus@openbsd.org>
763Date: Mon Jul 9 21:03:30 2018 +0000
764
765 upstream: client: switch to sshbuf API; ok djm@
766
767 OpenBSD-Commit-ID: 60cb0356114acc7625ab85105f6f6a7cd44a8d05
768
769commit ff55f4ad898137d4703e7a2bcc81167dfe8e9324
770Author: markus@openbsd.org <markus@openbsd.org>
771Date: Mon Jul 9 20:39:28 2018 +0000
772
773 upstream: pkcs11: switch to sshbuf API; ok djm@
774
775 OpenBSD-Commit-ID: 98cc4e800f1617c51caf59a6cb3006f14492db79
776
777commit 168b46f405d6736960ba7930389eecb9b6710b7e
778Author: sf@openbsd.org <sf@openbsd.org>
779Date: Mon Jul 9 13:37:10 2018 +0000
780
781 upstream: Revert previous two commits
782
783 It turns out we still support pre-auth compression on the client.
784 Therefore revert the previous two commits:
785
786 date: 2018/07/06 09:06:14; author: sf; commitid: yZVYKIRtUZWD9CmE;
787 Rename COMP_DELAYED to COMP_ZLIB
788
789 Only delayed compression is supported nowadays.
790
791 ok markus@
792
793 date: 2018/07/06 09:05:01; author: sf; commitid: rEGuT5UgI9f6kddP;
794 Remove leftovers from pre-authentication compression
795
796 Support for this has been removed in 2016.
797 COMP_DELAYED will be renamed in a later commit.
798
799 ok markus@
800
801 OpenBSD-Commit-ID: cdfef526357e4e1483c86cf599491b2dafb77772
802
803commit ab39267fa1243d02b6c330615539fc4b21e17dc4
804Author: sf@openbsd.org <sf@openbsd.org>
805Date: Fri Jul 6 09:06:14 2018 +0000
806
807 upstream: Rename COMP_DELAYED to COMP_ZLIB
808
809 Only delayed compression is supported nowadays.
810
811 ok markus@
812
813 OpenBSD-Commit-ID: 5b1dbaf3d9a4085aaa10fec0b7a4364396561821
814
815commit 95db395d2e56a6f868193aead6cadb2493f036c6
816Author: sf@openbsd.org <sf@openbsd.org>
817Date: Fri Jul 6 09:05:01 2018 +0000
818
819 upstream: Remove leftovers from pre-authentication compression
820
821 Support for this has been removed in 2016.
822 COMP_DELAYED will be renamed in a later commit.
823
824 ok markus@
825
826 OpenBSD-Commit-ID: 6a99616c832627157113fcb0cf5a752daf2e6b58
827
828commit f28a4d5cd24c4aa177e96b4f96957991e552cb70
829Author: sf@openbsd.org <sf@openbsd.org>
830Date: Fri Jul 6 09:03:02 2018 +0000
831
832 upstream: Remove unused ssh_packet_start_compression()
833
834 ok markus@
835
836 OpenBSD-Commit-ID: 9d34cf2f59aca5422021ae2857190578187dc2b4
837
838commit 872517ddbb72deaff31d4760f28f2b0a1c16358f
839Author: Darren Tucker <dtucker@dtucker.net>
840Date: Fri Jul 6 13:32:02 2018 +1000
841
842 Defer setting bufsiz in getdelim.
843
844 Do not write to bufsiz until we are sure the malloc has succeeded,
845 in case any callers rely on it (which they shouldn't). ok djm@
846
847commit 3deb56f7190a414dc264e21e087a934fa1847283
848Author: Darren Tucker <dtucker@dtucker.net>
849Date: Thu Jul 5 13:32:01 2018 +1000
850
851 Fix other callers of read_environment_file.
852
853 read_environment_file recently gained an extra argument Some platform
854 specific code also calls it so add the argument to those too. Fixes
855 build on Solaris and AIX.
856
857commit 314908f451e6b2d4ccf6212ad246fa4619c721d3
858Author: djm@openbsd.org <djm@openbsd.org>
859Date: Wed Jul 4 13:51:45 2018 +0000
860
861 upstream: deal with API rename: match_filter_list() =>
862
863 match_filter_blacklist()
864
865 OpenBSD-Regress-ID: 2da342be913efeb51806351af906fab01ba4367f
866
867commit 89f54cdf6b9cf1cf5528fd33897f1443913ddfb4
868Author: djm@openbsd.org <djm@openbsd.org>
869Date: Wed Jul 4 13:51:12 2018 +0000
870
871 upstream: exercise new expansion behaviour of
872
873 PubkeyAcceptedKeyTypes and, by proxy, test kex_assemble_names()
874
875 ok markus@
876
877 OpenBSD-Regress-ID: 292978902e14d5729aa87e492dd166c842f72736
878
879commit 187633f24c71564e970681c8906df5a6017dcccf
880Author: djm@openbsd.org <djm@openbsd.org>
881Date: Tue Jul 3 13:53:26 2018 +0000
882
883 upstream: add a comment that could have saved me 45 minutes of wild
884
885 goose chasing
886
887 OpenBSD-Regress-ID: d469b29ffadd3402c090e21b792d627d46fa5297
888
889commit 312d2f2861a2598ed08587cb6c45c0e98a85408f
890Author: djm@openbsd.org <djm@openbsd.org>
891Date: Wed Jul 4 13:49:31 2018 +0000
892
893 upstream: repair PubkeyAcceptedKeyTypes (and friends) after RSA
894
895 signature work - returns ability to add/remove/specify algorithms by
896 wildcard.
897
898 Algorithm lists are now fully expanded when the server/client configs
899 are finalised, so errors are reported early and the config dumps
900 (e.g. "ssh -G ...") now list the actual algorithms selected.
901
902 Clarify that, while wildcards are accepted in algorithm lists, they
903 aren't full pattern-lists that support negation.
904
905 (lots of) feedback, ok markus@
906
907 OpenBSD-Commit-ID: a8894c5c81f399a002f02ff4fe6b4fa46b1f3207
908
909commit 303af5803bd74bf05d375c04e1a83b40c30b2be5
910Author: djm@openbsd.org <djm@openbsd.org>
911Date: Tue Jul 3 11:43:49 2018 +0000
912
913 upstream: some magic for RSA-SHA2 checks
914
915 OpenBSD-Regress-ID: e5a9b11368ff6d86e7b25ad10ebe43359b471cd4
916
917commit 7d68e262944c1fff1574600fe0e5e92ec8b398f5
918Author: Damien Miller <djm@mindrot.org>
919Date: Tue Jul 3 23:27:11 2018 +1000
920
921 depend
922
923commit b4d4eda633af433d20232cbf7e855ceac8b83fe5
924Author: djm@openbsd.org <djm@openbsd.org>
925Date: Tue Jul 3 13:20:25 2018 +0000
926
927 upstream: some finesse to fix RSA-SHA2 certificate authentication
928
929 for certs hosted in ssh-agent
930
931 OpenBSD-Commit-ID: e5fd5edd726137dda2d020e1cdebc464110a010f
932
933commit d78b75df4a57e0f92295f24298e5f2930e71c172
934Author: djm@openbsd.org <djm@openbsd.org>
935Date: Tue Jul 3 13:07:58 2018 +0000
936
937 upstream: check correct variable; unbreak agent keys
938
939 OpenBSD-Commit-ID: c36981fdf1f3ce04966d3310826a3e1e6233d93e
940
941commit 2f30300c5e15929d0e34013f38d73e857f445e12
942Author: djm@openbsd.org <djm@openbsd.org>
943Date: Tue Jul 3 11:42:12 2018 +0000
944
945 upstream: crank version number to 7.8; needed for new compat flag
946
947 for prior version; part of RSA-SHA2 strictification, ok markus@
948
949 OpenBSD-Commit-ID: 84a11fc0efd2674c050712336b5093f5d408e32b
950
951commit 4ba0d54794814ec0de1ec87987d0c3b89379b436
952Author: djm@openbsd.org <djm@openbsd.org>
953Date: Tue Jul 3 11:39:54 2018 +0000
954
955 upstream: Improve strictness and control over RSA-SHA2 signature
956
957 In ssh, when an agent fails to return a RSA-SHA2 signature when
958 requested and falls back to RSA-SHA1 instead, retry the signature to
959 ensure that the public key algorithm sent in the SSH_MSG_USERAUTH
960 matches the one in the signature itself.
961
962 In sshd, strictly enforce that the public key algorithm sent in the
963 SSH_MSG_USERAUTH message matches what appears in the signature.
964
965 Make the sshd_config PubkeyAcceptedKeyTypes and
966 HostbasedAcceptedKeyTypes options control accepted signature algorithms
967 (previously they selected supported key types). This allows these
968 options to ban RSA-SHA1 in favour of RSA-SHA2.
969
970 Add new signature algorithms "rsa-sha2-256-cert-v01@openssh.com" and
971 "rsa-sha2-512-cert-v01@openssh.com" to force use of RSA-SHA2 signatures
972 with certificate keys.
973
974 feedback and ok markus@
975
976 OpenBSD-Commit-ID: c6e9f6d45eed8962ad502d315d7eaef32c419dde
977
978commit 95344c257412b51199ead18d54eaed5bafb75617
979Author: djm@openbsd.org <djm@openbsd.org>
980Date: Tue Jul 3 10:59:35 2018 +0000
981
982 upstream: allow sshd_config PermitUserEnvironment to accept a
983
984 pattern-list of whitelisted environment variable names in addition to yes|no.
985
986 bz#1800, feedback and ok markus@
987
988 OpenBSD-Commit-ID: 77dc2b468e0bf04b53f333434ba257008a1fdf24
989
990commit 6f56fe4b9578b0627667f8bce69d4d938a88324c
991Author: millert@openbsd.org <millert@openbsd.org>
992Date: Tue Jun 26 11:23:59 2018 +0000
993
994 upstream: Fix "WARNING: line 6 disappeared in /etc/moduli, giving up"
995
996 when choosing a prime. An extra increment of linenum snuck in as part of the
997 conversion to getline(). OK djm@ markus@
998
999 OpenBSD-Commit-ID: 0019225cb52ed621b71cd9f19ee2e78e57e3dd38
1000
1001commit 1eee79a11c1b3594f055b01e387c49c9a6e80005
1002Author: dtucker@openbsd.org <dtucker@openbsd.org>
1003Date: Mon Jul 2 14:13:30 2018 +0000
1004
1005 upstream: One ampersand is enough to backgroud an process. OpenBSD
1006
1007 doesn't seem to mind, but some platforms in -portable object to the second.
1008
1009 OpenBSD-Regress-ID: d6c3e404871764343761dc25c3bbe29c2621ff74
1010
1011commit 6301e6c787d4e26bfae1119ab4f747bbcaa94e44
1012Author: Darren Tucker <dtucker@dtucker.net>
1013Date: Mon Jul 2 21:16:58 2018 +1000
1014
1015 Add implementation of getline.
1016
1017 Add getline for the benefit of platforms that don't have it. Sourced
1018 from NetBSD (OpenBSD's implementation is a little too chummy with the
1019 internals of FILE).
1020
1021commit 84623e0037628f9992839063151f7a9f5f13099a
1022Author: djm@openbsd.org <djm@openbsd.org>
1023Date: Tue Jun 26 02:02:36 2018 +0000
1024
1025 upstream: whitespace
1026
1027 OpenBSD-Commit-ID: 9276951caf4daf555f6d262e95720e7f79244572
1028
1029commit 90e51d672711c19a36573be1785caf35019ae7a8
1030Author: djm@openbsd.org <djm@openbsd.org>
1031Date: Mon Jun 25 22:28:33 2018 +0000
1032
1033 upstream: fix NULL dereference in open_listen_match_tcpip()
1034
1035 OpenBSD-Commit-ID: c968c1d29e392352383c0f9681fcc1e93620c4a9
1036
1037commit f535ff922a67d9fcc5ee69d060d1b21c8bb01d14
1038Author: jmc@openbsd.org <jmc@openbsd.org>
1039Date: Tue Jun 19 05:36:57 2018 +0000
1040
1041 upstream: spelling;
1042
1043 OpenBSD-Commit-ID: db542918185243bea17202383a581851736553cc
1044
1045commit 80e199d6175904152aafc5c297096c3e18297691
1046Author: djm@openbsd.org <djm@openbsd.org>
1047Date: Tue Jun 19 03:02:17 2018 +0000
1048
1049 upstream: test PermitListen with bare port numbers
1050
1051 OpenBSD-Regress-ID: 4b50a02dfb0ccaca08247f3877c444126ba901b3
1052
1053commit 87ddd676da0f3abd08b778b12b53b91b670dc93c
1054Author: djm@openbsd.org <djm@openbsd.org>
1055Date: Tue Jun 19 02:59:41 2018 +0000
1056
1057 upstream: allow bare port numbers to appear in PermitListen directives,
1058
1059 e.g.
1060
1061 PermitListen 2222 8080
1062
1063 is equivalent to:
1064
1065 PermitListen *:2222 *:8080
1066
1067 Some bonus manpage improvements, mostly from markus@
1068
1069 "looks fine" markus@
1070
1071 OpenBSD-Commit-ID: 6546b0cc5aab7f53d65ad0a348ca0ae591d6dd24
1072
1073commit 26f96ca10ad0ec5da9b05b99de1e1ccea15a11be
1074Author: djm@openbsd.org <djm@openbsd.org>
1075Date: Fri Jun 15 07:01:11 2018 +0000
1076
1077 upstream: invalidate supplemental group cache used by
1078
1079 temporarily_use_uid() when the target uid differs; could cause failure to
1080 read authorized_keys under some configurations. patch by Jakub Jelen via
1081 bz2873; ok dtucker, markus
1082
1083 OpenBSD-Commit-ID: 48a345f0ee90f6c465a078eb5e89566b23abd8a1
1084
1085commit 89a85d724765b6b82e0135ee5a1181fdcccea9c6
1086Author: djm@openbsd.org <djm@openbsd.org>
1087Date: Sun Jun 10 23:45:41 2018 +0000
1088
1089 upstream: unbreak SendEnv; patch from tb@
1090
1091 OpenBSD-Commit-ID: fc808daced813242563b80976e1478de95940056
1092
1093commit acf4260f0951f89c64e1ebbc4c92f451768871ad
1094Author: jmc@openbsd.org <jmc@openbsd.org>
1095Date: Sat Jun 9 06:36:31 2018 +0000
1096
1097 upstream: sort previous;
1098
1099 OpenBSD-Commit-ID: 27d80d8b8ca99bc33971dee905e8ffd0053ec411
1100
1101commit 1678d4236451060b735cb242d2e26e1ac99f0947
1102Author: djm@openbsd.org <djm@openbsd.org>
1103Date: Sat Jun 9 03:18:11 2018 +0000
1104
1105 upstream: slightly better wording re handing of $TERM, from Jakub
1106
1107 Jelen via bz2386
1108
1109 OpenBSD-Commit-ID: 14bea3f069a93c8be66a7b97794255a91fece964
1110
1111commit 28013759f09ed3ebf7e8335e83a62936bd7a7f47
1112Author: djm@openbsd.org <djm@openbsd.org>
1113Date: Sat Jun 9 03:03:10 2018 +0000
1114
1115 upstream: add a SetEnv directive for sshd_config to allow an
1116
1117 administrator to explicitly specify environment variables set in sessions
1118 started by sshd. These override the default environment and any variables set
1119 by user configuration (PermitUserEnvironment, etc), but not the SSH_*
1120 variables set by sshd itself.
1121
1122 ok markus@
1123
1124 OpenBSD-Commit-ID: b6a96c0001ccd7dd211df6cae9e961c20fd718c0
1125
1126commit 7082bb58a2eb878d23ec674587c742e5e9673c36
1127Author: djm@openbsd.org <djm@openbsd.org>
1128Date: Sat Jun 9 03:01:12 2018 +0000
1129
1130 upstream: add a SetEnv directive to ssh_config that allows setting
1131
1132 environment variables for the remote session (subject to the server accepting
1133 them)
1134
1135 refactor SendEnv to remove the arbitrary limit of variable names.
1136
1137 ok markus@
1138
1139 OpenBSD-Commit-ID: cfbb00d9b0e10c1ffff1d83424351fd961d1f2be
1140
1141commit 3b9798bda15bd3f598f5ef07595d64e23504da91
1142Author: djm@openbsd.org <djm@openbsd.org>
1143Date: Sat Jun 9 02:58:02 2018 +0000
1144
1145 upstream: reorder child environment preparation so that variables
1146
1147 read from ~/.ssh/environment (if enabled) do not override SSH_* variables set
1148 by the server.
1149
1150 OpenBSD-Commit-ID: 59f9d4c213cdcef2ef21f4b4ae006594dcf2aa7a
1151
1152commit 0368889f82f63c82ff8db9f8c944d89e7c657db4
1153Author: djm@openbsd.org <djm@openbsd.org>
1154Date: Fri Jun 8 03:35:36 2018 +0000
1155
1156 upstream: fix incorrect expansion of %i in
1157
1158 load_public_identity_files(); reported by Roumen Petrov
1159
1160 OpenBSD-Commit-ID: a827289e77149b5e0850d72a350c8b0300e7ef25
1161
1162commit 027607fc2db6a0475a3380f8d95c635482714cb0
1163Author: djm@openbsd.org <djm@openbsd.org>
1164Date: Fri Jun 8 01:55:40 2018 +0000
1165
1166 upstream: fix some over-long lines and __func__ up some debug
1167
1168 messages
1169
1170 OpenBSD-Commit-ID: c70a60b4c8207d9f242fc2351941ba50916bb267
1171
1172commit 6ff6fda705bc204456a5fa12518dde6e8790bb02
1173Author: jmc@openbsd.org <jmc@openbsd.org>
1174Date: Thu Jun 7 11:26:14 2018 +0000
1175
1176 upstream: tweak previous;
1177
1178 OpenBSD-Commit-ID: f98f16af10b28e24bcecb806cb71ea994b648fd6
1179
1180commit f2c06ab8dd90582030991f631a2715216bf45e5a
1181Author: Darren Tucker <dtucker@dtucker.net>
1182Date: Fri Jun 8 17:43:36 2018 +1000
1183
1184 Remove ability to override $LD.
1185
1186 Since autoconf always uses $CC to link C programs, allowing users to
1187 override LD caused mismatches between what LD_LINK_IFELSE thought worked
1188 and what ld thought worked. If you do need to do this kind of thing you
1189 need to set a compiler flag such as gcc's -fuse-ld in LDFLAGS.
1190
1191commit e1542a80797b4ea40a91d2896efdcc76a57056d2
1192Author: Darren Tucker <dtucker@dtucker.net>
1193Date: Fri Jun 8 13:55:59 2018 +1000
1194
1195 Better detection of unsupported compiler options.
1196
1197 Should prevent "unsupported -Wl,-z,retpoline" warnings during linking.
1198 ok djm@
1199
1200commit 57379dbd013ad32ee3f9989bf5f5741065428360
1201Author: djm@openbsd.org <djm@openbsd.org>
1202Date: Thu Jun 7 14:29:43 2018 +0000
1203
1204 upstream: test the correct configuration option name
1205
1206 OpenBSD-Regress-ID: 492279ea9f65657f97a970e0e7c7fd0b339fee23
1207
1208commit 6d41815e202fbd6182c79780b6cc90e1ec1c9981
1209Author: djm@openbsd.org <djm@openbsd.org>
1210Date: Thu Jun 7 09:26:42 2018 +0000
1211
1212 upstream: some permitlisten fixes from markus@ that I missed in my
1213
1214 insomnia-fueled commits last night
1215
1216 OpenBSD-Commit-ID: 26f23622e928996086e85b1419cc1c0f136e359c
1217
1218commit 4319f7a868d86d435fa07112fcb6153895d03a7f
1219Author: djm@openbsd.org <djm@openbsd.org>
1220Date: Thu Jun 7 04:46:34 2018 +0000
1221
1222 upstream: permitlisten/PermitListen unit test from Markus
1223
1224 OpenBSD-Regress-ID: ab12eb42f0e14926980441cf7c058a6d1d832ea5
1225
1226commit fa09076410ffc2d34d454145af23c790d728921e
1227Author: djm@openbsd.org <djm@openbsd.org>
1228Date: Thu Jun 7 04:31:51 2018 +0000
1229
1230 upstream: fix regression caused by recent permitlisten option commit:
1231
1232 authorized_keys lines that contained permitopen/permitlisten were being
1233 treated as invalid.
1234
1235 OpenBSD-Commit-ID: 7ef41d63a5a477b405d142dc925b67d9e7aaa31b
1236
1237commit 7f90635216851f6cb4bf3999e98b825f85d604f8
1238Author: markus@openbsd.org <markus@openbsd.org>
1239Date: Wed Jun 6 18:29:18 2018 +0000
1240
1241 upstream: switch config file parsing to getline(3) as this avoids
1242
1243 static limits noted by gerhard@; ok dtucker@, djm@
1244
1245 OpenBSD-Commit-ID: 6d702eabef0fa12e5a1d75c334a8c8b325298b5c
1246
1247commit 392db2bc83215986a91c0b65feb0e40e7619ce7e
1248Author: djm@openbsd.org <djm@openbsd.org>
1249Date: Wed Jun 6 18:25:33 2018 +0000
1250
1251 upstream: regress test for PermitOpen
1252
1253 OpenBSD-Regress-ID: ce8b5f28fc039f09bb297fc4a92319e65982ddaf
1254
1255commit 803d896ef30758135e2f438bdd1a0be27989e018
1256Author: djm@openbsd.org <djm@openbsd.org>
1257Date: Wed Jun 6 18:24:15 2018 +0000
1258
1259 upstream: man bits for permitlisten authorized_keys option
1260
1261 OpenBSD-Commit-ID: 86910af8f781a4ac5980fea125442eb25466dd78
1262
1263commit 04df43208b5b460d7360e1598f876b92a32f5922
1264Author: djm@openbsd.org <djm@openbsd.org>
1265Date: Wed Jun 6 18:24:00 2018 +0000
1266
1267 upstream: man bits for PermitListen
1268
1269 OpenBSD-Commit-ID: 35b200cba4e46a16a4db6a80ef11838ab0fad67c
1270
1271commit 93c06ab6b77514e0447fe4f1d822afcbb2a9be08
1272Author: djm@openbsd.org <djm@openbsd.org>
1273Date: Wed Jun 6 18:23:32 2018 +0000
1274
1275 upstream: permitlisten option for authorized_keys; ok markus@
1276
1277 OpenBSD-Commit-ID: 8650883018d7aa893173d703379e4456a222c672
1278
1279commit 115063a6647007286cc8ca70abfd2a7585f26ccc
1280Author: djm@openbsd.org <djm@openbsd.org>
1281Date: Wed Jun 6 18:22:41 2018 +0000
1282
1283 upstream: Add a PermitListen directive to control which server-side
1284
1285 addresses may be listened on when the client requests remote forwarding (ssh
1286 -R).
1287
1288 This is the converse of the existing PermitOpen directive and this
1289 includes some refactoring to share much of its implementation.
1290
1291 feedback and ok markus@
1292
1293 OpenBSD-Commit-ID: 15a931238c61a3f2ac74ea18a98c933e358e277f
1294
1295commit 7703ae5f5d42eb302ded51705166ff6e19c92892
1296Author: Darren Tucker <dtucker@dtucker.net>
1297Date: Wed Jun 6 16:04:29 2018 +1000
1298
1299 Use ssh-keygen -A to generate missing host keys.
1300
1301 Instead of testing for each specific key type, use ssh-keygen -A to
1302 generate any missing host key types.
1303
1304commit e8d59fef1098e24f408248dc64e5c8efa5d01f3c
1305Author: jmc@openbsd.org <jmc@openbsd.org>
1306Date: Fri Jun 1 06:23:10 2018 +0000
1307
1308 upstream: add missing punctuation after %i in ssh_config.5, and
1309
1310 make the grammatical format in sshd_config.5 match that in ssh_config.5;
1311
1312 OpenBSD-Commit-ID: e325663b9342f3d556e223e5306e0d5fa1a74fa0
1313
1314commit a1f737d6a99314e291a87856122cb4dbaf64c641
1315Author: jmc@openbsd.org <jmc@openbsd.org>
1316Date: Fri Jun 1 05:52:26 2018 +0000
1317
1318 upstream: oops - further adjustment to text neccessary;
1319
1320 OpenBSD-Commit-ID: 23585576c807743112ab956be0fb3c786bdef025
1321
1322commit 294028493471e0bd0c7ffe55dc0c0a67cba6ec41
1323Author: jmc@openbsd.org <jmc@openbsd.org>
1324Date: Fri Jun 1 05:50:18 2018 +0000
1325
1326 upstream: %U needs to be escaped; tweak text;
1327
1328 OpenBSD-Commit-ID: 30887b73ece257273fb619ab6f4e86dc92ddc15e
1329
1330commit e5019da3c5a31e6e729a565f2b886a80c4be96cc
1331Author: dtucker@openbsd.org <dtucker@openbsd.org>
1332Date: Fri Jun 1 04:31:48 2018 +0000
1333
1334 upstream: Apply umask to all incoming files and directories not
1335
1336 just files. This makes sure it gets applied to directories too, and prevents
1337 a race where files get chmodded after creation. bz#2839, ok djm@
1338
1339 OpenBSD-Commit-ID: 3168ee6c7c39093adac4fd71039600cfa296203b
1340
1341commit a1dcafc41c376332493b9385ee39f9754dc145ec
1342Author: djm@openbsd.org <djm@openbsd.org>
1343Date: Fri Jun 1 03:52:37 2018 +0000
1344
1345 upstream: Adapt to extra default verboisity from ssh-keygen when
1346
1347 searching for and hashing known_hosts entries in a single operation
1348 (ssh-keygen -HF ...) Patch from Anton Kremenetsky
1349
1350 OpenBSD-Regress-ID: 519585a4de35c4611285bd6a7272766c229b19dd
1351
1352commit 76f314c75dffd4a55839d50ee23622edad52c168
1353Author: djm@openbsd.org <djm@openbsd.org>
1354Date: Tue May 22 00:22:49 2018 +0000
1355
1356 upstream: Add TEST_SSH_FAIL_FATAL variable, to force all failures
1357
1358 to instantly abort the test. Useful in capturing clean logs for individual
1359 failure cases.
1360
1361 OpenBSD-Regress-ID: feba18cf338c2328b9601bd4093cabdd9baa3af1
1362
1363commit 065c8c055df8d83ae7c92e5e524a579d87668aab
1364Author: dtucker@openbsd.org <dtucker@openbsd.org>
1365Date: Fri May 11 03:51:06 2018 +0000
1366
1367 upstream: Clean up comment.
1368
1369 OpenBSD-Regress-ID: 6adb35f384d447e7dcb9f170d4f0d546d3973e10
1370
1371commit 01b048c8eba3b021701bd0ab26257fc82903cba8
1372Author: djm@openbsd.org <djm@openbsd.org>
1373Date: Fri Jun 1 04:21:29 2018 +0000
1374
1375 upstream: whitespace
1376
1377 OpenBSD-Commit-ID: e5edb5e843ddc9b73a8e46518899be41d5709add
1378
1379commit 854ae209f992465a276de0b5f10ef770510c2418
1380Author: djm@openbsd.org <djm@openbsd.org>
1381Date: Fri Jun 1 04:05:29 2018 +0000
1382
1383 upstream: make ssh_remote_ipaddr() capable of being called after
1384
1385 the ssh->state has been torn down; bz#2773
1386
1387 OpenBSD-Commit-ID: 167f12523613ca3d16d7716a690e7afa307dc7eb
1388
1389commit 3e088aaf236ef35beeef3c9be93fd53700df5861
1390Author: djm@openbsd.org <djm@openbsd.org>
1391Date: Fri Jun 1 03:51:34 2018 +0000
1392
1393 upstream: return correct exit code when searching for and hashing
1394
1395 known_hosts entries in a single operation (ssh-keygen -HF hostname); bz2772
1396 Report and fix from Anton Kremenetsky
1397
1398 OpenBSD-Commit-ID: ac10ca13eb9bb0bc50fcd42ad11c56c317437b58
1399
1400commit 9c935dd9bf05628826ad2495d3e8bdf3d3271c21
1401Author: djm@openbsd.org <djm@openbsd.org>
1402Date: Fri Jun 1 03:33:53 2018 +0000
1403
1404 upstream: make UID available as a %-expansion everywhere that the
1405
1406 username is available currently. In the client this is via %i, in the server
1407 %U (since %i was already used in the client in some places for this, but used
1408 for something different in the server); bz#2870, ok dtucker@
1409
1410 OpenBSD-Commit-ID: c7e912b0213713316cb55db194b3a6415b3d4b95
1411
1412commit d8748b91d1d6c108c0c260ed41fa55f37b9ef34b
1413Author: djm@openbsd.org <djm@openbsd.org>
1414Date: Fri Jun 1 03:11:49 2018 +0000
1415
1416 upstream: prefer argv0 to "ssh" when re-executing ssh for ProxyJump
1417
1418 directive; bz2831, feedback and ok dtucker@
1419
1420 OpenBSD-Commit-ID: 3cec709a131499fbb0c1ea8a0a9e0b0915ce769e
1421
1422commit fbb4b5fd4f8e0bb89732670a01954e18b69e15ba
1423Author: djm@openbsd.org <djm@openbsd.org>
1424Date: Fri May 25 07:11:01 2018 +0000
1425
1426 upstream: Do not ban PTY allocation when a sshd session is restricted
1427
1428 because the user password is expired as it breaks password change dialog.
1429
1430 regression in openssh-7.7 reported by Daniel Wagner
1431
1432 OpenBSD-Commit-ID: 9fc09c584c6f1964b00595e3abe7f83db4d90d73
1433
1434commit f6a59a22b0c157c4c4e5fd7232f868138223be64
1435Author: djm@openbsd.org <djm@openbsd.org>
1436Date: Fri May 25 04:25:46 2018 +0000
1437
1438 upstream: Fix return value confusion in several functions (readdir,
1439
1440 download and fsync). These should return -1 on error, not a sftp status code.
1441
1442 patch from Petr Cerny in bz#2871
1443
1444 OpenBSD-Commit-ID: 651aa0220ad23c9167d9297a436162d741f97a09
1445
1446commit 1da5934b860ac0378d52d3035b22b6670f6a967e
1447Author: dtucker@openbsd.org <dtucker@openbsd.org>
1448Date: Fri May 25 03:20:59 2018 +0000
1449
1450 upstream: If select() fails in ssh_packet_read_seqnr go directly to
1451
1452 the error path instead of trying to read from the socket on the way out,
1453 which resets errno and causes the true error to be misreported. ok djm@
1454
1455 OpenBSD-Commit-ID: 2614edaadbd05a957aa977728aa7a030af7c6f0a
1456
1457commit 4ef75926ef517d539f2c7aac3188b09f315c86a7
1458Author: Damien Miller <djm@mindrot.org>
1459Date: Fri May 25 13:36:58 2018 +1000
1460
1461 Permit getuid()/geteuid() syscalls.
1462
1463 Requested for Linux/s390; patch from Eduardo Barretto via bz#2752;
1464 ok dtucker
1465
1466commit 4b22fd8ecefd059a66140be67f352eb6145a9d88
1467Author: djm@openbsd.org <djm@openbsd.org>
1468Date: Tue May 22 00:13:26 2018 +0000
1469
1470 upstream: support ProxyJump=none to disable ProxyJump
1471
1472 functionality; bz#2869 ok dtucker@
1473
1474 OpenBSD-Commit-ID: 1c06ee08eb78451b5837fcfd8cbebc5ff3a67a01
1475
1476commit f41bcd70f55b4f0fc4d8e1039cb361ac922b23fb
1477Author: jmc@openbsd.org <jmc@openbsd.org>
1478Date: Tue May 15 05:40:11 2018 +0000
1479
1480 upstream: correct keyowrd name (permitemptypasswords); from brendan
1481
1482 macdonell
1483
1484 OpenBSD-Commit-ID: ef1bdbc936b2ea693ee37a4c20a94d4d43f5fda3
1485
1486commit f18bc97151340127859634d20d79fd39ec8a7f39
1487Author: djm@openbsd.org <djm@openbsd.org>
1488Date: Fri May 11 04:01:11 2018 +0000
1489
1490 upstream: Emphasise that -w implicitly sets Tunnel=point-to-point
1491
1492 and that users should specify an explicit Tunnel directive if they don't want
1493 this. bz#2365.
1494
1495 OpenBSD-Commit-ID: 1a8d9c67ae213ead180481900dbbb3e04864560d
1496
1497commit 32e4e94e1511fe0020fbfbb62399d31b2d22a801
1498Author: Damien Miller <djm@mindrot.org>
1499Date: Mon May 14 14:40:08 2018 +1000
1500
1501 sync fmt_scaled.c
1502
1503 revision 1.17
1504 date: 2018/05/14 04:39:04; author: djm; state: Exp; lines: +5 -2;
1505 commitid: 53zY8GjViUBnWo8Z;
1506 constrain fractional part to [0-9] (less confusing to static analysis); ok ian@
1507
1508commit 54268d589e85ecc43d3eba8d83f327bdada9d696
1509Author: Damien Miller <djm@mindrot.org>
1510Date: Fri May 11 14:04:40 2018 +1000
1511
1512 fix key-options.sh on platforms without openpty(3)
1513
1514 Skip the pty tests if the platform lacks openpty(3) and has to chown(2)
1515 the pty device explicitly. This typically requires root permissions that
1516 this test lacks.
1517
1518 bz#2856 ok dtucker@
1519
1520commit b2140a739be4c3b43cc1dc08322dca39a1e39d20
1521Author: djm@openbsd.org <djm@openbsd.org>
1522Date: Fri May 11 03:38:51 2018 +0000
1523
1524 upstream: implement EMFILE mitigation for ssh-agent: remember the
1525
1526 fd rlimit and stop accepting new connections when it is exceeded (with some
1527 grace). Accept is resumed when enough connections are closed.
1528
1529 bz#2576. feedback deraadt; ok dtucker@
1530
1531 OpenBSD-Commit-ID: 6a85d9cec7b85741961e7116a49f8dae777911ea
1532
1533commit fdba503fdfc647ee8a244002f1581e869c1f3d90
1534Author: dtucker@openbsd.org <dtucker@openbsd.org>
1535Date: Fri May 11 03:22:55 2018 +0000
1536
1537 upstream: Explicit cast when snprintf'ing an uint64. Prevents
1538
1539 warnings on platforms where int64 is long not long long. ok djm@
1540
1541 OpenBSD-Commit-ID: 9c5359e2fbfce11dea2d93f7bc257e84419bd001
1542
1543commit e7751aa4094d51a9bc00778aa8d07e22934c55ee
1544Author: bluhm@openbsd.org <bluhm@openbsd.org>
1545Date: Thu Apr 26 14:47:03 2018 +0000
1546
1547 upstream: Since the previous commit, ssh regress test sftp-chroot was
1548
1549 failing. The sftp program terminated with the wrong exit code as sftp called
1550 fatal() instad of exit(0). So when the sigchld handler waits for the child,
1551 remember that it was found. Then don't expect that main() can wait again. OK
1552 dtucker@
1553
1554 OpenBSD-Commit-ID: bfafd940c0de5297940c71ddf362053db0232266
1555
1556commit 7c15301841e2e9d37cae732400de63ae9c0961d6
1557Author: Darren Tucker <dtucker@dtucker.net>
1558Date: Sun Apr 29 17:54:12 2018 +1000
1559
1560 Use includes.h instead of config.h.
1561
1562 This ensures it picks up the definition of DEF_WEAK, the lack of which
1563 can cause compile errors in some cases (eg modern AIX). From
1564 michael at felt.demon.nl.
1565
1566commit cec338967a666b7c8ad8b88175f2faeddf268116
1567Author: Darren Tucker <dtucker@dtucker.net>
1568Date: Thu Apr 19 09:53:14 2018 +1000
1569
1570 Omit 3des-cbc if OpenSSL built without DES.
1571
1572 Patch from hongxu.jia at windriver.com, ok djm@
1573
1574commit a575ddd58835759393d2dddd16ebe5abdb56485e
1575Author: djm@openbsd.org <djm@openbsd.org>
1576Date: Mon Apr 16 22:50:44 2018 +0000
1577
1578 upstream: Disable SSH2_MSG_DEBUG messages for Twisted Conch clients
1579
1580 without version numbers since they choke on them under some circumstances.
1581 https://twistedmatrix.com/trac/ticket/9422 via Colin Watson
1582
1583 Newer Conch versions have a version number in their ident string and
1584 handle debug messages okay. https://twistedmatrix.com/trac/ticket/9424
1585
1586 OpenBSD-Commit-ID: 6cf7be262af0419c58ddae11324d9c0dc1577539
1587
1588commit 390c7000a8946db565b66eab9e52fb11948711fa
1589Author: djm@openbsd.org <djm@openbsd.org>
1590Date: Sat Apr 14 21:50:41 2018 +0000
1591
1592 upstream: don't free the %C expansion, it's used later for
1593
1594 LocalCommand
1595
1596 OpenBSD-Commit-ID: 857b5cb37b2d856bfdfce61289a415257a487fb1
1597
1598commit 3455f1e7c48e2e549192998d330214975b9b1dc7
1599Author: djm@openbsd.org <djm@openbsd.org>
1600Date: Fri Apr 13 05:04:12 2018 +0000
1601
1602 upstream: notify user immediately when underlying ssh process dies;
1603
1604 patch from Thomas Kuthan in bz2719; ok dtucker@
1605
1606 OpenBSD-Commit-ID: 78fac88c2f08054d1fc5162c43c24162b131cf78
1607
1608commit 1c5b4bc827f4abc3e65888cda061ad5edf1b8c7c
1609Author: Darren Tucker <dtucker@dtucker.net>
1610Date: Fri Apr 13 16:23:57 2018 +1000
1611
1612 Allow nanosleep in preauth privsep child.
1613
1614 The new timing attack mitigation code uses nanosleep in the preauth
1615 codepath, allow in systrace andbox too.
1616
1617commit 0e73428038d5ecfa5d2a28cff26661502a7aff4e
1618Author: Darren Tucker <dtucker@dtucker.net>
1619Date: Fri Apr 13 16:06:29 2018 +1000
1620
1621 Allow nanosleep in preauth privsep child.
1622
1623 The new timing attack mitigation code uses nanosleep in the preauth
1624 codepath, allow in sandbox.
1625
1626commit e9d910b0289c820852f7afa67f584cef1c05fe95
1627Author: dtucker@openbsd.org <dtucker@openbsd.org>
1628Date: Fri Apr 13 03:57:26 2018 +0000
1629
1630 upstream: Defend against user enumeration timing attacks. This
1631
1632 establishes a minimum time for each failed authentication attempt (5ms) and
1633 adds a per-user constant derived from a host secret (0-4ms). Based on work
1634 by joona.kannisto at tut.fi, ok markus@ djm@.
1635
1636 OpenBSD-Commit-ID: b7845b355bb7381703339c8fb0e57e81a20ae5ca
1637
1638commit d97874cbd909eb706886cd0cdd418f812c119ef9
1639Author: Darren Tucker <dtucker@dtucker.net>
1640Date: Fri Apr 13 13:43:55 2018 +1000
1641
1642 Using "==" in shell tests is not portable.
1643
1644 Patch from rsbecker at nexbridge.com.
1645
1646commit cfb1d9bc76734681e3dea532a1504fcd466fbe91
1647Author: Damien Miller <djm@mindrot.org>
1648Date: Fri Apr 13 13:38:06 2018 +1000
1649
1650 Fix tunnel forwarding broken in 7.7p1
1651
1652 bz2855, ok dtucker@
1653
1654commit afa6e79b76fb52a0c09a29688b5c0d125eb08302
1655Author: Damien Miller <djm@mindrot.org>
1656Date: Fri Apr 13 13:31:42 2018 +1000
1657
1658 prefer to use getrandom() for PRNG seeding
1659
1660 Only applies when built --without-openssl. Thanks Jann Horn for
1661 reminder.
1662
1663commit 575fac34a97f69bc217b235f81de9f8f433eceed
1664Author: Darren Tucker <dtucker@dtucker.net>
1665Date: Fri Apr 13 13:13:33 2018 +1000
1666
1667 Revert $REGRESSTMP changes.
1668
1669 Revert 3fd2d229 and subsequent changes as they turned out to be a
1670 portability hassle.
1671
1672commit 10479cc2a4acd6faaf643eb305233b49d70c31c1
1673Author: Damien Miller <djm@mindrot.org>
1674Date: Tue Apr 10 10:19:02 2018 +1000
1675
1676 Many typo fixes from Karsten Weiss
1677
1678 Spotted using https://github.com/lucasdemarchi/codespell
1679
1680commit 907da2f88519b34189fd03fac96de0c52d448233
1681Author: djm@openbsd.org <djm@openbsd.org>
1682Date: Tue Apr 10 00:14:10 2018 +0000
1683
1684 upstream: more typos spotted by Karsten Weiss using codespell
1685
1686 OpenBSD-Regress-ID: d906a2aea0663810a658b7d0bc61a1d2907d4d69
1687
1688commit 37e5f4a7ab9a8026e5fc2f47dafb0f1b123d39e9
1689Author: djm@openbsd.org <djm@openbsd.org>
1690Date: Tue Apr 10 00:13:27 2018 +0000
1691
1692 upstream: make this a bit more portable-friendly
1693
1694 OpenBSD-Regress-ID: 62f7b9e055e8dfaab92b3825f158beeb4ca3f963
1695
1696commit 001aa55484852370488786bd40e9fdad4b465811
1697Author: djm@openbsd.org <djm@openbsd.org>
1698Date: Tue Apr 10 00:10:49 2018 +0000
1699
1700 upstream: lots of typos in comments/docs. Patch from Karsten Weiss
1701
1702 after checking with codespell tool
1703 (https://github.com/lucasdemarchi/codespell)
1704
1705 OpenBSD-Commit-ID: 373222f12d7ab606598a2d36840c60be93568528
1706
1707commit 260ede2787fe80b18b8d5920455b4fb268519c7d
1708Author: djm@openbsd.org <djm@openbsd.org>
1709Date: Mon Apr 9 23:54:49 2018 +0000
1710
1711 upstream: don't kill ssh-agent's listening socket entriely if we
1712
1713 fail to accept a connection; bz#2837, patch from Lukas Kuster
1714
1715 OpenBSD-Commit-ID: 52413f5069179bebf30d38f524afe1a2133c738f
1716
1717commit ebc8b4656f9b0f834a642a9fb3c9fbca86a61838
1718Author: tj@openbsd.org <tj@openbsd.org>
1719Date: Mon Apr 9 20:41:22 2018 +0000
1720
1721 upstream: the UseLogin option was removed, so remove it here too.
1722
1723 ok dtucker
1724
1725 OpenBSD-Commit-ID: 7080be73a64d68e21f22f5408a67a0ba8b1b6b06
1726
1727commit 3e36f281851fc8e9c996b33f108b2ae167314fbe
1728Author: jmc@openbsd.org <jmc@openbsd.org>
1729Date: Sun Apr 8 07:36:02 2018 +0000
1730
1731 upstream: tweak previous;
1732
1733 OpenBSD-Commit-ID: 2b9c23022ea7b9dddb62864de4e906000f9d7474
1734
1735commit 8368571efd6693c5c57f850e23a2372acf3f865f
1736Author: jmc@openbsd.org <jmc@openbsd.org>
1737Date: Sat Apr 7 13:50:10 2018 +0000
1738
1739 upstream: tweak previous;
1740
1741 OpenBSD-Commit-ID: 38e347b6f8e888f5e0700d01abb1eba7caa154f9
1742
1743commit 555294a7279914ae6795b71bedf4e6011b7636df
1744Author: djm@openbsd.org <djm@openbsd.org>
1745Date: Fri Apr 6 13:02:39 2018 +0000
1746
1747 upstream: Allow "SendEnv -PATTERN" to clear environment variables
1748
1749 previously labeled for sendind. bz#1285 ok dtucker@
1750
1751 OpenBSD-Commit-ID: f6fec9e3d0f366f15903094fbe1754cb359a0df9
1752
1753commit 40f5f03544a07ebd2003b443d42e85cb51d94d59
1754Author: djm@openbsd.org <djm@openbsd.org>
1755Date: Fri Apr 6 04:15:45 2018 +0000
1756
1757 upstream: relax checking of authorized_keys environment="..."
1758
1759 options to allow underscores in variable names (regression introduced in
1760 7.7). bz2851, ok deraadt@
1761
1762 OpenBSD-Commit-ID: 69690ffe0c97ff393f2c76d25b4b3d2ed4e4ac9c
1763
1764commit 30fd7f9af0f553aaa2eeda5a1f53f26cfc222b5e
1765Author: djm@openbsd.org <djm@openbsd.org>
1766Date: Fri Apr 6 03:51:27 2018 +0000
1767
1768 upstream: add a couple of missed options to the config dump; patch
1769
1770 from Jakub Jelen via bz2835
1771
1772 OpenBSD-Commit-ID: 5970adadf6ef206bee0dddfc75d24c2019861446
1773
1774commit 8d6829be324452d2acd282d5f8ceb0adaa89a4de
1775Author: djm@openbsd.org <djm@openbsd.org>
1776Date: Fri Apr 6 03:34:27 2018 +0000
1777
1778 upstream: ssh does not accept -oInclude=... on the commandline, the
1779
1780 Include keyword is for configuration files only. bz#2840, patch from Jakub
1781 Jelen
1782
1783 OpenBSD-Commit-ID: 32d052b4a7a7f22df35fe3f71c368c02b02cacb0
1784
1785commit 00c5222ddc0c8edcaa4ea45ac03befdc8013d137
1786Author: djm@openbsd.org <djm@openbsd.org>
1787Date: Thu Apr 5 22:54:28 2018 +0000
1788
1789 upstream: We don't offer CBC cipher by default any more. Spotted by
1790
1791 Renaud Allard (via otto@)
1792
1793 OpenBSD-Commit-ID: a559b1eef741557dd959ae378b665a2977d92dca
1794
1795commit 5ee8448ad7c306f05a9f56769f95336a8269f379
1796Author: job@openbsd.org <job@openbsd.org>
1797Date: Wed Apr 4 15:12:17 2018 +0000
1798
1799 upstream: Update default IPQoS in ssh(1), sshd(8) to DSCP AF21 for
1800
1801 interactive and CS1 for bulk
1802
1803 AF21 was selected as this is the highest priority within the low-latency
1804 service class (and it is higher than what we have today). SSH is elastic
1805 and time-sensitive data, where a user is waiting for a response via the
1806 network in order to continue with a task at hand. As such, these flows
1807 should be considered foreground traffic, with delays or drops to such
1808 traffic directly impacting user-productivity.
1809
1810 For bulk SSH traffic, the CS1 "Lower Effort" marker was chosen to enable
1811 networks implementing a scavanger/lower-than-best effort class to
1812 discriminate scp(1) below normal activities, such as web surfing. In
1813 general this type of bulk SSH traffic is a background activity.
1814
1815 An advantage of using "AF21" for interactive SSH and "CS1" for bulk SSH
1816 is that they are recognisable values on all common platforms (IANA
1817 https://www.iana.org/assignments/dscp-registry/dscp-registry.xml), and
1818 for AF21 specifically a definition of the intended behavior exists
1819 https://tools.ietf.org/html/rfc4594#section-4.7 in addition to the definition
1820 of the Assured Forwarding PHB group https://tools.ietf.org/html/rfc2597, and
1821 for CS1 (Lower Effort) there is https://tools.ietf.org/html/rfc3662
1822
1823 The first three bits of "AF21" map to the equivalent IEEEE 802.1D PCP, IEEE
1824 802.11e, MPLS EXP/CoS and IP Precedence value of 2 (also known as "Immediate",
1825 or "AC_BE"), and CS1's first 3 bits map to IEEEE 802.1D PCP, IEEE 802.11e,
1826 MPLS/CoS and IP Precedence value 1 ("Background" or "AC_BK").
1827
1828 OK deraadt@, "no objection" djm@
1829
1830 OpenBSD-Commit-ID: d11d2a4484f461524ef0c20870523dfcdeb52181
1831
1832commit 424b544fbda963f973da80f884717c3e0a513288
1833Author: dtucker@openbsd.org <dtucker@openbsd.org>
1834Date: Tue Apr 3 02:14:08 2018 +0000
1835
1836 upstream: Import regenerated moduli file.
1837
1838 OpenBSD-Commit-ID: 1de0e85522051eb2ffa00437e1885e9d7b3e0c2e
1839
1840commit 323f66ce934df2da551f256f37d69822428e1ca1
1841Author: dtucker@openbsd.org <dtucker@openbsd.org>
1842Date: Fri Apr 6 04:18:35 2018 +0000
1843
1844 upstream: Add test for username options parsing order, prompted by
1845
1846 bz#2849.
1847
1848 OpenBSD-Regress-ID: 6985cd32f38596882a3ac172ff8c510693b65283
1849
1850commit e8f474554e3bda102a797a2fbab0594ccc66f097
1851Author: Damien Miller <djm@mindrot.org>
1852Date: Fri Apr 6 14:11:44 2018 +1000
1853
1854 Expose SSH_AUTH_INFO_0 to PAM auth modules
1855
1856 bz#2408, patch from Radoslaw Ejsmont; ok dtucker@
1857
1858commit 014ba209cf4c6a159baa30ecebbaddfa97da7100
1859Author: Darren Tucker <dtucker@dtucker.net>
1860Date: Tue Apr 3 12:18:00 2018 +1000
1861
1862 Import regenerated moduli file.
1863
1commit a0349a1cc4a18967ad1dbff5389bcdf9da098814 1864commit a0349a1cc4a18967ad1dbff5389bcdf9da098814
2Author: Damien Miller <djm@mindrot.org> 1865Author: Damien Miller <djm@mindrot.org>
3Date: Mon Apr 2 15:38:28 2018 +1000 1866Date: Mon Apr 2 15:38:28 2018 +1000
@@ -7876,1923 +9739,3 @@ Date: Tue Aug 23 08:17:42 2016 +0000
7876 in addr_match_list() 9739 in addr_match_list()
7877 9740
7878 Upstream-ID: 07c3d53e357214153d9d08f234411e0d1a3d6f5c 9741 Upstream-ID: 07c3d53e357214153d9d08f234411e0d1a3d6f5c
7879
7880commit a39627134f6d90e7009eeb14e9582ecbc7a99192
7881Author: djm@openbsd.org <djm@openbsd.org>
7882Date: Tue Aug 23 06:36:23 2016 +0000
7883
7884 upstream commit
7885
7886 remove Protocol directive from client/server configs that
7887 causes spammy deprecation warnings
7888
7889 hardcode SSH_PROTOCOLS=2, since that's all we support on the server
7890 now (the client still may support both, so it could get confused)
7891
7892 Upstream-Regress-ID: c16662c631af51633f9fd06aca552a70535de181
7893
7894commit 6ee4f1c01ee31e65245881d49d4bccf014956066
7895Author: Damien Miller <djm@mindrot.org>
7896Date: Tue Aug 23 16:33:48 2016 +1000
7897
7898 hook match and utf8 unittests up to Makefile
7899
7900commit 114efe2bc0dd2842d997940a833f115e6fc04854
7901Author: djm@openbsd.org <djm@openbsd.org>
7902Date: Fri Aug 19 06:44:13 2016 +0000
7903
7904 upstream commit
7905
7906 add tests for matching functions
7907
7908 Upstream-Regress-ID: 0869d4f5c5d627c583c6a929d69c17d5dd65882c
7909
7910commit 857568d2ac81c14bcfd625b27536c1e28c992b3c
7911Author: Damien Miller <djm@mindrot.org>
7912Date: Tue Aug 23 14:32:37 2016 +1000
7913
7914 removing UseLogin bits from configure.ac
7915
7916commit cc182d01cef8ca35a1d25ea9bf4e2ff72e588208
7917Author: djm@openbsd.org <djm@openbsd.org>
7918Date: Tue Aug 23 03:24:10 2016 +0000
7919
7920 upstream commit
7921
7922 fix negated address matching where the address list
7923 consists of a single negated match, e.g. "Match addr !192.20.0.1"
7924
7925 Report and patch from Jakub Jelen. bz#2397 ok dtucker@
7926
7927 Upstream-ID: 01dcac3f3e6ca47518cf293e31c73597a4bb40d8
7928
7929commit 4067ec8a4c64ccf16250c35ff577b4422767da64
7930Author: djm@openbsd.org <djm@openbsd.org>
7931Date: Tue Aug 23 03:22:49 2016 +0000
7932
7933 upstream commit
7934
7935 fix matching for pattern lists that contain a single
7936 negated match, e.g. "Host !example"
7937
7938 report and patch from Robin Becker. bz#1918 ok dtucker@
7939
7940 Upstream-ID: 05a0cb323ea4bc20e98db099b42c067bfb9ea1ea
7941
7942commit 83b581862a1dbb06fc859959f829dde2654aef3c
7943Author: djm@openbsd.org <djm@openbsd.org>
7944Date: Fri Aug 19 03:18:06 2016 +0000
7945
7946 upstream commit
7947
7948 remove UseLogin option and support for having /bin/login
7949 manage login sessions; ok deraadt markus dtucker
7950
7951 Upstream-ID: bea7213fbf158efab7e602d9d844fba4837d2712
7952
7953commit ffe6549c2f7a999cc5264b873a60322e91862581
7954Author: naddy@openbsd.org <naddy@openbsd.org>
7955Date: Mon Aug 15 12:32:04 2016 +0000
7956
7957 upstream commit
7958
7959 Catch up with the SSH1 code removal and delete all
7960 mention of protocol 1 particularities, key files and formats, command line
7961 options, and configuration keywords from the server documentation and
7962 examples. ok jmc@
7963
7964 Upstream-ID: 850328854675b4b6a0d4a90f0b4a9dd9ca4e905f
7965
7966commit c38ea634893a1975dbbec798fb968c9488013f4a
7967Author: naddy@openbsd.org <naddy@openbsd.org>
7968Date: Mon Aug 15 12:27:56 2016 +0000
7969
7970 upstream commit
7971
7972 Remove more SSH1 server code: * Drop sshd's -k option. *
7973 Retire configuration keywords that only apply to protocol 1, as well as the
7974 "protocol" keyword. * Remove some related vestiges of protocol 1 support.
7975
7976 ok markus@
7977
7978 Upstream-ID: 9402f82886de917779db12f8ee3f03d4decc244d
7979
7980commit 33ba55d9e358c07f069e579bfab80eccaaad52cb
7981Author: Darren Tucker <dtucker@zip.com.au>
7982Date: Wed Aug 17 16:26:04 2016 +1000
7983
7984 Only check for prctl once.
7985
7986commit 976ba8a8fd66a969bf658280c1e5adf694cc2fc6
7987Author: Darren Tucker <dtucker@zip.com.au>
7988Date: Wed Aug 17 15:33:10 2016 +1000
7989
7990 Fix typo.
7991
7992commit 9abf84c25ff4448891edcde60533a6e7b2870de1
7993Author: Darren Tucker <dtucker@zip.com.au>
7994Date: Wed Aug 17 14:25:43 2016 +1000
7995
7996 Correct LDFLAGS for clang example.
7997
7998 --with-ldflags isn't used until after the -ftrapv test, so mention
7999 LDFLAGS instead for now.
8000
8001commit 1e8013a17ff11e3c6bd0012fb1fc8d5f1330eb21
8002Author: Darren Tucker <dtucker@zip.com.au>
8003Date: Wed Aug 17 14:08:42 2016 +1000
8004
8005 Remove obsolete CVS $Id from source files.
8006
8007 Since -portable switched to git the CVS $Id tags are no longer being
8008 updated and are becoming increasingly misleading. Remove them.
8009
8010commit adab758242121181700e48b4f6c60d6b660411fe
8011Author: Darren Tucker <dtucker@zip.com.au>
8012Date: Wed Aug 17 13:40:58 2016 +1000
8013
8014 Remove now-obsolete CVS $Id tags from text files.
8015
8016 Since -portable switched to git, the CVS $Id tags are no longer being
8017 updated and are becoming increasingly misleading. Remove them.
8018
8019commit 560c0068541315002ec4c1c00a560bbd30f2d671
8020Author: Darren Tucker <dtucker@zip.com.au>
8021Date: Wed Aug 17 13:38:30 2016 +1000
8022
8023 Add a section for compiler specifics.
8024
8025 Add a section for compiler specifics and document the runtime requirements
8026 for clang's integer sanitization.
8027
8028commit a8fc0f42e1eda2fa3393d1ea5e61322d5e07a9cd
8029Author: Darren Tucker <dtucker@zip.com.au>
8030Date: Wed Aug 17 13:35:43 2016 +1000
8031
8032 Test multiplying two long long ints.
8033
8034 When using clang with -ftrapv or -sanitize=integer the tests would pass
8035 but linking would fail with "undefined reference to __mulodi4".
8036 Explicitly test for this before enabling -trapv.
8037
8038commit a1cc637e7e11778eb727559634a6ef1c19c619f6
8039Author: Damien Miller <djm@mindrot.org>
8040Date: Tue Aug 16 14:47:34 2016 +1000
8041
8042 add a --with-login-program configure argument
8043
8044 Saves messing around with LOGIN_PROGRAM env var, which come
8045 packaging environments make hard to do during configure phase.
8046
8047commit 8bd81e1596ab1bab355146cb65e82fb96ade3b23
8048Author: Damien Miller <djm@mindrot.org>
8049Date: Tue Aug 16 13:30:56 2016 +1000
8050
8051 add --with-pam-service to specify PAM service name
8052
8053 Saves messing around with CFLAGS to do it.
8054
8055commit 74433a19bb6f4cef607680fa4d1d7d81ca3826aa
8056Author: Damien Miller <djm@mindrot.org>
8057Date: Tue Aug 16 13:28:23 2016 +1000
8058
8059 fix false positives when compiled with msan
8060
8061 Our explicit_bzero successfully confused clang -fsanitize-memory
8062 in to thinking that memset is never called to initialise memory.
8063 Ensure that it is called in a way that the compiler recognises.
8064
8065commit 6cb6dcffe1a2204ba9006de20f73255c268fcb6b
8066Author: markus@openbsd.org <markus@openbsd.org>
8067Date: Sat Aug 13 17:47:40 2016 +0000
8068
8069 upstream commit
8070
8071 remove ssh1 server code; ok djm@
8072
8073 Upstream-ID: c24c0c32c49b91740d5a94ae914fb1898ea5f534
8074
8075commit 42d47adc5ad1187f22c726cbc52e71d6b1767ca2
8076Author: jca@openbsd.org <jca@openbsd.org>
8077Date: Fri Aug 12 19:19:04 2016 +0000
8078
8079 upstream commit
8080
8081 Use 2001:db8::/32, the official IPv6 subnet for
8082 configuration examples.
8083
8084 This makes the IPv6 example consistent with IPv4, and removes a dubious
8085 mention of a 6bone subnet.
8086
8087 ok sthen@ millert@
8088
8089 Upstream-ID: b027f3d0e0073419a132fd1bf002e8089b233634
8090
8091commit b61f53c0c3b43c28e013d3b3696d64d1c0204821
8092Author: dtucker@openbsd.org <dtucker@openbsd.org>
8093Date: Thu Aug 11 01:42:11 2016 +0000
8094
8095 upstream commit
8096
8097 Update moduli file.
8098
8099 Upstream-ID: 6da9a37f74aef9f9cc639004345ad893cad582d8
8100
8101commit f217d9bd42d306f69f56335231036b44502d8191
8102Author: Darren Tucker <dtucker@zip.com.au>
8103Date: Thu Aug 11 11:42:48 2016 +1000
8104
8105 Import updated moduli.
8106
8107commit 67dca60fbb4923b7a11c1645b90a5ca57c03d8be
8108Author: dtucker@openbsd.org <dtucker@openbsd.org>
8109Date: Mon Aug 8 22:40:57 2016 +0000
8110
8111 upstream commit
8112
8113 Improve error message for overlong ControlPath. ok markus@
8114 djm@
8115
8116 Upstream-ID: aed374e2e88dd3eb41390003e5303d0089861eb5
8117
8118commit 4706c1d8c15cd5565b59512853c2da9bd4ca26c9
8119Author: djm@openbsd.org <djm@openbsd.org>
8120Date: Wed Aug 3 05:41:57 2016 +0000
8121
8122 upstream commit
8123
8124 small refactor of cipher.c: make ciphercontext opaque to
8125 callers feedback and ok markus@
8126
8127 Upstream-ID: 094849f8be68c3bdad2c0f3dee551ecf7be87f6f
8128
8129commit e600348a7afd6325cc5cd783cb424065cbc20434
8130Author: dtucker@openbsd.org <dtucker@openbsd.org>
8131Date: Wed Aug 3 04:23:55 2016 +0000
8132
8133 upstream commit
8134
8135 Fix bug introduced in rev 1.467 which causes
8136 "buffer_get_bignum_ret: incomplete message" errors when built with WITH_SSH1
8137 and run such that no Protocol 1 ephemeral host key is generated (eg "Protocol
8138 2", no SSH1 host key supplied). Reported by rainer.laatsch at t-online.de,
8139 ok deraadt@
8140
8141 Upstream-ID: aa6b132da5c325523aed7989cc5a320497c919dc
8142
8143commit d7e7348e72f9b203189e3fffb75605afecba4fda
8144Author: djm@openbsd.org <djm@openbsd.org>
8145Date: Wed Jul 27 23:18:12 2016 +0000
8146
8147 upstream commit
8148
8149 better bounds check on iovcnt (we only ever use fixed,
8150 positive values)
8151
8152 Upstream-ID: 9baa6eb5cd6e30c9dc7398e5fe853721a3a5bdee
8153
8154commit 5faa52d295f764562ed6dd75c4a4ce9134ae71e3
8155Author: Darren Tucker <dtucker@zip.com.au>
8156Date: Tue Aug 2 15:22:40 2016 +1000
8157
8158 Use tabs consistently inside "case $host".
8159
8160commit 20e5e8ba9c5d868d897896190542213a60fffbd2
8161Author: Darren Tucker <dtucker@zip.com.au>
8162Date: Tue Aug 2 12:16:34 2016 +1000
8163
8164 Explicitly test for broken strnvis.
8165
8166 NetBSD added an strnvis and unfortunately made it incompatible with the
8167 existing one in OpenBSD and Linux's libbsd (the former having existed
8168 for over ten years). Despite this incompatibility being reported during
8169 development (see http://gnats.netbsd.org/44977) they still shipped it.
8170 Even more unfortunately FreeBSD and later MacOS picked up this incompatible
8171 implementation. Try to detect this mess, and assume the only safe option
8172 if we're cross compiling.
8173
8174 OpenBSD 2.9 (2001): strnvis(char *dst, const char *src, size_t dlen, int flag);
8175 NetBSD 6.0 (2012): strnvis(char *dst, size_t dlen, const char *src, int flag);
8176
8177 ok djm@
8178
8179commit b0b48beab1b74100b61ecbadb9140c9ab4c2ea8c
8180Author: Damien Miller <djm@mindrot.org>
8181Date: Tue Aug 2 11:06:23 2016 +1000
8182
8183 update recommended autoconf version
8184
8185commit 23902e31dfd18c6d7bb41ccd73de3b5358a377da
8186Author: Damien Miller <djm@mindrot.org>
8187Date: Tue Aug 2 10:48:04 2016 +1000
8188
8189 update config.guess and config.sub to current
8190
8191 upstream commit 562f3512b3911ba0c77a7f68214881d1f241f46e
8192
8193commit dd1031b78b83083615b68d7163c44f4408635be2
8194Author: Darren Tucker <dtucker@zip.com.au>
8195Date: Tue Aug 2 10:01:52 2016 +1000
8196
8197 Replace spaces with tabs.
8198
8199 Mechanically replace spaces with tabs in compat files not synced with
8200 OpenBSD.
8201
8202commit c20dccb5614c5714f4155dda01bcdebf97cfae7e
8203Author: Darren Tucker <dtucker@zip.com.au>
8204Date: Tue Aug 2 09:44:25 2016 +1000
8205
8206 Strip trailing whitespace.
8207
8208 Mechanically strip trailing whitespace on files not synced with OpenBSD
8209 (or in the case of bsd-snprint.c, rsync).
8210
8211commit 30f9bd1c0963c23bfba8468dfd26aa17609ba42f
8212Author: Darren Tucker <dtucker@zip.com.au>
8213Date: Tue Aug 2 09:06:27 2016 +1000
8214
8215 Repair $OpenBSD markers.
8216
8217commit 9715d4ad4b53877ec23dc8681dd7a405de9419a6
8218Author: Darren Tucker <dtucker@zip.com.au>
8219Date: Tue Aug 2 09:02:42 2016 +1000
8220
8221 Repair $OpenBSD marker.
8222
8223commit cf3e0be7f5828a5e5f6c296a607d20be2f07d60c
8224Author: Tim Rice <tim@multitalents.net>
8225Date: Mon Aug 1 14:31:52 2016 -0700
8226
8227 modified: configure.ac opensshd.init.in
8228 Skip generating missing RSA1 key on startup unless ssh1 support is enabled.
8229 Spotted by Jean-Pierre Radley
8230
8231commit 99522ba7ec6963a05c04a156bf20e3ba3605987c
8232Author: Damien Miller <djm@mindrot.org>
8233Date: Thu Jul 28 08:54:27 2016 +1000
8234
8235 define _OPENBSD_SOURCE for reallocarray on NetBSD
8236
8237 Report by and debugged with Hisashi T Fujinaka, dtucker nailed
8238 the problem (lack of prototype causing return type confusion).
8239
8240commit 3e1e076550c27c6bbdddf36d8f42bd79fbaaa187
8241Author: Damien Miller <djm@mindrot.org>
8242Date: Wed Jul 27 08:25:42 2016 +1000
8243
8244 KNF
8245
8246commit d99ee9c4e5e217e7d05eeec84e9ce641f4675331
8247Author: Damien Miller <djm@mindrot.org>
8248Date: Wed Jul 27 08:25:23 2016 +1000
8249
8250 Linux auditing also needs packet.h
8251
8252commit 393bd381a45884b589baa9aed4394f1d250255ca
8253Author: Damien Miller <djm@mindrot.org>
8254Date: Wed Jul 27 08:18:05 2016 +1000
8255
8256 fix auditing on Linux
8257
8258 get_remote_ipaddr() was replaced with ssh_remote_ipaddr()
8259
8260commit 80e766fb089de4f3c92b1600eb99e9495e37c992
8261Author: Damien Miller <djm@mindrot.org>
8262Date: Sun Jul 24 21:50:13 2016 +1000
8263
8264 crank version numbers
8265
8266commit b1a478792d458f2e938a302e64bab2b520edc1b3
8267Author: djm@openbsd.org <djm@openbsd.org>
8268Date: Sun Jul 24 11:45:36 2016 +0000
8269
8270 upstream commit
8271
8272 openssh-7.3
8273
8274 Upstream-ID: af106a7eb665f642648cf1993e162c899f358718
8275
8276commit 353766e0881f069aeca30275ab706cd60a1a8fdd
8277Author: Darren Tucker <dtucker@zip.com.au>
8278Date: Sat Jul 23 16:14:42 2016 +1000
8279
8280 Move Cygwin IPPORT_RESERVED overrride to defines.h
8281
8282 Patch from vinschen at redhat.com.
8283
8284commit 368dd977ae07afb93f4ecea23615128c95ab2b32
8285Author: djm@openbsd.org <djm@openbsd.org>
8286Date: Sat Jul 23 02:54:08 2016 +0000
8287
8288 upstream commit
8289
8290 fix pledge violation with ssh -f; reported by Valentin
8291 Kozamernik ok dtucker@
8292
8293 Upstream-ID: a61db7988db88d9dac3c4dd70e18876a8edf84aa
8294
8295commit f00211e3c6d24d6ea2b64b4b1209f671f6c1d42e
8296Author: djm@openbsd.org <djm@openbsd.org>
8297Date: Fri Jul 22 07:00:46 2016 +0000
8298
8299 upstream commit
8300
8301 improve wording; suggested by jmc@
8302
8303 Upstream-ID: 55cb0a24c8e0618b3ceec80998dc82c85db2d2f8
8304
8305commit 83cbca693c3b0719270e6a0f2efe3f9ee93a65b8
8306Author: dtucker@openbsd.org <dtucker@openbsd.org>
8307Date: Fri Jul 22 05:46:11 2016 +0000
8308
8309 upstream commit
8310
8311 Lower loglevel for "Authenticated with partial success"
8312 message similar to other similar level. bz#2599, patch from cgallek at
8313 gmail.com, ok markus@
8314
8315 Upstream-ID: 3faab814e947dc7b2e292edede23e94c608cb4dd
8316
8317commit 10358abd087ab228b7ce2048efc4f3854a9ab9a6
8318Author: Damien Miller <djm@mindrot.org>
8319Date: Fri Jul 22 14:06:36 2016 +1000
8320
8321 retry waitpid on EINTR failure
8322
8323 patch from Jakub Jelen on bz#2581; ok dtucker@
8324
8325commit da88a70a89c800e74ea8e5661ffa127a3cc79a92
8326Author: djm@openbsd.org <djm@openbsd.org>
8327Date: Fri Jul 22 03:47:36 2016 +0000
8328
8329 upstream commit
8330
8331 constify a few functions' arguments; patch from Jakub
8332 Jelen bz#2581
8333
8334 Upstream-ID: f2043f51454ea37830ff6ad60c8b32b4220f448d
8335
8336commit c36d91bd4ebf767f310f7cea88d61d1c15f53ddf
8337Author: djm@openbsd.org <djm@openbsd.org>
8338Date: Fri Jul 22 03:39:13 2016 +0000
8339
8340 upstream commit
8341
8342 move debug("%p", key) to before key is free'd; probable
8343 undefined behaviour on strict compilers; reported by Jakub Jelen bz#2581
8344
8345 Upstream-ID: 767f323e1f5819508a0e35e388ec241bac2f953a
8346
8347commit 286f5a77c3bfec1e8892ca268087ac885ac871bf
8348Author: djm@openbsd.org <djm@openbsd.org>
8349Date: Fri Jul 22 03:35:11 2016 +0000
8350
8351 upstream commit
8352
8353 reverse the order in which -J/JumpHost proxies are visited to
8354 be more intuitive and document
8355
8356 reported by and manpage bits naddy@
8357
8358 Upstream-ID: 3a68fd6a841fd6cf8cedf6552a9607ba99df179a
8359
8360commit fcd135c9df440bcd2d5870405ad3311743d78d97
8361Author: dtucker@openbsd.org <dtucker@openbsd.org>
8362Date: Thu Jul 21 01:39:35 2016 +0000
8363
8364 upstream commit
8365
8366 Skip passwords longer than 1k in length so clients can't
8367 easily DoS sshd by sending very long passwords, causing it to spend CPU
8368 hashing them. feedback djm@, ok markus@.
8369
8370 Brought to our attention by tomas.kuthan at oracle.com, shilei-c at
8371 360.cn and coredump at autistici.org
8372
8373 Upstream-ID: d0af7d4a2190b63ba1d38eec502bc4be0be9e333
8374
8375commit 324583e8fb3935690be58790425793df619c6d4d
8376Author: naddy@openbsd.org <naddy@openbsd.org>
8377Date: Wed Jul 20 10:45:27 2016 +0000
8378
8379 upstream commit
8380
8381 Do not clobber the global jump_host variables when
8382 parsing an inactive configuration. ok djm@
8383
8384 Upstream-ID: 5362210944d91417d5976346d41ac0b244350d31
8385
8386commit 32d921c323b989d28405e78d0a8923d12913d737
8387Author: jmc@openbsd.org <jmc@openbsd.org>
8388Date: Tue Jul 19 12:59:16 2016 +0000
8389
8390 upstream commit
8391
8392 tweak previous;
8393
8394 Upstream-ID: f3c1a5b3f05dff366f60c028728a2b43f15ff534
8395
8396commit d7eabc86fa049a12ba2c3fb198bd1d51b37f7025
8397Author: dtucker@openbsd.org <dtucker@openbsd.org>
8398Date: Tue Jul 19 11:38:53 2016 +0000
8399
8400 upstream commit
8401
8402 Allow wildcard for PermitOpen hosts as well as ports.
8403 bz#2582, patch from openssh at mzpqnxow.com and jjelen at redhat.com. ok
8404 markus@
8405
8406 Upstream-ID: af0294e9b9394c4e16e991424ca0a47a7cc605f2
8407
8408commit b98a2a8348e907b3d71caafd80f0be8fdd075943
8409Author: markus@openbsd.org <markus@openbsd.org>
8410Date: Mon Jul 18 11:35:33 2016 +0000
8411
8412 upstream commit
8413
8414 Reduce timing attack against obsolete CBC modes by always
8415 computing the MAC over a fixed size of data. Reported by Jean Paul
8416 Degabriele, Kenny Paterson, Torben Hansen and Martin Albrecht. ok djm@
8417
8418 Upstream-ID: f20a13279b00ba0afbacbcc1f04e62e9d41c2912
8419
8420commit dbf788b4d9d9490a5fff08a7b09888272bb10fcc
8421Author: Darren Tucker <dtucker@zip.com.au>
8422Date: Thu Jul 21 14:17:31 2016 +1000
8423
8424 Search users for one with a valid salt.
8425
8426 If the root account is locked (eg password "!!" or "*LK*") keep looking
8427 until we find a user with a valid salt to use for crypting passwords of
8428 invalid users. ok djm@
8429
8430commit e8b58f48fbb1b524fb4f0d4865fa0005d6a4b782
8431Author: Darren Tucker <dtucker@zip.com.au>
8432Date: Mon Jul 18 17:22:49 2016 +1000
8433
8434 Explicitly specify source files for regress tools.
8435
8436 Since adding $(REGRESSLIBS), $? is wrong because it includes only the
8437 changed source files. $< seems like it'd be right however it doesn't
8438 seem to work on some non-GNU makes, so do what works everywhere.
8439
8440commit eac1bbd06872c273f16ac0f9976b0aef026b701b
8441Author: Darren Tucker <dtucker@zip.com.au>
8442Date: Mon Jul 18 17:12:22 2016 +1000
8443
8444 Conditionally include err.h.
8445
8446commit 0a454147568746c503f669e1ba861f76a2e7a585
8447Author: Darren Tucker <dtucker@zip.com.au>
8448Date: Mon Jul 18 16:26:26 2016 +1000
8449
8450 Remove local implementation of err, errx.
8451
8452 We now have a shared implementation in libopenbsd-compat.
8453
8454commit eb999a4590846ba4d56ddc90bd07c23abfbab7b1
8455Author: djm@openbsd.org <djm@openbsd.org>
8456Date: Mon Jul 18 06:08:01 2016 +0000
8457
8458 upstream commit
8459
8460 Add some unsigned overflow checks for extra_pad. None of
8461 these are reachable with the amount of padding that we use internally.
8462 bz#2566, pointed out by Torben Hansen. ok markus@
8463
8464 Upstream-ID: 4d4be8450ab2fc1b852d5884339f8e8c31c3fd76
8465
8466commit c71ba790c304545464bb494de974cdf0f4b5cf1e
8467Author: Darren Tucker <dtucker@zip.com.au>
8468Date: Mon Jul 18 15:43:25 2016 +1000
8469
8470 Add dependency on libs for unit tests.
8471
8472 Makes "./configure && make tests" work again. ok djm@
8473
8474commit 8199d0311aea3e6fd0284c9025e7a83f4ece79e8
8475Author: Darren Tucker <dtucker@zip.com.au>
8476Date: Mon Jul 18 13:47:39 2016 +1000
8477
8478 Correct location for kexfuzz in clean target.
8479
8480commit 01558b7b07af43da774d3a11a5c51fa9c310849d
8481Author: Darren Tucker <dtucker@zip.com.au>
8482Date: Mon Jul 18 09:33:25 2016 +1000
8483
8484 Handle PAM_MAXTRIES from modules.
8485
8486 bz#2249: handle the case where PAM returns PAM_MAXTRIES by ceasing to offer
8487 password and keyboard-interative authentication methods. Should prevent
8488 "sshd ignoring max retries" warnings in the log. ok djm@
8489
8490 It probably won't trigger with keyboard-interactive in the default
8491 configuration because the retry counter is stored in module-private
8492 storage which goes away with the sshd PAM process (see bz#688). On the
8493 other hand, those cases probably won't log a warning either.
8494
8495commit 65c6c6b567ab5ab12945a5ad8e0ab3a8c26119cc
8496Author: djm@openbsd.org <djm@openbsd.org>
8497Date: Sun Jul 17 04:20:16 2016 +0000
8498
8499 upstream commit
8500
8501 support UTF-8 characters in ssh(1) banners using
8502 schwarze@'s safe fmprintf printer; bz#2058
8503
8504 feedback schwarze@ ok dtucker@
8505
8506 Upstream-ID: a72ce4e3644c957643c9524eea2959e41b91eea7
8507
8508commit e4eb7d910976fbfc7ce3e90c95c11b07b483d0d7
8509Author: jmc@openbsd.org <jmc@openbsd.org>
8510Date: Sat Jul 16 06:57:55 2016 +0000
8511
8512 upstream commit
8513
8514 - add proxyjump to the options list - formatting fixes -
8515 update usage()
8516
8517 ok djm
8518
8519 Upstream-ID: 43d318e14ce677a2eec8f21ef5ba2f9f68a59457
8520
8521commit af1f084857621f14bd9391aba8033d35886c2455
8522Author: dtucker@openbsd.org <dtucker@openbsd.org>
8523Date: Fri Jul 15 05:01:58 2016 +0000
8524
8525 upstream commit
8526
8527 Reduce the syslog level of some relatively common protocol
8528 events from LOG_CRIT by replacing fatal() calls with logdie(). Part of
8529 bz#2585, ok djm@
8530
8531 Upstream-ID: 9005805227c94edf6ac02a160f0e199638d288e5
8532
8533commit bd5f2b78b69cf38d6049a0de445a79c8595e4a1f
8534Author: Damien Miller <djm@mindrot.org>
8535Date: Fri Jul 15 19:14:48 2016 +1000
8536
8537 missing openssl/dh.h
8538
8539commit 4a984fd342effe5f0aad874a0d538c4322d973c0
8540Author: Damien Miller <djm@mindrot.org>
8541Date: Fri Jul 15 18:47:07 2016 +1000
8542
8543 cast to avoid type warning in error message
8544
8545commit 5abfb15ced985c340359ae7fb65a625ed3692b3e
8546Author: Darren Tucker <dtucker@zip.com.au>
8547Date: Fri Jul 15 14:48:30 2016 +1000
8548
8549 Move VA_COPY macro into compat header.
8550
8551 Some AIX compilers unconditionally undefine va_copy but don't set it back
8552 to an internal function, causing link errors. In some compat code we
8553 already use VA_COPY instead so move the two existing instances into the
8554 shared header and use for sshbuf-getput-basic.c too. Should fix building
8555 with at lease some versions of AIX's compiler. bz#2589, ok djm@
8556
8557commit 832b7443b7a8e181c95898bc5d73497b7190decd
8558Author: Damien Miller <djm@mindrot.org>
8559Date: Fri Jul 15 14:45:34 2016 +1000
8560
8561 disable ciphers not supported by OpenSSL
8562
8563 bz#2466 ok dtucker@
8564
8565commit 5fbe93fc6fbb2fe211e035703dec759d095e3dd8
8566Author: Damien Miller <djm@mindrot.org>
8567Date: Fri Jul 15 13:54:31 2016 +1000
8568
8569 add a --disable-pkcs11 knob
8570
8571commit 679ce88ec2a8e2fe6515261c489e8c1449bb9da9
8572Author: Damien Miller <djm@mindrot.org>
8573Date: Fri Jul 15 13:44:38 2016 +1000
8574
8575 fix newline escaping for unsupported_algorithms
8576
8577 The hmac-ripemd160 was incorrect and could lead to broken
8578 Makefiles on systems that lacked support for it, but I made
8579 all the others consistent too.
8580
8581commit ed877ef653847d056bb433975d731b7a1132a979
8582Author: djm@openbsd.org <djm@openbsd.org>
8583Date: Fri Jul 15 00:24:30 2016 +0000
8584
8585 upstream commit
8586
8587 Add a ProxyJump ssh_config(5) option and corresponding -J
8588 ssh(1) command-line flag to allow simplified indirection through a SSH
8589 bastion or "jump host".
8590
8591 These options construct a proxy command that connects to the
8592 specified jump host(s) (more than one may be specified) and uses
8593 port-forwarding to establish a connection to the next destination.
8594
8595 This codifies the safest way of indirecting connections through SSH
8596 servers and makes it easy to use.
8597
8598 ok markus@
8599
8600 Upstream-ID: fa899cb8b26d889da8f142eb9774c1ea36b04397
8601
8602commit 5c02dd126206a26785379e80f2d3848e4470b711
8603Author: Darren Tucker <dtucker@zip.com.au>
8604Date: Fri Jul 15 12:56:39 2016 +1000
8605
8606 Map umac_ctx struct name too.
8607
8608 Prevents size mismatch linker warnings on Solaris 11.
8609
8610commit 283b97ff33ea2c641161950849931bd578de6946
8611Author: Darren Tucker <dtucker@zip.com.au>
8612Date: Fri Jul 15 13:49:44 2016 +1000
8613
8614 Mitigate timing of disallowed users PAM logins.
8615
8616 When sshd decides to not allow a login (eg PermitRootLogin=no) and
8617 it's using PAM, it sends a fake password to PAM so that the timing for
8618 the failure is not noticeably different whether or not the password
8619 is correct. This behaviour can be detected by sending a very long
8620 password string which is slower to hash than the fake password.
8621
8622 Mitigate by constructing an invalid password that is the same length
8623 as the one from the client and thus takes the same time to hash.
8624 Diff from djm@
8625
8626commit 9286875a73b2de7736b5e50692739d314cd8d9dc
8627Author: Darren Tucker <dtucker@zip.com.au>
8628Date: Fri Jul 15 13:32:45 2016 +1000
8629
8630 Determine appropriate salt for invalid users.
8631
8632 When sshd is processing a non-PAM login for a non-existent user it uses
8633 the string from the fakepw structure as the salt for crypt(3)ing the
8634 password supplied by the client. That string has a Blowfish prefix, so on
8635 systems that don't understand that crypt will fail fast due to an invalid
8636 salt, and even on those that do it may have significantly different timing
8637 from the hash methods used for real accounts (eg sha512). This allows
8638 user enumeration by, eg, sending large password strings. This was noted
8639 by EddieEzra.Harari at verint.com (CVE-2016-6210).
8640
8641 To mitigate, use the same hash algorithm that root uses for hashing
8642 passwords for users that do not exist on the system. ok djm@
8643
8644commit a162dd5e58ca5b224d7500abe35e1ef32b5de071
8645Author: Darren Tucker <dtucker@zip.com.au>
8646Date: Thu Jul 14 21:19:59 2016 +1000
8647
8648 OpenSSL 1.1.x not currently supported.
8649
8650commit 7df91b01fc558a33941c5c5f31abbcdc53a729fb
8651Author: Darren Tucker <dtucker@zip.com.au>
8652Date: Thu Jul 14 12:25:24 2016 +1000
8653
8654 Check for VIS_ALL.
8655
8656 If we don't have it, set BROKEN_STRNVIS to activate the compat replacement.
8657
8658commit ee67716f61f1042d5e67f91c23707cca5dcdd7d0
8659Author: dtucker@openbsd.org <dtucker@openbsd.org>
8660Date: Thu Jul 14 01:24:21 2016 +0000
8661
8662 upstream commit
8663
8664 Correct equal in test.
8665
8666 Upstream-Regress-ID: 4e32f7a5c57a619c4e8766cb193be2a1327ec37a
8667
8668commit 372807c2065c8572fdc6478b25cc5ac363743073
8669Author: tb@openbsd.org <tb@openbsd.org>
8670Date: Mon Jul 11 21:38:13 2016 +0000
8671
8672 upstream commit
8673
8674 Add missing "recvfd" pledge promise: Raf Czlonka reported
8675 ssh coredumps when Control* keywords were set in ssh_config. This patch also
8676 fixes similar problems with scp and sftp.
8677
8678 ok deraadt, looks good to millert
8679
8680 Upstream-ID: ca2099eade1ef3e87a79614fefa26a0297ad8a3b
8681
8682commit e0453f3df64bf485c61c7eb6bd12893eee9fe2cd
8683Author: tedu@openbsd.org <tedu@openbsd.org>
8684Date: Mon Jul 11 03:19:44 2016 +0000
8685
8686 upstream commit
8687
8688 obsolete note about fascistloggin is obsolete. ok djm
8689 dtucker
8690
8691 Upstream-ID: dae60df23b2bb0e89f42661ddd96a7b0d1b7215a
8692
8693commit a2333584170a565adf4f209586772ef8053b10b8
8694Author: Darren Tucker <dtucker@zip.com.au>
8695Date: Thu Jul 14 10:59:09 2016 +1000
8696
8697 Add compat code for missing wcwidth.
8698
8699 If we don't have wcwidth force fallback implementations of nl_langinfo
8700 and mbtowc. Based on advice from Ingo Schwarze.
8701
8702commit 8aaec7050614494014c47510b7e94daf6e644c62
8703Author: Damien Miller <djm@mindrot.org>
8704Date: Thu Jul 14 09:48:48 2016 +1000
8705
8706 fix missing include for systems with err.h
8707
8708commit 6310ef27a2567cda66d6cf0c1ad290ee1167f243
8709Author: Darren Tucker <dtucker@zip.com.au>
8710Date: Wed Jul 13 14:42:35 2016 +1000
8711
8712 Move err.h replacements into compat lib.
8713
8714 Move implementations of err.h replacement functions into their own file
8715 in the libopenbsd-compat so we can use them in kexfuzz.c too. ok djm@
8716
8717commit f3f2cc8386868f51440c45210098f65f9787449a
8718Author: Darren Tucker <dtucker@zip.com.au>
8719Date: Mon Jul 11 17:23:38 2016 +1000
8720
8721 Check for wchar.h and langinfo.h
8722
8723 Wrap includes in the appropriate #ifdefs.
8724
8725commit b9c50614eba9d90939b2b119b6e1b7e03b462278
8726Author: Damien Miller <djm@mindrot.org>
8727Date: Fri Jul 8 13:59:13 2016 +1000
8728
8729 whitelist more architectures for seccomp-bpf
8730
8731 bz#2590 - testing and patch from Jakub Jelen
8732
8733commit 18813a32b6fd964037e0f5e1893cb4468ac6a758
8734Author: guenther@openbsd.org <guenther@openbsd.org>
8735Date: Mon Jul 4 18:01:44 2016 +0000
8736
8737 upstream commit
8738
8739 DEBUGLIBS has been broken since the gcc4 switch, so delete
8740 it. CFLAGS contains -g by default anyway
8741
8742 problem noted by Edgar Pettijohn (edgar (at) pettijohn-web.com)
8743 ok millert@ kettenis@ deraadt@
8744
8745 Upstream-Regress-ID: 4a0bb72f95c63f2ae9daa8a040ac23914bddb542
8746
8747commit 6d31193d0baa3da339c196ac49625b7ba1c2ecc7
8748Author: djm@openbsd.org <djm@openbsd.org>
8749Date: Fri Jul 8 03:44:42 2016 +0000
8750
8751 upstream commit
8752
8753 Improve crypto ordering for Encrypt-then-MAC (EtM) mode
8754 MAC algorithms.
8755
8756 Previously we were computing the MAC, decrypting the packet and then
8757 checking the MAC. This gave rise to the possibility of creating a
8758 side-channel oracle in the decryption step, though no such oracle has
8759 been identified.
8760
8761 This adds a mac_check() function that computes and checks the MAC in
8762 one pass, and uses it to advance MAC checking for EtM algorithms to
8763 before payload decryption.
8764
8765 Reported by Jean Paul Degabriele, Kenny Paterson, Torben Hansen and
8766 Martin Albrecht. feedback and ok markus@
8767
8768 Upstream-ID: 1999bb67cab47dda5b10b80d8155fe83d4a1867b
8769
8770commit 71f5598f06941f645a451948c4a5125c83828e1c
8771Author: guenther@openbsd.org <guenther@openbsd.org>
8772Date: Mon Jul 4 18:01:44 2016 +0000
8773
8774 upstream commit
8775
8776 DEBUGLIBS has been broken since the gcc4 switch, so
8777 delete it. CFLAGS contains -g by default anyway
8778
8779 problem noted by Edgar Pettijohn (edgar (at) pettijohn-web.com)
8780 ok millert@ kettenis@ deraadt@
8781
8782 Upstream-ID: 96c5054e3e1f170c6276902d5bc65bb3b87a2603
8783
8784commit e683fc6f1c8c7295648dbda679df8307786ec1ce
8785Author: dtucker@openbsd.org <dtucker@openbsd.org>
8786Date: Thu Jun 30 05:17:05 2016 +0000
8787
8788 upstream commit
8789
8790 Explicitly check for 100% completion to avoid potential
8791 floating point rounding error, which could cause progressmeter to report 99%
8792 on completion. While there invert the test so the 100% case is clearer. with
8793 & ok djm@
8794
8795 Upstream-ID: a166870c5878e422f3c71ff802e2ccd7032f715d
8796
8797commit 772e6cec0ed740fc7db618dc30b4134f5a358b43
8798Author: jmc@openbsd.org <jmc@openbsd.org>
8799Date: Wed Jun 29 17:14:28 2016 +0000
8800
8801 upstream commit
8802
8803 sort the -o list;
8804
8805 Upstream-ID: 1a97465ede8790b4d47cb618269978e07f41f8ac
8806
8807commit 46ecd19e554ccca15a7309cd1b6b44bc8e6b84af
8808Author: djm@openbsd.org <djm@openbsd.org>
8809Date: Thu Jun 23 05:17:51 2016 +0000
8810
8811 upstream commit
8812
8813 fix AuthenticationMethods during configuration re-parse;
8814 reported by Juan Francisco Cantero Hurtado
8815
8816 Upstream-ID: 8ffa1dac25c7577eca8238e825317ab20848f9b4
8817
8818commit 3147e7595d0f2f842a666c844ac53e6c7a253d7e
8819Author: djm@openbsd.org <djm@openbsd.org>
8820Date: Sun Jun 19 07:48:02 2016 +0000
8821
8822 upstream commit
8823
8824 revert 1.34; causes problems loading public keys
8825
8826 reported by semarie@
8827
8828 Upstream-ID: b393794f8935c8b15d98a407fe7721c62d2ed179
8829
8830commit ad23a75509f4320d43f628c50f0817e3ad12bfa7
8831Author: jmc@openbsd.org <jmc@openbsd.org>
8832Date: Fri Jun 17 06:33:30 2016 +0000
8833
8834 upstream commit
8835
8836 grammar fix;
8837
8838 Upstream-ID: 5d5b21c80f1e81db367333ce0bb3e5874fb3e463
8839
8840commit 5e28b1a2a3757548b40018cc2493540a17c82e27
8841Author: djm@openbsd.org <djm@openbsd.org>
8842Date: Fri Jun 17 05:06:23 2016 +0000
8843
8844 upstream commit
8845
8846 translate OpenSSL error codes to something more
8847 meaninful; bz#2522 reported by Jakub Jelen, ok dtucker@
8848
8849 Upstream-ID: 4cb0795a366381724314e6515d57790c5930ffe5
8850
8851commit b64faeb5eda7eff8210c754d00464f9fe9d23de5
8852Author: djm@openbsd.org <djm@openbsd.org>
8853Date: Fri Jun 17 05:03:40 2016 +0000
8854
8855 upstream commit
8856
8857 ban AuthenticationMethods="" and accept
8858 AuthenticationMethods=any for the default behaviour of not requiring multiple
8859 authentication
8860
8861 bz#2398 from Jakub Jelen; ok dtucker@
8862
8863 Upstream-ID: fabd7f44d59e4518d241d0d01e226435cc23cf27
8864
8865commit 9816fc5daee5ca924dd5c4781825afbaab728877
8866Author: dtucker@openbsd.org <dtucker@openbsd.org>
8867Date: Thu Jun 16 11:00:17 2016 +0000
8868
8869 upstream commit
8870
8871 Include stdarg.h for va_copy as per man page.
8872
8873 Upstream-ID: 105d6b2f1af2fbd9d91c893c436ab121434470bd
8874
8875commit b6cf84b51bc0f5889db48bf29a0c771954ade283
8876Author: jmc@openbsd.org <jmc@openbsd.org>
8877Date: Thu Jun 16 06:10:45 2016 +0000
8878
8879 upstream commit
8880
8881 keys stored in openssh format can have comments too; diff
8882 from yonas yanfa, tweaked a bit;
8883
8884 ok djm
8885
8886 Upstream-ID: 03d48536da6e51510d73ade6fcd44ace731ceb27
8887
8888commit aa37768f17d01974b6bfa481e5e83841b6c76f86
8889Author: Darren Tucker <dtucker@zip.com.au>
8890Date: Mon Jun 20 15:55:34 2016 +1000
8891
8892 get_remote_name_or_ip inside LOGIN_NEEDS_UTMPX
8893
8894 Apply the same get_remote_name_or_ip -> session_get_remote_name_or_ip
8895 change as commit 95767262 to the code inside #ifdef LOGIN_NEEDS_UTMPX.
8896 Fixes build on AIX.
8897
8898commit 009891afc8df37bc2101e15d1e0b6433cfb90549
8899Author: Darren Tucker <dtucker@zip.com.au>
8900Date: Fri Jun 17 14:34:09 2016 +1000
8901
8902 Remove duplicate code from PAM. ok djm@
8903
8904commit e690fe85750e93fca1fb7c7c8587d4130a4f7aba
8905Author: dtucker@openbsd.org <dtucker@openbsd.org>
8906Date: Wed Jun 15 00:40:40 2016 +0000
8907
8908 upstream commit
8909
8910 Remove "POSSIBLE BREAK-IN ATTEMPT!" from log message
8911 about forward and reverse DNS not matching. We haven't supported IP-based
8912 auth methods for a very long time so it's now misleading. part of bz#2585,
8913 ok markus@
8914
8915 Upstream-ID: 5565ef0ee0599b27f0bd1d3bb1f8a323d8274e29
8916
8917commit 57b4ee04cad0d3e0fec1194753b0c4d31e39a1cd
8918Author: Darren Tucker <dtucker@zip.com.au>
8919Date: Wed Jun 15 11:22:38 2016 +1000
8920
8921 Move platform_disable_tracing into its own file.
8922
8923 Prevents link errors resolving the extern "options" when platform.o
8924 gets linked into ssh-agent when building --with-pam.
8925
8926commit 78dc8e3724e30ee3e1983ce013e80277dc6ca070
8927Author: Darren Tucker <dtucker@zip.com.au>
8928Date: Tue Jun 14 13:55:12 2016 +1000
8929
8930 Track skipped upstream commit IDs.
8931
8932 There are a small number of "upstream" commits that do not correspond to
8933 a file in -portable. This file tracks those so that we can reconcile
8934 OpenBSD and Portable to ensure that no commits are accidentally missed.
8935
8936 If you add something to .skipped-commit-ids please also add an upstream
8937 ID line in the following format when you commit it.
8938
8939 Upstream-ID: 321065a95a7ccebdd5fd08482a1e19afbf524e35
8940 Upstream-ID: d4f699a421504df35254cf1c6f1a7c304fb907ca
8941 Upstream-ID: aafe246655b53b52bc32c8a24002bc262f4230f7
8942 Upstream-ID: 8fa9cd1dee3c3339ae329cf20fb591db6d605120
8943 Upstream-ID: f31327a48dd4103333cc53315ec53fe65ed8a17a
8944 Upstream-ID: edbfde98c40007b7752a4ac106095e060c25c1ef
8945 Upstream-ID: 052fd565e3ff2d8cec3bc957d1788f50c827f8e2
8946 Upstream-ID: 7cf73737f357492776223da1c09179fa6ba74660
8947 Upstream-ID: 180d84674be1344e45a63990d60349988187c1ae
8948 Upstream-ID: f6ae971186ba68d066cd102e57d5b0b2c211a5ee
8949
8950commit 9f919d1a3219d476d6a662d18df058e1c4f36a6f
8951Author: Darren Tucker <dtucker@zip.com.au>
8952Date: Tue Jun 14 13:51:01 2016 +1000
8953
8954 Remove now-defunct .cvsignore files. ok djm
8955
8956commit 68777faf271efb2713960605c748f6c8a4b26d55
8957Author: dtucker@openbsd.org <dtucker@openbsd.org>
8958Date: Wed Jun 8 02:13:01 2016 +0000
8959
8960 upstream commit
8961
8962 Back out rev 1.28 "Check min and max sizes sent by the
8963 client" change. It caused "key_verify failed for server_host_key" in clients
8964 that send a DH-GEX min value less that DH_GRP_MIN, eg old OpenSSH and PuTTY.
8965 ok djm@
8966
8967 Upstream-ID: 452979d3ca5c1e9dff063287ea0a5314dd091f65
8968
8969commit a86ec4d0737ac5879223e7cd9d68c448df46e169
8970Author: Darren Tucker <dtucker@zip.com.au>
8971Date: Tue Jun 14 10:48:27 2016 +1000
8972
8973 Use Solaris setpflags(__PROC_PROTECT, ...).
8974
8975 Where possible, use Solaris setpflags to disable process tracing on
8976 ssh-agent and sftp-server. bz#2584, based on a patch from huieying.lee
8977 at oracle.com, ok djm.
8978
8979commit 0f916d39b039fdc0b5baf9b5ab0754c0f11ec573
8980Author: Darren Tucker <dtucker@zip.com.au>
8981Date: Tue Jun 14 10:43:53 2016 +1000
8982
8983 Shorten prctl code a tiny bit.
8984
8985commit 0fb7f5985351fbbcd2613d8485482c538e5123be
8986Author: Darren Tucker <dtucker@zip.com.au>
8987Date: Thu Jun 9 16:23:07 2016 +1000
8988
8989 Move prctl PR_SET_DUMPABLE into platform.c.
8990
8991 This should make it easier to add additional platform support such as
8992 Solaris (bz#2584).
8993
8994commit e6508898c3cd838324ecfe1abd0eb8cf802e7106
8995Author: dtucker@openbsd.org <dtucker@openbsd.org>
8996Date: Fri Jun 3 04:10:41 2016 +0000
8997
8998 upstream commit
8999
9000 Add a test for ssh(1)'s config file parsing.
9001
9002 Upstream-Regress-ID: 558b7f4dc45cc3761cc3d3e889b9f3c5bc91e601
9003
9004commit ab0a536066dfa32def0bd7272c096ebb5eb25b11
9005Author: dtucker@openbsd.org <dtucker@openbsd.org>
9006Date: Fri Jun 3 03:47:59 2016 +0000
9007
9008 upstream commit
9009
9010 Add 'sshd' to the test ID as I'm about to add a similar
9011 set for ssh.
9012
9013 Upstream-Regress-ID: aea7a9c3bac638530165c801ce836875b228ae7a
9014
9015commit a5577c1ed3ecdfe4b7b1107c526cae886fc91afb
9016Author: schwarze@openbsd.org <schwarze@openbsd.org>
9017Date: Mon May 30 12:14:08 2016 +0000
9018
9019 upstream commit
9020
9021 stricter malloc.conf(5) options for utf8 tests
9022
9023 Upstream-Regress-ID: 111efe20a0fb692fa1a987f6e823310f9b25abf6
9024
9025commit 75f0844b4f29d62ec3a5e166d2ee94b02df819fc
9026Author: schwarze@openbsd.org <schwarze@openbsd.org>
9027Date: Mon May 30 12:05:56 2016 +0000
9028
9029 upstream commit
9030
9031 Fix two rare edge cases: 1. If vasprintf() returns < 0,
9032 do not access a NULL pointer in snmprintf(), and do not free() the pointer
9033 returned from vasprintf() because on some systems other than OpenBSD, it
9034 might be a bogus pointer. 2. If vasprintf() returns == 0, return 0 and ""
9035 rather than -1 and NULL.
9036
9037 Besides, free(dst) is pointless after failure (not a bug).
9038
9039 One half OK martijn@, the other half OK deraadt@;
9040 committing quickly before people get hurt.
9041
9042 Upstream-Regress-ID: b164f20923812c9bac69856dbc1385eb1522cba4
9043
9044commit 016881eb33a7948028848c90f4c7ac42e3af0e87
9045Author: schwarze@openbsd.org <schwarze@openbsd.org>
9046Date: Thu May 26 19:14:25 2016 +0000
9047
9048 upstream commit
9049
9050 test the new utf8 module
9051
9052 Upstream-Regress-ID: c923d05a20e84e4ef152cbec947fdc4ce6eabbe3
9053
9054commit d4219028bdef448e089376f3afe81ef6079da264
9055Author: dtucker@openbsd.org <dtucker@openbsd.org>
9056Date: Tue May 3 15:30:46 2016 +0000
9057
9058 upstream commit
9059
9060 Set umask to prevent "Bad owner or permissions" errors.
9061
9062 Upstream-Regress-ID: 8fdf2fc4eb595ccd80c443f474d639f851145417
9063
9064commit 07d5608bb237e9b3fe86a2aeaa429392230faebf
9065Author: djm@openbsd.org <djm@openbsd.org>
9066Date: Tue May 3 14:41:04 2016 +0000
9067
9068 upstream commit
9069
9070 support doas
9071
9072 Upstream-Regress-ID: 8d5572b27ea810394eeda432d8b4e9e1064a7c38
9073
9074commit 01cabf10adc7676cba5f40536a34d3b246edb73f
9075Author: djm@openbsd.org <djm@openbsd.org>
9076Date: Tue May 3 13:48:33 2016 +0000
9077
9078 upstream commit
9079
9080 unit tests for sshbuf_dup_string()
9081
9082 Upstream-Regress-ID: 7521ff150dc7f20511d1c2c48fd3318e5850a96d
9083
9084commit 6915f1698e3d1dd4e22eac20f435e1dfc1d46372
9085Author: jmc@openbsd.org <jmc@openbsd.org>
9086Date: Fri Jun 3 06:44:12 2016 +0000
9087
9088 upstream commit
9089
9090 tweak previous;
9091
9092 Upstream-ID: 92979f1a0b63e041a0e5b08c9ed0ba9b683a3698
9093
9094commit 0cb2f4c2494b115d0f346ed2d8b603ab3ba643f4
9095Author: dtucker@openbsd.org <dtucker@openbsd.org>
9096Date: Fri Jun 3 04:09:38 2016 +0000
9097
9098 upstream commit
9099
9100 Allow ExitOnForwardFailure and ClearAllForwardings to be
9101 overridden when using ssh -W (but still default to yes in that case).
9102 bz#2577, ok djm@.
9103
9104 Upstream-ID: 4b20c419e93ca11a861c81c284090cfabc8c54d4
9105
9106commit 8543ff3f5020fe659839b15f05b8c522bde6cee5
9107Author: dtucker@openbsd.org <dtucker@openbsd.org>
9108Date: Fri Jun 3 03:14:41 2016 +0000
9109
9110 upstream commit
9111
9112 Move the host and port used by ssh -W into the Options
9113 struct. This will make future changes a bit easier. ok djm@
9114
9115 Upstream-ID: 151bce5ecab2fbedf0d836250a27968d30389382
9116
9117commit 6b87311d3acdc460f926b2c40f4c4f3fd345f368
9118Author: dtucker@openbsd.org <dtucker@openbsd.org>
9119Date: Wed Jun 1 04:19:49 2016 +0000
9120
9121 upstream commit
9122
9123 Check min and max sizes sent by the client against what
9124 we support before passing them to the monitor. ok djm@
9125
9126 Upstream-ID: 750627e8117084215412bff00a25b1586ab17ece
9127
9128commit 564cd2a8926ccb1dca43a535073540935b5e0373
9129Author: dtucker@openbsd.org <dtucker@openbsd.org>
9130Date: Tue May 31 23:46:14 2016 +0000
9131
9132 upstream commit
9133
9134 Ensure that the client's proposed DH-GEX max value is at
9135 least as big as the minimum the server will accept. ok djm@
9136
9137 Upstream-ID: b4b84fa04aab2de7e79a6fee4a6e1c189c0fe775
9138
9139commit df820722e40309c9b3f360ea4ed47a584ed74333
9140Author: Darren Tucker <dtucker@zip.com.au>
9141Date: Mon Jun 6 11:36:13 2016 +1000
9142
9143 Add compat bits to utf8.c.
9144
9145commit 05c6574652571becfe9d924226c967a3f4b3f879
9146Author: Darren Tucker <dtucker@zip.com.au>
9147Date: Mon Jun 6 11:33:43 2016 +1000
9148
9149 Fix utf->utf8 typo.
9150
9151commit 6c1717190b4d5ddd729cd9e24e8ed71ed4f087ce
9152Author: schwarze@openbsd.org <schwarze@openbsd.org>
9153Date: Mon May 30 18:34:41 2016 +0000
9154
9155 upstream commit
9156
9157 Backout rev. 1.43 for now.
9158
9159 The function update_progress_meter() calls refresh_progress_meter()
9160 which calls snmprintf() which calls malloc(); but update_progress_meter()
9161 acts as the SIGALRM signal handler.
9162
9163 "malloc(): error: recursive call" reported by sobrado@.
9164
9165 Upstream-ID: aaae57989431e5239c101f8310f74ccc83aeb93e
9166
9167commit cd9e1eabeb4137182200035ab6fa4522f8d24044
9168Author: schwarze@openbsd.org <schwarze@openbsd.org>
9169Date: Mon May 30 12:57:21 2016 +0000
9170
9171 upstream commit
9172
9173 Even when only writing an unescaped character, the dst
9174 buffer may need to grow, or it would be overrun; issue found by tb@ with
9175 malloc.conf(5) 'C'.
9176
9177 While here, reserve an additional byte for the terminating NUL
9178 up front such that we don't have to realloc() later just for that.
9179
9180 OK tb@
9181
9182 Upstream-ID: 30ebcc0c097c4571b16f0a78b44969f170db0cff
9183
9184commit ac284a355f8065eaef2a16f446f3c44cdd17371d
9185Author: schwarze@openbsd.org <schwarze@openbsd.org>
9186Date: Mon May 30 12:05:56 2016 +0000
9187
9188 upstream commit
9189
9190 Fix two rare edge cases: 1. If vasprintf() returns < 0,
9191 do not access a NULL pointer in snmprintf(), and do not free() the pointer
9192 returned from vasprintf() because on some systems other than OpenBSD, it
9193 might be a bogus pointer. 2. If vasprintf() returns == 0, return 0 and ""
9194 rather than -1 and NULL.
9195
9196 Besides, free(dst) is pointless after failure (not a bug).
9197
9198 One half OK martijn@, the other half OK deraadt@;
9199 committing quickly before people get hurt.
9200
9201 Upstream-ID: b7bcd2e82fc168a8eff94e41f5db336ed986fed0
9202
9203commit 0e059cdf5fd86297546c63fa8607c24059118832
9204Author: schwarze@openbsd.org <schwarze@openbsd.org>
9205Date: Wed May 25 23:48:45 2016 +0000
9206
9207 upstream commit
9208
9209 To prevent screwing up terminal settings when printing to
9210 the terminal, for ASCII and UTF-8, escape bytes not forming characters and
9211 bytes forming non-printable characters with vis(3) VIS_OCTAL. For other
9212 character sets, abort printing of the current string in these cases. In
9213 particular, * let scp(1) respect the local user's LC_CTYPE locale(1); *
9214 sanitize data received from the remote host; * sanitize filenames, usernames,
9215 and similar data even locally; * take character display widths into account
9216 for the progressmeter.
9217
9218 This is believed to be sufficient to keep the local terminal safe
9219 on OpenBSD, but bad things can still happen on other systems with
9220 state-dependent locales because many places in the code print
9221 unencoded ASCII characters into the output stream.
9222
9223 Using feedback from djm@ and martijn@,
9224 various aspects discussed with many others.
9225
9226 deraadt@ says it should go in now, i probably already hesitated too long
9227
9228 Upstream-ID: e66afbc94ee396ddcaffd433b9a3b80f387647e0
9229
9230commit 8c02e3639acefe1e447e293dbe23a0917abd3734
9231Author: dtucker@openbsd.org <dtucker@openbsd.org>
9232Date: Tue May 24 04:43:45 2016 +0000
9233
9234 upstream commit
9235
9236 KNF compression proposal and simplify the client side a
9237 little. ok djm@
9238
9239 Upstream-ID: aa814b694efe9e5af8a26e4c80a05526ae6d6605
9240
9241commit 7ec4946fb686813eb5f8c57397e465f5485159f4
9242Author: dtucker@openbsd.org <dtucker@openbsd.org>
9243Date: Tue May 24 02:31:57 2016 +0000
9244
9245 upstream commit
9246
9247 Back out 'plug memleak'.
9248
9249 Upstream-ID: 4faacdde136c24a961e24538de373660f869dbc0
9250
9251commit 82f24c3ddc52053aeb7beb3332fa94c92014b0c5
9252Author: djm@openbsd.org <djm@openbsd.org>
9253Date: Mon May 23 23:30:50 2016 +0000
9254
9255 upstream commit
9256
9257 prefer agent-hosted keys to keys from PKCS#11; ok markus
9258
9259 Upstream-ID: 7417f7653d58d6306d9f8c08d0263d050e2fd8f4
9260
9261commit a0cb7778fbc9b43458f7072eb68dd858766384d1
9262Author: dtucker@openbsd.org <dtucker@openbsd.org>
9263Date: Mon May 23 00:17:27 2016 +0000
9264
9265 upstream commit
9266
9267 Plug mem leak in filter_proposal. ok djm@
9268
9269 Upstream-ID: bf968da7cfcea2a41902832e7d548356a4e2af34
9270
9271commit ae9c0d4d5c581b3040d1f16b5c5f4b1cd1616743
9272Author: Darren Tucker <dtucker@zip.com.au>
9273Date: Fri Jun 3 16:03:44 2016 +1000
9274
9275 Update vis.h and vis.c from OpenBSD.
9276
9277 This will be needed for the upcoming utf8 changes.
9278
9279commit e1d93705f8f48f519433d6ca9fc3d0abe92a1b77
9280Author: Tim Rice <tim@multitalents.net>
9281Date: Tue May 31 11:13:22 2016 -0700
9282
9283 modified: configure.ac
9284 whitspace clean up. No code changes.
9285
9286commit 604a037d84e41e31f0aec9075df0b8740c130200
9287Author: Damien Miller <djm@mindrot.org>
9288Date: Tue May 31 16:45:28 2016 +1000
9289
9290 whitespace at EOL
9291
9292commit 18424200160ff5c923113e0a37ebe21ab7bcd17c
9293Author: Darren Tucker <dtucker@zip.com.au>
9294Date: Mon May 30 19:35:28 2016 +1000
9295
9296 Add missing ssh-host-config --name option
9297
9298 Patch from vinschen@redhat.com.
9299
9300commit 39c0cecaa188a37a2e134795caa68e03f3ced592
9301Author: Darren Tucker <dtucker@zip.com.au>
9302Date: Fri May 20 10:01:58 2016 +1000
9303
9304 Fix comment about sshpam_const and AIX.
9305
9306 From mschwager via github.
9307
9308commit f64062b1f74ad5ee20a8a49aab2732efd0f7ce30
9309Author: Damien Miller <djm@mindrot.org>
9310Date: Fri May 20 09:56:53 2016 +1000
9311
9312 Deny lstat syscalls in seccomp sandbox
9313
9314 Avoids sandbox violations for some krb/gssapi libraries.
9315
9316commit 531c135409b8d8810795b1f3692a4ebfd5c9cae0
9317Author: djm@openbsd.org <djm@openbsd.org>
9318Date: Thu May 19 07:45:32 2016 +0000
9319
9320 upstream commit
9321
9322 fix type of ed25519 values
9323
9324 Upstream-ID: b32d0cb372bbe918ca2de56906901eae225a59b0
9325
9326commit 75e21688f523799c9e0cc6601d76a9c5ca79f787
9327Author: markus@openbsd.org <markus@openbsd.org>
9328Date: Wed May 4 14:32:26 2016 +0000
9329
9330 upstream commit
9331
9332 add IdentityAgent; noticed & ok jmc@
9333
9334 Upstream-ID: 4ba9034b00a4cf1beae627f0728da897802df88a
9335
9336commit 1a75d14daf4b60db903e6103cf50e74e0cd0a76b
9337Author: markus@openbsd.org <markus@openbsd.org>
9338Date: Wed May 4 14:29:58 2016 +0000
9339
9340 upstream commit
9341
9342 allow setting IdentityAgent to SSH_AUTH_SOCK; ok djm@
9343
9344 Upstream-ID: 20c508480d8db3eef18942c0fc39b1fcf25652ac
9345
9346commit 0516454151ae722fc8256c3c56115c6baf24c5b0
9347Author: markus@openbsd.org <markus@openbsd.org>
9348Date: Wed May 4 14:22:33 2016 +0000
9349
9350 upstream commit
9351
9352 move SSH_MSG_NONE, so we don't have to include ssh1.h;
9353 ok deraadt@
9354
9355 Upstream-ID: c2f97502efc761a41b18c17ddf460e138ca7994e
9356
9357commit 332ff3d770631e7513fea38cf0d3689f673f0e3f
9358Author: Damien Miller <djm@mindrot.org>
9359Date: Tue May 10 09:51:06 2016 +1000
9360
9361 initialise salen in binresvport_sa
9362
9363 avoids failures with UsePrivilegedPort=yes
9364
9365 patch from Juan Gallego
9366
9367commit c5c1d5d2f04ce00d2ddd6647e61b32f28be39804
9368Author: markus@openbsd.org <markus@openbsd.org>
9369Date: Wed May 4 14:04:40 2016 +0000
9370
9371 upstream commit
9372
9373 missing const in prototypes (ssh1)
9374
9375 Upstream-ID: 789c6ad4928b5fa557369b88c3a6a34926082c05
9376
9377commit 9faae50e2e82ba42eb0cb2726bf6830fe7948f28
9378Author: dtucker@openbsd.org <dtucker@openbsd.org>
9379Date: Wed May 4 14:00:09 2016 +0000
9380
9381 upstream commit
9382
9383 Fix inverted logic for updating StreamLocalBindMask which
9384 would cause the server to set an invalid mask. ok djm@
9385
9386 Upstream-ID: 8a4404c8307a5ef9e07ee2169fc6d8106b527587
9387
9388commit b02ad1ce9105bfa7394ac7590c0729dd52e26a81
9389Author: markus@openbsd.org <markus@openbsd.org>
9390Date: Wed May 4 12:21:53 2016 +0000
9391
9392 upstream commit
9393
9394 IdentityAgent for specifying specific agent sockets; ok
9395 djm@
9396
9397 Upstream-ID: 3e6a15eb89ea0fd406f108826b7dc7dec4fbfac1
9398
9399commit 910e59bba09ac309d78ce61e356da35292212935
9400Author: djm@openbsd.org <djm@openbsd.org>
9401Date: Wed May 4 12:16:39 2016 +0000
9402
9403 upstream commit
9404
9405 fix junk characters after quotes
9406
9407 Upstream-ID: cc4d0cd32cb6b55a2ef98975d2f7ae857d0dc578
9408
9409commit 9283884e647b8be50ccd2997537af0065672107d
9410Author: jmc@openbsd.org <jmc@openbsd.org>
9411Date: Tue May 3 18:38:12 2016 +0000
9412
9413 upstream commit
9414
9415 correct article;
9416
9417 Upstream-ID: 1fbd5b7ab16d2d9834ec79c3cedd4738fa42a168
9418
9419commit cfefbcea1057c2623e76c579174a4107a0b6e6cd
9420Author: djm@openbsd.org <djm@openbsd.org>
9421Date: Tue May 3 15:57:39 2016 +0000
9422
9423 upstream commit
9424
9425 fix overriding of StreamLocalBindMask and
9426 StreamLocalBindUnlink in Match blocks; found the hard way Rogan Dawes
9427
9428 Upstream-ID: 940bc69ec0249ab428d24ccd0722ce35cb932ee2
9429
9430commit 771c2f51ffc0c9a2877b7892fada0c77bd1f6549
9431Author: djm@openbsd.org <djm@openbsd.org>
9432Date: Tue May 3 15:25:06 2016 +0000
9433
9434 upstream commit
9435
9436 don't forget to include StreamLocalBindUnlink in the
9437 config dump output
9438
9439 Upstream-ID: 14a6d970b3b45c8e94272e3c661e9a0b2a0ee7cb
9440
9441commit cdcd941994dc430f50d0a4e6a712d32b66e6199e
9442Author: djm@openbsd.org <djm@openbsd.org>
9443Date: Tue May 3 14:54:08 2016 +0000
9444
9445 upstream commit
9446
9447 make nethack^wrandomart fingerprint flag more readily
9448 searchable pointed out by Matt Johnston
9449
9450 Upstream-ID: cb40d0235dc153c478c1aad3bc60b195422a54fb
9451
9452commit 05855bf2ce7d5cd0a6db18bc0b4214ed5ef7516d
9453Author: djm@openbsd.org <djm@openbsd.org>
9454Date: Tue May 3 13:10:24 2016 +0000
9455
9456 upstream commit
9457
9458 clarify ordering of subkeys; pointed out by ietf-ssh AT
9459 stbuehler.de
9460
9461 Upstream-ID: 05ebe9f949449a555ebce8e0aad7c8c9acaf8463
9462
9463commit cca3b4395807bfb7aaeb83d2838f5c062ce30566
9464Author: dtucker@openbsd.org <dtucker@openbsd.org>
9465Date: Tue May 3 12:15:49 2016 +0000
9466
9467 upstream commit
9468
9469 Use a subshell for constructing key types to work around
9470 different sed behaviours for -portable.
9471
9472 Upstream-Regress-ID: 0f6eb673162df229eda9a134a0f10da16151552d
9473
9474commit fa58208c6502dcce3e0daac0ca991ee657daf1f5
9475Author: djm@openbsd.org <djm@openbsd.org>
9476Date: Tue May 3 10:27:59 2016 +0000
9477
9478 upstream commit
9479
9480 correct some typos and remove a long-stale XXX note.
9481
9482 add specification for ed25519 certificates
9483
9484 mention no host certificate options/extensions are currently defined
9485
9486 pointed out by Simon Tatham
9487
9488 Upstream-ID: 7b535ab7dba3340b7d8210ede6791fdaefdf839a
9489
9490commit b466f956c32cbaff4200bfcd5db6739fe4bc7d04
9491Author: djm@openbsd.org <djm@openbsd.org>
9492Date: Tue May 3 10:24:27 2016 +0000
9493
9494 upstream commit
9495
9496 add ed25519 keys that are supported but missing from this
9497 documents; from Peter Moody
9498
9499 Upstream-ID: 8caac2d8e8cfd2fca6dc304877346e0a064b014b
9500
9501commit 7f3d76319a69dab2efe3a520a8fef5b97e923636
9502Author: dtucker@openbsd.org <dtucker@openbsd.org>
9503Date: Tue May 3 09:03:49 2016 +0000
9504
9505 upstream commit
9506
9507 Implement IUTF8 as per draft-sgtatham-secsh-iutf8-00. Patch
9508 from Simon Tatham, ok markus@
9509
9510 Upstream-ID: 58268ebdf37d9d467f78216c681705a5e10c58e8
9511
9512commit 31bc01c05d9f51bee3ebe33dc57c4fafb059fb62
9513Author: djm@openbsd.org <djm@openbsd.org>
9514Date: Mon May 2 14:10:58 2016 +0000
9515
9516 upstream commit
9517
9518 unbreak config parsing on reexec from previous commit
9519
9520 Upstream-ID: bc69932638a291770955bd05ca55a32660a613ab
9521
9522commit 67f1459efd2e85bf03d032539283fa8107218936
9523Author: djm@openbsd.org <djm@openbsd.org>
9524Date: Mon May 2 09:52:00 2016 +0000
9525
9526 upstream commit
9527
9528 unit and regress tests for SHA256/512; ok markus
9529
9530 Upstream-Regress-ID: a0cd1a92dc824067076a5fcef83c18df9b0bf2c6
9531
9532commit 0e8eeec8e75f6d0eaf33317376f773160018a9c7
9533Author: djm@openbsd.org <djm@openbsd.org>
9534Date: Mon May 2 10:26:04 2016 +0000
9535
9536 upstream commit
9537
9538 add support for additional fixed DH groups from
9539 draft-ietf-curdle-ssh-kex-sha2-03
9540
9541 diffie-hellman-group14-sha256 (2K group)
9542 diffie-hellman-group16-sha512 (4K group)
9543 diffie-hellman-group18-sha512 (8K group)
9544
9545 based on patch from Mark D. Baushke and Darren Tucker
9546 ok markus@
9547
9548 Upstream-ID: ac00406ada4f0dfec41585ca0839f039545bc46f
9549
9550commit 57464e3934ba53ad8590ee3ccd840f693407fc1e
9551Author: djm@openbsd.org <djm@openbsd.org>
9552Date: Mon May 2 09:36:42 2016 +0000
9553
9554 upstream commit
9555
9556 support SHA256 and SHA512 RSA signatures in certificates;
9557 ok markus@
9558
9559 Upstream-ID: b45be2f2ce8cacd794dc5730edaabc90e5eb434a
9560
9561commit 1a31d02b2411c4718de58ce796dbb7b5e14db93e
9562Author: djm@openbsd.org <djm@openbsd.org>
9563Date: Mon May 2 08:49:03 2016 +0000
9564
9565 upstream commit
9566
9567 fix signed/unsigned errors reported by clang-3.7; add
9568 sshbuf_dup_string() to replace a common idiom of strdup(sshbuf_ptr()) with
9569 better safety checking; feedback and ok markus@
9570
9571 Upstream-ID: 71f926d9bb3f1efed51319a6daf37e93d57c8820
9572
9573commit d2d6bf864e52af8491a60dd507f85b74361f5da3
9574Author: djm@openbsd.org <djm@openbsd.org>
9575Date: Fri Apr 29 08:07:53 2016 +0000
9576
9577 upstream commit
9578
9579 close ControlPersist background process stderr when not
9580 in debug mode or when logging to a file or syslog. bz#1988 ok dtucker
9581
9582 Upstream-ID: 4fb726f0fdcb155ad419913cea10dc4afd409d24
9583
9584commit 9ee692fa1146e887e008a2b9a3d3ea81770c9fc8
9585Author: djm@openbsd.org <djm@openbsd.org>
9586Date: Thu Apr 28 14:30:21 2016 +0000
9587
9588 upstream commit
9589
9590 fix comment
9591
9592 Upstream-ID: 313a385bd7b69a82f8e28ecbaf5789c774457b15
9593
9594commit ee1e0a16ff2ba41a4d203c7670b54644b6c57fa6
9595Author: jmc@openbsd.org <jmc@openbsd.org>
9596Date: Wed Apr 27 13:53:48 2016 +0000
9597
9598 upstream commit
9599
9600 cidr permitted for {allow,deny}users; from lars nooden ok djm
9601
9602 Upstream-ID: 13e7327fe85f6c63f3f7f069e0fdc8c351515d11
9603
9604commit b6e0140a5aa883c27b98415bd8aa9f65fc04ee22
9605Author: djm@openbsd.org <djm@openbsd.org>
9606Date: Thu Apr 21 06:08:02 2016 +0000
9607
9608 upstream commit
9609
9610 make argument == NULL tests more consistent
9611
9612 Upstream-ID: dc4816678704aa5cbda3a702e0fa2033ff04581d
9613
9614commit 6aaabc2b610e44bae473457ad9556ffb43d90ee3
9615Author: jmc@openbsd.org <jmc@openbsd.org>
9616Date: Sun Apr 17 14:34:46 2016 +0000
9617
9618 upstream commit
9619
9620 tweak previous;
9621
9622 Upstream-ID: 46c1bab91c164078edbccd5f7d06b9058edd814f
9623
9624commit 0f839e5969efa3bda615991be8a9d9311554c573
9625Author: djm@openbsd.org <djm@openbsd.org>
9626Date: Fri Apr 15 02:57:10 2016 +0000
9627
9628 upstream commit
9629
9630 missing bit of Include regress
9631
9632 Upstream-Regress-ID: 1063595f7f40f8489a1b7a27230b9e8acccea34f
9633
9634commit 12e4ac46aed681da55c2bba3cd11dfcab23591be
9635Author: djm@openbsd.org <djm@openbsd.org>
9636Date: Fri Apr 15 02:55:53 2016 +0000
9637
9638 upstream commit
9639
9640 remove redundant CLEANFILES section
9641
9642 Upstream-Regress-ID: 29ef1b267fa56daa60a1463396635e7d53afb587
9643
9644commit b1d05aa653ae560c44baf8e8a9756e33f98ea75c
9645Author: djm@openbsd.org <djm@openbsd.org>
9646Date: Fri Apr 15 00:48:01 2016 +0000
9647
9648 upstream commit
9649
9650 sync CLEANFILES with portable, sort
9651
9652 Upstream-Regress-ID: cb782f4f1ab3e079efbc335c6b64942f790766ed
9653
9654commit 35f22dad263cce5c61d933ae439998cb965b8748
9655Author: djm@openbsd.org <djm@openbsd.org>
9656Date: Fri Apr 15 00:31:10 2016 +0000
9657
9658 upstream commit
9659
9660 regression test for ssh_config Include directive
9661
9662 Upstream-Regress-ID: 46a38c8101f635461c506d1aac2d96af80f97f1e
9663
9664commit 6b8a1a87005818d4700ce8b42faef746e82c1f51
9665Author: djm@openbsd.org <djm@openbsd.org>
9666Date: Thu Apr 14 23:57:17 2016 +0000
9667
9668 upstream commit
9669
9670 unbreak test for recent ssh de-duplicated forwarding
9671 change
9672
9673 Upstream-Regress-ID: 6b2b115d99acd7cff13986e6739ea214cf2a3da3
9674
9675commit 076787702418985a2cc6808212dc28ce7afc01f0
9676Author: djm@openbsd.org <djm@openbsd.org>
9677Date: Thu Apr 14 23:21:42 2016 +0000
9678
9679 upstream commit
9680
9681 add test knob and warning for StrictModes
9682
9683 Upstream-Regress-ID: 8cd10952ce7898655ee58945904f2a0a3bdf7682
9684
9685commit dc7990be865450574c7940c9880567f5d2555b37
9686Author: djm@openbsd.org <djm@openbsd.org>
9687Date: Fri Apr 15 00:30:19 2016 +0000
9688
9689 upstream commit
9690
9691 Include directive for ssh_config(5); feedback & ok markus@
9692
9693 Upstream-ID: ae3b76e2e343322b9f74acde6f1e1c5f027d5fff
9694
9695commit 85bdcd7c92fe7ff133bbc4e10a65c91810f88755
9696Author: Damien Miller <djm@mindrot.org>
9697Date: Wed Apr 13 10:39:57 2016 +1000
9698
9699 ignore PAM environment vars when UseLogin=yes
9700
9701 If PAM is configured to read user-specified environment variables
9702 and UseLogin=yes in sshd_config, then a hostile local user may
9703 attack /bin/login via LD_PRELOAD or similar environment variables
9704 set via PAM.
9705
9706 CVE-2015-8325, found by Shayan Sadigh, via Colin Watson
9707
9708commit dce19bf6e4a2a3d0b13a81224de63fc316461ab9
9709Author: djm@openbsd.org <djm@openbsd.org>
9710Date: Sat Apr 9 12:39:30 2016 +0000
9711
9712 upstream commit
9713
9714 make private key loading functions consistently handle NULL
9715 key pointer arguments; ok markus@
9716
9717 Upstream-ID: 92038726ef4a338169c35dacc9c5a07fcc7fa761
9718
9719commit 5f41f030e2feb5295657285aa8c6602c7810bc4b
9720Author: Darren Tucker <dtucker@zip.com.au>
9721Date: Fri Apr 8 21:14:13 2016 +1000
9722
9723 Remove NO_IPPORT_RESERVED_CONCEPT
9724
9725 Replace by defining IPPORT_RESERVED to zero on Cygwin, which should have
9726 the same effect without causing problems syncing patches with OpenBSD.
9727 Resync the two affected functions with OpenBSD. ok djm, sanity checked
9728 by Corinna.
9729
9730commit 34a01b2cf737d946ddb140618e28c3048ab7a229
9731Author: djm@openbsd.org <djm@openbsd.org>
9732Date: Fri Apr 8 08:19:17 2016 +0000
9733
9734 upstream commit
9735
9736 whitespace at EOL
9737
9738 Upstream-ID: 5beffd4e001515da12851b974e2323ae4aa313b6
9739
9740commit 90ee563fa6b54c59896c6c332c5188f866c5e75f
9741Author: djm@openbsd.org <djm@openbsd.org>
9742Date: Fri Apr 8 06:35:54 2016 +0000
9743
9744 upstream commit
9745
9746 We accidentally send an empty string and a zero uint32 with
9747 every direct-streamlocal@openssh.com channel open, in contravention of our
9748 own spec.
9749
9750 Fixing this is too hard wrt existing versions that expect these
9751 fields to be present and fatal() if they aren't, so document them
9752 as "reserved" fields in the PROTOCOL spec as though we always
9753 intended this and let us never speak of it again.
9754
9755 bz#2529, reported by Ron Frederick
9756
9757 Upstream-ID: 34cd326a4d236ca6e39084c4ff796bd97ab833e7
9758
9759commit 0ccbd5eca0f0dd78e71a4b69c66f03a66908d558
9760Author: djm@openbsd.org <djm@openbsd.org>
9761Date: Wed Apr 6 06:42:17 2016 +0000
9762
9763 upstream commit
9764
9765 don't record duplicate LocalForward and RemoteForward
9766 entries; fixes failure with ExitOnForwardFailure+hostname canonicalisation
9767 where the same forwards are added on the second pass through the
9768 configuration file. bz#2562; ok dtucker@
9769
9770 Upstream-ID: 40a51d68b6300f1cc61deecdb7d4847b8b7b0de1
9771
9772commit 574def0eb493cd6efeffd4ff2e9257abcffee0c8
9773Author: krw@openbsd.org <krw@openbsd.org>
9774Date: Sat Apr 2 14:37:42 2016 +0000
9775
9776 upstream commit
9777
9778 Another use for fcntl() and thus of the superfluous 3rd
9779 parameter is when sanitising standard fd's before calling daemon().
9780
9781 Use a tweaked version of the ssh(1) function in all three places
9782 found using fcntl() this way.
9783
9784 ok jca@ beck@
9785
9786 Upstream-ID: f16811ffa19a1c5f4ef383c5f0fecb843c84e218
9787
9788commit b3413534aa9d71a941005df2760d1eec2c2b0854
9789Author: Darren Tucker <dtucker@zip.com.au>
9790Date: Mon Apr 4 11:09:21 2016 +1000
9791
9792 Tidy up openssl header test.
9793
9794commit 815bcac0b94bb448de5acdd6ba925b8725240b4f
9795Author: Darren Tucker <dtucker@zip.com.au>
9796Date: Mon Apr 4 11:07:59 2016 +1000
9797
9798 Fix configure-time warnings for openssl test.
diff --git a/INSTALL b/INSTALL
index 7f552bf76..3fd265dbf 100644
--- a/INSTALL
+++ b/INSTALL
@@ -66,13 +66,6 @@ passphrase requester. This is maintained separately at:
66 66
67http://www.jmknoble.net/software/x11-ssh-askpass/ 67http://www.jmknoble.net/software/x11-ssh-askpass/
68 68
69S/Key Libraries:
70
71If you wish to use --with-skey then you will need the library below
72installed. No other S/Key library is currently known to be supported.
73
74http://www.sparc.spb.su/solaris/skey/
75
76LibEdit: 69LibEdit:
77 70
78sftp supports command-line editing via NetBSD's libedit. If your platform 71sftp supports command-line editing via NetBSD's libedit. If your platform
@@ -184,9 +177,6 @@ it if lastlog is installed in a different place.
184--with-osfsia, --without-osfsia will enable or disable OSF1's Security 177--with-osfsia, --without-osfsia will enable or disable OSF1's Security
185Integration Architecture. The default for OSF1 machines is enable. 178Integration Architecture. The default for OSF1 machines is enable.
186 179
187--with-skey=PATH will enable S/Key one time password support. You will
188need the S/Key libraries and header files installed for this to work.
189
190--with-md5-passwords will enable the use of MD5 passwords. Enable this 180--with-md5-passwords will enable the use of MD5 passwords. Enable this
191if your operating system uses MD5 passwords and the system crypt() does 181if your operating system uses MD5 passwords and the system crypt() does
192not support them directly (see the crypt(3/3c) man page). If enabled, the 182not support them directly (see the crypt(3/3c) man page). If enabled, the
@@ -220,7 +210,7 @@ If you need to pass special options to the compiler or linker, you
220can specify these as environment variables before running ./configure. 210can specify these as environment variables before running ./configure.
221For example: 211For example:
222 212
223CFLAGS="-O -m486" LDFLAGS="-s" LIBS="-lrubbish" LD="/usr/foo/ld" ./configure 213CC="/usr/foo/cc" CFLAGS="-O" LDFLAGS="-s" LIBS="-lrubbish" ./configure
224 214
2253. Configuration 2153. Configuration
226---------------- 216----------------
diff --git a/Makefile.in b/Makefile.in
index 04e1c8e53..2385c62a8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
1# uncomment if you run a non bourne compatable shell. Ie. csh 1# uncomment if you run a non bourne compatible shell. Ie. csh
2#SHELL = @SH@ 2#SHELL = @SH@
3 3
4AUTORECONF=autoreconf 4AUTORECONF=autoreconf
@@ -84,13 +84,13 @@ LIBOPENSSH_OBJS=\
84 ${XMSS_OBJS} 84 ${XMSS_OBJS}
85 85
86LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ 86LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
87 authfd.o authfile.o bufaux.o bufbn.o bufec.o buffer.o \ 87 authfd.o authfile.o \
88 canohost.o channels.o cipher.o cipher-aes.o cipher-aesctr.o \ 88 canohost.o channels.o cipher.o cipher-aes.o cipher-aesctr.o \
89 cipher-ctr.o cleanup.o \ 89 cipher-ctr.o cleanup.o \
90 compat.o crc32.o fatal.o hostfile.o \ 90 compat.o crc32.o fatal.o hostfile.o \
91 log.o match.o moduli.o nchan.o packet.o opacket.o \ 91 log.o match.o moduli.o nchan.o packet.o opacket.o \
92 readpass.o ttymodes.o xmalloc.o addrmatch.o \ 92 readpass.o ttymodes.o xmalloc.o addrmatch.o \
93 atomicio.o key.o dispatch.o mac.o uidswap.o uuencode.o misc.o utf8.o \ 93 atomicio.o dispatch.o mac.o uuencode.o misc.o utf8.o \
94 monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-rsa.o dh.o \ 94 monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-rsa.o dh.o \
95 msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o umac128.o \ 95 msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o umac128.o \
96 ssh-pkcs11.o smult_curve25519_ref.o \ 96 ssh-pkcs11.o smult_curve25519_ref.o \
@@ -110,7 +110,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
110 sshpty.o sshlogin.o servconf.o serverloop.o \ 110 sshpty.o sshlogin.o servconf.o serverloop.o \
111 auth.o auth2.o auth-options.o session.o \ 111 auth.o auth2.o auth-options.o session.o \
112 auth2-chall.o groupaccess.o \ 112 auth2-chall.o groupaccess.o \
113 auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ 113 auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \
114 auth2-none.o auth2-passwd.o auth2-pubkey.o \ 114 auth2-none.o auth2-passwd.o auth2-pubkey.o \
115 monitor.o monitor_wrap.o auth-krb5.o \ 115 monitor.o monitor_wrap.o auth-krb5.o \
116 auth2-gss.o gss-serv.o gss-serv-krb5.o \ 116 auth2-gss.o gss-serv.o gss-serv-krb5.o \
@@ -118,7 +118,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
118 sftp-server.o sftp-common.o \ 118 sftp-server.o sftp-common.o \
119 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \ 119 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \
120 sandbox-seccomp-filter.o sandbox-capsicum.o sandbox-pledge.o \ 120 sandbox-seccomp-filter.o sandbox-capsicum.o sandbox-pledge.o \
121 sandbox-solaris.o 121 sandbox-solaris.o uidswap.o
122 122
123MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out 123MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out
124MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5 124MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5
@@ -175,7 +175,7 @@ sshd$(EXEEXT): libssh.a $(LIBCOMPAT) $(SSHDOBJS)
175 $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS) 175 $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS)
176 176
177scp$(EXEEXT): $(LIBCOMPAT) libssh.a scp.o progressmeter.o 177scp$(EXEEXT): $(LIBCOMPAT) libssh.a scp.o progressmeter.o
178 $(LD) -o $@ scp.o progressmeter.o bufaux.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) 178 $(LD) -o $@ scp.o progressmeter.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
179 179
180ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-add.o 180ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-add.o
181 $(LD) -o $@ ssh-add.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) 181 $(LD) -o $@ ssh-add.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
@@ -186,8 +186,8 @@ ssh-agent$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-agent.o ssh-pkcs11-client.o
186ssh-keygen$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keygen.o 186ssh-keygen$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keygen.o
187 $(LD) -o $@ ssh-keygen.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) 187 $(LD) -o $@ ssh-keygen.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
188 188
189ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keysign.o readconf.o 189ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-keysign.o readconf.o uidswap.o
190 $(LD) -o $@ ssh-keysign.o readconf.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) 190 $(LD) -o $@ ssh-keysign.o readconf.o uidswap.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
191 191
192ssh-pkcs11-helper$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-pkcs11-helper.o ssh-pkcs11.o 192ssh-pkcs11-helper$(EXEEXT): $(LIBCOMPAT) libssh.a ssh-pkcs11-helper.o ssh-pkcs11.o
193 $(LD) -o $@ ssh-pkcs11-helper.o ssh-pkcs11.o $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) 193 $(LD) -o $@ ssh-pkcs11-helper.o ssh-pkcs11.o $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
@@ -230,6 +230,7 @@ clean: regressclean
230 rm -f *.o *.a $(TARGETS) logintest config.cache config.log 230 rm -f *.o *.a $(TARGETS) logintest config.cache config.log
231 rm -f *.out core survey 231 rm -f *.out core survey
232 rm -f regress/check-perm$(EXEEXT) 232 rm -f regress/check-perm$(EXEEXT)
233 rm -f regress/mkdtemp$(EXEEXT)
233 rm -f regress/unittests/test_helper/*.a 234 rm -f regress/unittests/test_helper/*.a
234 rm -f regress/unittests/test_helper/*.o 235 rm -f regress/unittests/test_helper/*.o
235 rm -f regress/unittests/sshbuf/*.o 236 rm -f regress/unittests/sshbuf/*.o
@@ -258,6 +259,8 @@ distclean: regressclean
258 rm -f Makefile buildpkg.sh config.h config.status 259 rm -f Makefile buildpkg.sh config.h config.status
259 rm -f survey.sh openbsd-compat/regress/Makefile *~ 260 rm -f survey.sh openbsd-compat/regress/Makefile *~
260 rm -rf autom4te.cache 261 rm -rf autom4te.cache
262 rm -f regress/check-perm
263 rm -f regress/mkdtemp
261 rm -f regress/unittests/test_helper/*.a 264 rm -f regress/unittests/test_helper/*.a
262 rm -f regress/unittests/test_helper/*.o 265 rm -f regress/unittests/test_helper/*.o
263 rm -f regress/unittests/sshbuf/*.o 266 rm -f regress/unittests/sshbuf/*.o
@@ -276,7 +279,8 @@ distclean: regressclean
276 rm -f regress/unittests/match/test_match 279 rm -f regress/unittests/match/test_match
277 rm -f regress/unittests/utf8/*.o 280 rm -f regress/unittests/utf8/*.o
278 rm -f regress/unittests/utf8/test_utf8 281 rm -f regress/unittests/utf8/test_utf8
279 rm -f regress/unittests/misc/kexfuzz 282 rm -f regress/misc/kexfuzz/*.o
283 rm -f regress/misc/kexfuzz
280 (cd openbsd-compat && $(MAKE) distclean) 284 (cd openbsd-compat && $(MAKE) distclean)
281 if test -d pkg ; then \ 285 if test -d pkg ; then \
282 rm -fr pkg ; \ 286 rm -fr pkg ; \
@@ -459,6 +463,10 @@ regress/check-perm$(EXEEXT): $(srcdir)/regress/check-perm.c $(REGRESSLIBS)
459 $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/check-perm.c \ 463 $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/check-perm.c \
460 $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) 464 $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
461 465
466regress/mkdtemp$(EXEEXT): $(srcdir)/regress/mkdtemp.c $(REGRESSLIBS)
467 $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/mkdtemp.c \
468 $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
469
462UNITTESTS_TEST_HELPER_OBJS=\ 470UNITTESTS_TEST_HELPER_OBJS=\
463 regress/unittests/test_helper/test_helper.o \ 471 regress/unittests/test_helper/test_helper.o \
464 regress/unittests/test_helper/fuzz.o 472 regress/unittests/test_helper/fuzz.o
@@ -567,6 +575,7 @@ regress-binaries: regress/modpipe$(EXEEXT) \
567 regress/setuid-allowed$(EXEEXT) \ 575 regress/setuid-allowed$(EXEEXT) \
568 regress/netcat$(EXEEXT) \ 576 regress/netcat$(EXEEXT) \
569 regress/check-perm$(EXEEXT) \ 577 regress/check-perm$(EXEEXT) \
578 regress/mkdtemp$(EXEEXT) \
570 regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \ 579 regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \
571 regress/unittests/sshkey/test_sshkey$(EXEEXT) \ 580 regress/unittests/sshkey/test_sshkey$(EXEEXT) \
572 regress/unittests/bitmap/test_bitmap$(EXEEXT) \ 581 regress/unittests/bitmap/test_bitmap$(EXEEXT) \
@@ -577,8 +586,6 @@ regress-binaries: regress/modpipe$(EXEEXT) \
577 regress/unittests/utf8/test_utf8$(EXEEXT) \ 586 regress/unittests/utf8/test_utf8$(EXEEXT) \
578 regress/misc/kexfuzz/kexfuzz$(EXEEXT) 587 regress/misc/kexfuzz/kexfuzz$(EXEEXT)
579 588
580REGRESSTMP = "$(PWD)/regress"
581
582tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS) 589tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS)
583 BUILDDIR=`pwd`; \ 590 BUILDDIR=`pwd`; \
584 TEST_SSH_SCP="$${BUILDDIR}/scp"; \ 591 TEST_SSH_SCP="$${BUILDDIR}/scp"; \
@@ -602,7 +609,7 @@ tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS)
602 .OBJDIR="$${BUILDDIR}/regress" \ 609 .OBJDIR="$${BUILDDIR}/regress" \
603 .CURDIR="`pwd`" \ 610 .CURDIR="`pwd`" \
604 BUILDDIR="$${BUILDDIR}" \ 611 BUILDDIR="$${BUILDDIR}" \
605 OBJ="$(REGRESSTMP)" \ 612 OBJ="$${BUILDDIR}/regress/" \
606 PATH="$${BUILDDIR}:$${PATH}" \ 613 PATH="$${BUILDDIR}:$${PATH}" \
607 TEST_ENV=MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ 614 TEST_ENV=MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \
608 TEST_MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ 615 TEST_MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \
diff --git a/OVERVIEW b/OVERVIEW
index fde72c8e0..515567f45 100644
--- a/OVERVIEW
+++ b/OVERVIEW
@@ -23,9 +23,8 @@ these programs.
23 23
24 - These provide an arbitrary size buffer, where data can be appended. 24 - These provide an arbitrary size buffer, where data can be appended.
25 Data can be consumed from either end. The code is used heavily 25 Data can be consumed from either end. The code is used heavily
26 throughout ssh. The basic buffer manipulation functions are in 26 throughout ssh. The buffer manipulation functions are in
27 buffer.c (header buffer.h), and additional code to manipulate specific 27 sshbuf*.c (header sshbuf.h).
28 data types is in bufaux.c.
29 28
30 Compression Library 29 Compression Library
31 30
@@ -62,7 +61,7 @@ these programs.
62 code in packet.c does not concern itself with packet types or their 61 code in packet.c does not concern itself with packet types or their
63 execution; it contains code to build packets, to receive them and 62 execution; it contains code to build packets, to receive them and
64 extract data from them, and the code to compress and/or encrypt 63 extract data from them, and the code to compress and/or encrypt
65 packets. CRC code comes from crc32.c. 64 packets.
66 65
67 - The code in packet.c calls the buffer manipulation routines 66 - The code in packet.c calls the buffer manipulation routines
68 (buffer.c, bufaux.c), compression routines (zlib), and the 67 (buffer.c, bufaux.c), compression routines (zlib), and the
@@ -106,12 +105,6 @@ these programs.
106 calls client_loop in clientloop.c. This does the real work for 105 calls client_loop in clientloop.c. This does the real work for
107 the session. 106 the session.
108 107
109 - The client is suid root. It tries to temporarily give up this
110 rights while reading the configuration data. The root
111 privileges are only used to make the connection (from a
112 privileged socket). Any extra privileges are dropped before
113 calling ssh_login.
114
115 Pseudo-tty manipulation and tty modes 108 Pseudo-tty manipulation and tty modes
116 109
117 - Code to allocate and use a pseudo tty is in pty.c. Code to 110 - Code to allocate and use a pseudo tty is in pty.c. Code to
@@ -165,4 +158,4 @@ these programs.
165 uidswap.c uid-swapping 158 uidswap.c uid-swapping
166 xmalloc.c "safe" malloc routines 159 xmalloc.c "safe" malloc routines
167 160
168$OpenBSD: OVERVIEW,v 1.12 2015/07/08 19:01:15 markus Exp $ 161$OpenBSD: OVERVIEW,v 1.14 2018/07/27 03:55:22 dtucker Exp $
diff --git a/PROTOCOL b/PROTOCOL
index b1fc00691..010bec92f 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -428,7 +428,7 @@ The values of the f_flag bitmask are as follows:
428Both the "statvfs@openssh.com" and "fstatvfs@openssh.com" extensions are 428Both the "statvfs@openssh.com" and "fstatvfs@openssh.com" extensions are
429advertised in the SSH_FXP_VERSION hello with version "2". 429advertised in the SSH_FXP_VERSION hello with version "2".
430 430
43110. sftp: Extension request "hardlink@openssh.com" 4313.5. sftp: Extension request "hardlink@openssh.com"
432 432
433This request is for creating a hard link to a regular file. This 433This request is for creating a hard link to a regular file. This
434request is implemented as a SSH_FXP_EXTENDED request with the 434request is implemented as a SSH_FXP_EXTENDED request with the
@@ -444,7 +444,7 @@ link(oldpath, newpath) and will respond with a SSH_FXP_STATUS message.
444This extension is advertised in the SSH_FXP_VERSION hello with version 444This extension is advertised in the SSH_FXP_VERSION hello with version
445"1". 445"1".
446 446
44710. sftp: Extension request "fsync@openssh.com" 4473.6. sftp: Extension request "fsync@openssh.com"
448 448
449This request asks the server to call fsync(2) on an open file handle. 449This request asks the server to call fsync(2) on an open file handle.
450 450
@@ -458,4 +458,35 @@ respond with a SSH_FXP_STATUS message.
458This extension is advertised in the SSH_FXP_VERSION hello with version 458This extension is advertised in the SSH_FXP_VERSION hello with version
459"1". 459"1".
460 460
461$OpenBSD: PROTOCOL,v 1.32 2018/02/19 00:55:02 djm Exp $ 4614. Miscellaneous changes
462
4634.1 Public key format
464
465OpenSSH public keys, as generated by ssh-keygen(1) and appearing in
466authorized_keys files, are formatted as a single line of text consisting
467of the public key algorithm name followed by a base64-encoded key blob.
468The public key blob (before base64 encoding) is the same format used for
469the encoding of public keys sent on the wire: as described in RFC4253
470section 6.6 for RSA and DSA keys, RFC5656 section 3.1 for ECDSA keys
471and the "New public key formats" section of PROTOCOL.certkeys for the
472OpenSSH certificate formats.
473
4744.2 Private key format
475
476OpenSSH private keys, as generated by ssh-keygen(1) use the format
477described in PROTOCOL.key by default. As a legacy option, PEM format
478(RFC7468) private keys are also supported for RSA, DSA and ECDSA keys
479and were the default format before OpenSSH 7.8.
480
4814.3 KRL format
482
483OpenSSH supports a compact format for Key Revocation Lists (KRLs). This
484format is described in the PROTOCOL.krl file.
485
4864.4 Connection multiplexing
487
488OpenSSH's connection multiplexing uses messages as described in
489PROTOCOL.mux over a Unix domain socket for communications between a
490master instance and later clients.
491
492$OpenBSD: PROTOCOL,v 1.35 2018/08/10 00:44:01 djm Exp $
diff --git a/PROTOCOL.certkeys b/PROTOCOL.certkeys
index 64cb18700..11363fdc3 100644
--- a/PROTOCOL.certkeys
+++ b/PROTOCOL.certkeys
@@ -25,6 +25,10 @@ raw user keys. The ssh client will support automatic verification of
25acceptance of certified host keys, by adding a similar ability to 25acceptance of certified host keys, by adding a similar ability to
26specify CA keys in ~/.ssh/known_hosts. 26specify CA keys in ~/.ssh/known_hosts.
27 27
28All certificate types include certification information along with the
29public key that is used to sign challenges. In OpenSSH, ssh-keygen
30performs the CA signing operation.
31
28Certified keys are represented using new key types: 32Certified keys are represented using new key types:
29 33
30 ssh-rsa-cert-v01@openssh.com 34 ssh-rsa-cert-v01@openssh.com
@@ -33,9 +37,17 @@ Certified keys are represented using new key types:
33 ecdsa-sha2-nistp384-cert-v01@openssh.com 37 ecdsa-sha2-nistp384-cert-v01@openssh.com
34 ecdsa-sha2-nistp521-cert-v01@openssh.com 38 ecdsa-sha2-nistp521-cert-v01@openssh.com
35 39
36These include certification information along with the public key 40Two additional types exist for RSA certificates to force use of
37that is used to sign challenges. ssh-keygen performs the CA signing 41SHA-2 signatures (SHA-256 and SHA-512 respectively):
38operation. 42
43 rsa-sha2-256-cert-v01@openssh.com
44 rsa-sha2-512-cert-v01@openssh.com
45
46These RSA/SHA-2 types should not appear in keys at rest or transmitted
47on their wire, but do appear in a SSH_MSG_KEXINIT's host-key algorithms
48field or in the "public key algorithm name" field of a "publickey"
49SSH_USERAUTH_REQUEST to indicate that the signature will use the
50specified algorithm.
39 51
40Protocol extensions 52Protocol extensions
41------------------- 53-------------------
@@ -174,7 +186,7 @@ certificate. Each represents a time in seconds since 1970-01-01
174 186
175 valid after <= current time < valid before 187 valid after <= current time < valid before
176 188
177criticial options is a set of zero or more key options encoded as 189critical options is a set of zero or more key options encoded as
178below. All such options are "critical" in the sense that an implementation 190below. All such options are "critical" in the sense that an implementation
179must refuse to authorise a key that has an unrecognised option. 191must refuse to authorise a key that has an unrecognised option.
180 192
@@ -291,4 +303,4 @@ permit-user-rc empty Flag indicating that execution of
291 of this script will not be permitted if 303 of this script will not be permitted if
292 this option is not present. 304 this option is not present.
293 305
294$OpenBSD: PROTOCOL.certkeys,v 1.13 2017/11/03 02:32:19 djm Exp $ 306$OpenBSD: PROTOCOL.certkeys,v 1.15 2018/07/03 11:39:54 djm Exp $
diff --git a/PROTOCOL.chacha20poly1305 b/PROTOCOL.chacha20poly1305
index 4857d3853..9ce2a1e3a 100644
--- a/PROTOCOL.chacha20poly1305
+++ b/PROTOCOL.chacha20poly1305
@@ -16,7 +16,7 @@ that computes a 128 bit integrity tag given a message and a single-use
16The chacha20-poly1305@openssh.com combines these two primitives into an 16The chacha20-poly1305@openssh.com combines these two primitives into an
17authenticated encryption mode. The construction used is based on that 17authenticated encryption mode. The construction used is based on that
18proposed for TLS by Adam Langley in [3], but differs in the layout of 18proposed for TLS by Adam Langley in [3], but differs in the layout of
19data passed to the MAC and in the addition of encyption of the packet 19data passed to the MAC and in the addition of encryption of the packet
20lengths. 20lengths.
21 21
22Negotiation 22Negotiation
@@ -103,5 +103,5 @@ References
103[3] "ChaCha20 and Poly1305 based Cipher Suites for TLS", Adam Langley 103[3] "ChaCha20 and Poly1305 based Cipher Suites for TLS", Adam Langley
104 http://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-03 104 http://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-03
105 105
106$OpenBSD: PROTOCOL.chacha20poly1305,v 1.3 2016/05/03 13:10:24 djm Exp $ 106$OpenBSD: PROTOCOL.chacha20poly1305,v 1.4 2018/04/10 00:10:49 djm Exp $
107 107
diff --git a/PROTOCOL.krl b/PROTOCOL.krl
index b9695107b..f319bad21 100644
--- a/PROTOCOL.krl
+++ b/PROTOCOL.krl
@@ -145,7 +145,7 @@ This section may appear multiple times.
1455. KRL signature sections 1455. KRL signature sections
146 146
147The KRL_SECTION_SIGNATURE section serves a different purpose to the 147The KRL_SECTION_SIGNATURE section serves a different purpose to the
148preceeding ones: to provide cryptographic authentication of a KRL that 148preceding ones: to provide cryptographic authentication of a KRL that
149is retrieved over a channel that does not provide integrity protection. 149is retrieved over a channel that does not provide integrity protection.
150Its format is slightly different to the previously-described sections: 150Its format is slightly different to the previously-described sections:
151in order to simplify the signature generation, it includes as a "body" 151in order to simplify the signature generation, it includes as a "body"
@@ -166,4 +166,4 @@ Implementations that retrieve KRLs over untrusted channels must verify
166signatures. Signature sections are optional for KRLs distributed by 166signatures. Signature sections are optional for KRLs distributed by
167trusted means. 167trusted means.
168 168
169$OpenBSD: PROTOCOL.krl,v 1.3 2015/01/30 01:10:33 djm Exp $ 169$OpenBSD: PROTOCOL.krl,v 1.4 2018/04/10 00:10:49 djm Exp $
diff --git a/README b/README
index fb8e21743..97fc2ef99 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
1See https://www.openssh.com/releasenotes.html#7.7p1 for the release notes. 1See https://www.openssh.com/releasenotes.html#7.8p1 for the release notes.
2 2
3Please read https://www.openssh.com/report.html for bug reporting 3Please read https://www.openssh.com/report.html for bug reporting
4instructions and note that we do not use Github for bug reporting or 4instructions and note that we do not use Github for bug reporting or
diff --git a/README.platform b/README.platform
index c7be95fb6..9210e07c8 100644
--- a/README.platform
+++ b/README.platform
@@ -80,7 +80,7 @@ added to /etc/security/audit_event:
80 32800:AUE_openssh:OpenSSH login:lo 80 32800:AUE_openssh:OpenSSH login:lo
81 81
82The BSM audit event range available for third party TCB applications is 82The BSM audit event range available for third party TCB applications is
8332768 - 65535. Event number 32800 has been choosen for AUE_openssh. 8332768 - 65535. Event number 32800 has been chosen for AUE_openssh.
84There is no official registry of 3rd party event numbers, so if this 84There is no official registry of 3rd party event numbers, so if this
85number is already in use on your system, you may change it at build time 85number is already in use on your system, you may change it at build time
86by configure'ing --with-cflags=-DAUE_openssh=32801 then rebuilding. 86by configure'ing --with-cflags=-DAUE_openssh=32801 then rebuilding.
diff --git a/TODO b/TODO
index f22c7e224..b76529c96 100644
--- a/TODO
+++ b/TODO
@@ -35,7 +35,7 @@ Programming:
35 - Use different PAM service name for kbdint vs regular auth (suggest from 35 - Use different PAM service name for kbdint vs regular auth (suggest from
36 Solar Designer) 36 Solar Designer)
37 - Ability to select which ChallengeResponseAuthentications may be used 37 - Ability to select which ChallengeResponseAuthentications may be used
38 and order to try them in e.g. "ChallengeResponseAuthentication skey, pam" 38 and order to try them in e.g. "ChallengeResponseAuthentication pam"
39 39
40- Complete Tru64 SIA support 40- Complete Tru64 SIA support
41 - It looks like we could merge it into the password auth code to cut down 41 - It looks like we could merge it into the password auth code to cut down
@@ -57,10 +57,10 @@ Clean up configure/makefiles:
57- Replace the whole u_intXX_t evilness in acconfig.h with something better??? 57- Replace the whole u_intXX_t evilness in acconfig.h with something better???
58 - Do it in configure.ac 58 - Do it in configure.ac
59 59
60- Consider splitting the u_intXX_t test for sys/bitype.h into seperate test 60- Consider splitting the u_intXX_t test for sys/bitype.h into separate test
61 to allow people to (right/wrongfully) link against Bind directly. 61 to allow people to (right/wrongfully) link against Bind directly.
62 62
63- Consider splitting configure.ac into seperate files which do logically 63- Consider splitting configure.ac into separate files which do logically
64 similar tests. E.g move all the type detection stuff into one file, 64 similar tests. E.g move all the type detection stuff into one file,
65 entropy related stuff into another. 65 entropy related stuff into another.
66 66
diff --git a/aclocal.m4 b/aclocal.m4
index ac6b6684a..25ecc49a2 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -25,7 +25,7 @@ int main(int argc, char **argv) {
25} 25}
26 ]])], 26 ]])],
27 [ 27 [
28if `grep -i "unrecognized option" conftest.err >/dev/null` 28if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
29then 29then
30 AC_MSG_RESULT([no]) 30 AC_MSG_RESULT([no])
31 CFLAGS="$saved_CFLAGS" 31 CFLAGS="$saved_CFLAGS"
@@ -63,7 +63,7 @@ int main(int argc, char **argv) {
63} 63}
64 ]])], 64 ]])],
65 [ 65 [
66if `grep -i "unrecognized option" conftest.err >/dev/null` 66if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
67then 67then
68 AC_MSG_RESULT([no]) 68 AC_MSG_RESULT([no])
69 CFLAGS="$saved_CFLAGS" 69 CFLAGS="$saved_CFLAGS"
@@ -100,8 +100,15 @@ int main(int argc, char **argv) {
100 exit(0); 100 exit(0);
101} 101}
102 ]])], 102 ]])],
103 [ AC_MSG_RESULT([yes]) 103 [
104 LDFLAGS="$saved_LDFLAGS $_define_flag"], 104if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
105then
106 AC_MSG_RESULT([no])
107 LDFLAGS="$saved_LDFLAGS"
108else
109 AC_MSG_RESULT([yes])
110 LDFLAGS="$saved_LDFLAGS $_define_flag"
111fi ],
105 [ AC_MSG_RESULT([no]) 112 [ AC_MSG_RESULT([no])
106 LDFLAGS="$saved_LDFLAGS" ] 113 LDFLAGS="$saved_LDFLAGS" ]
107 ) 114 )
diff --git a/addrmatch.c b/addrmatch.c
index 8658e105a..5a402d065 100644
--- a/addrmatch.c
+++ b/addrmatch.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: addrmatch.c,v 1.13 2016/09/21 16:55:42 djm Exp $ */ 1/* $OpenBSD: addrmatch.c,v 1.14 2018/07/31 03:07:24 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2004-2008 Damien Miller <djm@mindrot.org> 4 * Copyright (c) 2004-2008 Damien Miller <djm@mindrot.org>
@@ -205,25 +205,24 @@ addr_cmp(const struct xaddr *a, const struct xaddr *b)
205static int 205static int
206addr_pton(const char *p, struct xaddr *n) 206addr_pton(const char *p, struct xaddr *n)
207{ 207{
208 struct addrinfo hints, *ai; 208 struct addrinfo hints, *ai = NULL;
209 int ret = -1;
209 210
210 memset(&hints, '\0', sizeof(hints)); 211 memset(&hints, '\0', sizeof(hints));
211 hints.ai_flags = AI_NUMERICHOST; 212 hints.ai_flags = AI_NUMERICHOST;
212 213
213 if (p == NULL || getaddrinfo(p, NULL, &hints, &ai) != 0) 214 if (p == NULL || getaddrinfo(p, NULL, &hints, &ai) != 0)
214 return -1; 215 goto out;
215
216 if (ai == NULL || ai->ai_addr == NULL) 216 if (ai == NULL || ai->ai_addr == NULL)
217 return -1; 217 goto out;
218 218 if (n != NULL && addr_sa_to_xaddr(ai->ai_addr, ai->ai_addrlen, n) == -1)
219 if (n != NULL && 219 goto out;
220 addr_sa_to_xaddr(ai->ai_addr, ai->ai_addrlen, n) == -1) { 220 /* success */
221 ret = 0;
222 out:
223 if (ai != NULL)
221 freeaddrinfo(ai); 224 freeaddrinfo(ai);
222 return -1; 225 return ret;
223 }
224
225 freeaddrinfo(ai);
226 return 0;
227} 226}
228 227
229/* 228/*
diff --git a/audit-bsm.c b/audit-bsm.c
index f8e0bea89..1409f69ae 100644
--- a/audit-bsm.c
+++ b/audit-bsm.c
@@ -49,7 +49,6 @@
49 49
50#include "ssh.h" 50#include "ssh.h"
51#include "log.h" 51#include "log.h"
52#include "key.h"
53#include "hostfile.h" 52#include "hostfile.h"
54#include "auth.h" 53#include "auth.h"
55#include "xmalloc.h" 54#include "xmalloc.h"
diff --git a/audit.c b/audit.c
index 7645c1439..33a04376d 100644
--- a/audit.c
+++ b/audit.c
@@ -26,12 +26,12 @@
26 26
27#include <stdarg.h> 27#include <stdarg.h>
28#include <string.h> 28#include <string.h>
29#include <unistd.h>
29 30
30#ifdef SSH_AUDIT_EVENTS 31#ifdef SSH_AUDIT_EVENTS
31 32
32#include "audit.h" 33#include "audit.h"
33#include "log.h" 34#include "log.h"
34#include "key.h"
35#include "hostfile.h" 35#include "hostfile.h"
36#include "auth.h" 36#include "auth.h"
37 37
diff --git a/auth-bsdauth.c b/auth-bsdauth.c
index e00718f2e..4dc5045c2 100644
--- a/auth-bsdauth.c
+++ b/auth-bsdauth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-bsdauth.c,v 1.14 2015/10/20 23:24:25 mmcc Exp $ */ 1/* $OpenBSD: auth-bsdauth.c,v 1.15 2018/07/09 21:35:50 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -33,11 +33,11 @@
33 33
34#ifdef BSD_AUTH 34#ifdef BSD_AUTH
35#include "xmalloc.h" 35#include "xmalloc.h"
36#include "key.h" 36#include "sshkey.h"
37#include "sshbuf.h"
37#include "hostfile.h" 38#include "hostfile.h"
38#include "auth.h" 39#include "auth.h"
39#include "log.h" 40#include "log.h"
40#include "buffer.h"
41#ifdef GSSAPI 41#ifdef GSSAPI
42#include "ssh-gss.h" 42#include "ssh-gss.h"
43#endif 43#endif
diff --git a/auth-krb5.c b/auth-krb5.c
index a5a81ed2e..3096f1c8e 100644
--- a/auth-krb5.c
+++ b/auth-krb5.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-krb5.c,v 1.22 2016/05/04 14:22:33 markus Exp $ */ 1/* $OpenBSD: auth-krb5.c,v 1.23 2018/07/09 21:35:50 markus Exp $ */
2/* 2/*
3 * Kerberos v5 authentication and ticket-passing routines. 3 * Kerberos v5 authentication and ticket-passing routines.
4 * 4 *
@@ -38,11 +38,11 @@
38#include "ssh.h" 38#include "ssh.h"
39#include "packet.h" 39#include "packet.h"
40#include "log.h" 40#include "log.h"
41#include "buffer.h" 41#include "sshbuf.h"
42#include "sshkey.h"
42#include "misc.h" 43#include "misc.h"
43#include "servconf.h" 44#include "servconf.h"
44#include "uidswap.h" 45#include "uidswap.h"
45#include "key.h"
46#include "hostfile.h" 46#include "hostfile.h"
47#include "auth.h" 47#include "auth.h"
48 48
diff --git a/auth-options.c b/auth-options.c
index b528c197a..27c0eb05e 100644
--- a/auth-options.c
+++ b/auth-options.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.c,v 1.78 2018/03/14 05:35:40 djm Exp $ */ 1/* $OpenBSD: auth-options.c,v 1.83 2018/06/19 02:59:41 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2018 Damien Miller <djm@mindrot.org> 3 * Copyright (c) 2018 Damien Miller <djm@mindrot.org>
4 * 4 *
@@ -283,6 +283,10 @@ sshauthopt_free(struct sshauthopt *opts)
283 free(opts->permitopen[i]); 283 free(opts->permitopen[i]);
284 free(opts->permitopen); 284 free(opts->permitopen);
285 285
286 for (i = 0; i < opts->npermitlisten; i++)
287 free(opts->permitlisten[i]);
288 free(opts->permitlisten);
289
286 explicit_bzero(opts, sizeof(*opts)); 290 explicit_bzero(opts, sizeof(*opts));
287 free(opts); 291 free(opts);
288} 292}
@@ -304,10 +308,82 @@ sshauthopt_new_with_keys_defaults(void)
304 return ret; 308 return ret;
305} 309}
306 310
311/*
312 * Parse and record a permitopen/permitlisten directive.
313 * Return 0 on success. Return -1 on failure and sets *errstrp to error reason.
314 */
315static int
316handle_permit(const char **optsp, int allow_bare_port,
317 char ***permitsp, size_t *npermitsp, const char **errstrp)
318{
319 char *opt, *tmp, *cp, *host, **permits = *permitsp;
320 size_t npermits = *npermitsp;
321 const char *errstr = "unknown error";
322
323 if (npermits > INT_MAX) {
324 *errstrp = "too many permission directives";
325 return -1;
326 }
327 if ((opt = opt_dequote(optsp, &errstr)) == NULL) {
328 return -1;
329 }
330 if (allow_bare_port && strchr(opt, ':') == NULL) {
331 /*
332 * Allow a bare port number in permitlisten to indicate a
333 * listen_host wildcard.
334 */
335 if (asprintf(&tmp, "*:%s", opt) < 0) {
336 *errstrp = "memory allocation failed";
337 return -1;
338 }
339 free(opt);
340 opt = tmp;
341 }
342 if ((tmp = strdup(opt)) == NULL) {
343 free(opt);
344 *errstrp = "memory allocation failed";
345 return -1;
346 }
347 cp = tmp;
348 /* validate syntax before recording it. */
349 host = hpdelim(&cp);
350 if (host == NULL || strlen(host) >= NI_MAXHOST) {
351 free(tmp);
352 free(opt);
353 *errstrp = "invalid permission hostname";
354 return -1;
355 }
356 /*
357 * don't want to use permitopen_port to avoid
358 * dependency on channels.[ch] here.
359 */
360 if (cp == NULL ||
361 (strcmp(cp, "*") != 0 && a2port(cp) <= 0)) {
362 free(tmp);
363 free(opt);
364 *errstrp = "invalid permission port";
365 return -1;
366 }
367 /* XXX - add streamlocal support */
368 free(tmp);
369 /* Record it */
370 if ((permits = recallocarray(permits, npermits, npermits + 1,
371 sizeof(*permits))) == NULL) {
372 free(opt);
373 /* NB. don't update *permitsp if alloc fails */
374 *errstrp = "memory allocation failed";
375 return -1;
376 }
377 permits[npermits++] = opt;
378 *permitsp = permits;
379 *npermitsp = npermits;
380 return 0;
381}
382
307struct sshauthopt * 383struct sshauthopt *
308sshauthopt_parse(const char *opts, const char **errstrp) 384sshauthopt_parse(const char *opts, const char **errstrp)
309{ 385{
310 char **oarray, *opt, *cp, *tmp, *host; 386 char **oarray, *opt, *cp, *tmp;
311 int r; 387 int r;
312 struct sshauthopt *ret = NULL; 388 struct sshauthopt *ret = NULL;
313 const char *errstr = "unknown error"; 389 const char *errstr = "unknown error";
@@ -394,7 +470,7 @@ sshauthopt_parse(const char *opts, const char **errstrp)
394 goto fail; 470 goto fail;
395 } 471 }
396 for (cp = opt; cp < tmp; cp++) { 472 for (cp = opt; cp < tmp; cp++) {
397 if (!isalnum((u_char)*cp)) { 473 if (!isalnum((u_char)*cp) && *cp != '_') {
398 free(opt); 474 free(opt);
399 errstr = "invalid environment string"; 475 errstr = "invalid environment string";
400 goto fail; 476 goto fail;
@@ -410,48 +486,13 @@ sshauthopt_parse(const char *opts, const char **errstrp)
410 } 486 }
411 ret->env[ret->nenv++] = opt; 487 ret->env[ret->nenv++] = opt;
412 } else if (opt_match(&opts, "permitopen")) { 488 } else if (opt_match(&opts, "permitopen")) {
413 if (ret->npermitopen > INT_MAX) { 489 if (handle_permit(&opts, 0, &ret->permitopen,
414 errstr = "too many permitopens"; 490 &ret->npermitopen, &errstr) != 0)
415 goto fail;
416 }
417 if ((opt = opt_dequote(&opts, &errstr)) == NULL)
418 goto fail;
419 if ((tmp = strdup(opt)) == NULL) {
420 free(opt);
421 goto alloc_fail;
422 }
423 cp = tmp;
424 /* validate syntax of permitopen before recording it. */
425 host = hpdelim(&cp);
426 if (host == NULL || strlen(host) >= NI_MAXHOST) {
427 free(tmp);
428 free(opt);
429 errstr = "invalid permitopen hostname";
430 goto fail; 491 goto fail;
431 } 492 } else if (opt_match(&opts, "permitlisten")) {
432 /* 493 if (handle_permit(&opts, 1, &ret->permitlisten,
433 * don't want to use permitopen_port to avoid 494 &ret->npermitlisten, &errstr) != 0)
434 * dependency on channels.[ch] here.
435 */
436 if (cp == NULL ||
437 (strcmp(cp, "*") != 0 && a2port(cp) <= 0)) {
438 free(tmp);
439 free(opt);
440 errstr = "invalid permitopen port";
441 goto fail; 495 goto fail;
442 }
443 /* XXX - add streamlocal support */
444 free(tmp);
445 /* Record it */
446 oarray = ret->permitopen;
447 if ((ret->permitopen = recallocarray(ret->permitopen,
448 ret->npermitopen, ret->npermitopen + 1,
449 sizeof(*ret->permitopen))) == NULL) {
450 free(opt);
451 ret->permitopen = oarray;
452 goto alloc_fail;
453 }
454 ret->permitopen[ret->npermitopen++] = opt;
455 } else if (opt_match(&opts, "tunnel")) { 496 } else if (opt_match(&opts, "tunnel")) {
456 if ((opt = opt_dequote(&opts, &errstr)) == NULL) 497 if ((opt = opt_dequote(&opts, &errstr)) == NULL)
457 goto fail; 498 goto fail;
@@ -554,7 +595,10 @@ sshauthopt_merge(const struct sshauthopt *primary,
554 if (tmp != NULL && (ret->required_from_host_keys = strdup(tmp)) == NULL) 595 if (tmp != NULL && (ret->required_from_host_keys = strdup(tmp)) == NULL)
555 goto alloc_fail; 596 goto alloc_fail;
556 597
557 /* force_tun_device, permitopen and environment prefer the primary. */ 598 /*
599 * force_tun_device, permitopen/permitlisten and environment all
600 * prefer the primary.
601 */
558 ret->force_tun_device = primary->force_tun_device; 602 ret->force_tun_device = primary->force_tun_device;
559 if (ret->force_tun_device == -1) 603 if (ret->force_tun_device == -1)
560 ret->force_tun_device = additional->force_tun_device; 604 ret->force_tun_device = additional->force_tun_device;
@@ -577,6 +621,16 @@ sshauthopt_merge(const struct sshauthopt *primary,
577 goto alloc_fail; 621 goto alloc_fail;
578 } 622 }
579 623
624 if (primary->npermitlisten > 0) {
625 if (dup_strings(&ret->permitlisten, &ret->npermitlisten,
626 primary->permitlisten, primary->npermitlisten) != 0)
627 goto alloc_fail;
628 } else if (additional->npermitlisten > 0) {
629 if (dup_strings(&ret->permitlisten, &ret->npermitlisten,
630 additional->permitlisten, additional->npermitlisten) != 0)
631 goto alloc_fail;
632 }
633
580 /* Flags are logical-AND (i.e. must be set in both for permission) */ 634 /* Flags are logical-AND (i.e. must be set in both for permission) */
581#define OPTFLAG(x) ret->x = (primary->x == 1) && (additional->x == 1) 635#define OPTFLAG(x) ret->x = (primary->x == 1) && (additional->x == 1)
582 OPTFLAG(permit_port_forwarding_flag); 636 OPTFLAG(permit_port_forwarding_flag);
@@ -669,7 +723,9 @@ sshauthopt_copy(const struct sshauthopt *orig)
669 723
670 if (dup_strings(&ret->env, &ret->nenv, orig->env, orig->nenv) != 0 || 724 if (dup_strings(&ret->env, &ret->nenv, orig->env, orig->nenv) != 0 ||
671 dup_strings(&ret->permitopen, &ret->npermitopen, 725 dup_strings(&ret->permitopen, &ret->npermitopen,
672 orig->permitopen, orig->npermitopen) != 0) { 726 orig->permitopen, orig->npermitopen) != 0 ||
727 dup_strings(&ret->permitlisten, &ret->npermitlisten,
728 orig->permitlisten, orig->npermitlisten) != 0) {
673 sshauthopt_free(ret); 729 sshauthopt_free(ret);
674 return NULL; 730 return NULL;
675 } 731 }
@@ -805,7 +861,9 @@ sshauthopt_serialise(const struct sshauthopt *opts, struct sshbuf *m,
805 if ((r = serialise_array(m, opts->env, 861 if ((r = serialise_array(m, opts->env,
806 untrusted ? 0 : opts->nenv)) != 0 || 862 untrusted ? 0 : opts->nenv)) != 0 ||
807 (r = serialise_array(m, opts->permitopen, 863 (r = serialise_array(m, opts->permitopen,
808 untrusted ? 0 : opts->npermitopen)) != 0) 864 untrusted ? 0 : opts->npermitopen)) != 0 ||
865 (r = serialise_array(m, opts->permitlisten,
866 untrusted ? 0 : opts->npermitlisten)) != 0)
809 return r; 867 return r;
810 868
811 /* success */ 869 /* success */
@@ -859,7 +917,9 @@ sshauthopt_deserialise(struct sshbuf *m, struct sshauthopt **optsp)
859 /* Array options */ 917 /* Array options */
860 if ((r = deserialise_array(m, &opts->env, &opts->nenv)) != 0 || 918 if ((r = deserialise_array(m, &opts->env, &opts->nenv)) != 0 ||
861 (r = deserialise_array(m, 919 (r = deserialise_array(m,
862 &opts->permitopen, &opts->npermitopen)) != 0) 920 &opts->permitopen, &opts->npermitopen)) != 0 ||
921 (r = deserialise_array(m,
922 &opts->permitlisten, &opts->npermitlisten)) != 0)
863 goto out; 923 goto out;
864 924
865 /* success */ 925 /* success */
diff --git a/auth-options.h b/auth-options.h
index bf59b30be..0462983b5 100644
--- a/auth-options.h
+++ b/auth-options.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.h,v 1.26 2018/03/12 00:52:01 djm Exp $ */ 1/* $OpenBSD: auth-options.h,v 1.27 2018/06/06 18:23:32 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2018 Damien Miller <djm@mindrot.org> 4 * Copyright (c) 2018 Damien Miller <djm@mindrot.org>
@@ -55,6 +55,10 @@ struct sshauthopt {
55 size_t npermitopen; 55 size_t npermitopen;
56 char **permitopen; 56 char **permitopen;
57 57
58 /* Permitted listens (remote forwarding) */
59 size_t npermitlisten;
60 char **permitlisten;
61
58 /* 62 /*
59 * Permitted host/addresses (comma-separated) 63 * Permitted host/addresses (comma-separated)
60 * Caller must check source address matches both lists (if present). 64 * Caller must check source address matches both lists (if present).
diff --git a/auth-pam.c b/auth-pam.c
index 00ba87775..8c0138362 100644
--- a/auth-pam.c
+++ b/auth-pam.c
@@ -86,8 +86,8 @@ extern char *__progname;
86#endif 86#endif
87 87
88#include "xmalloc.h" 88#include "xmalloc.h"
89#include "buffer.h" 89#include "sshbuf.h"
90#include "key.h" 90#include "ssherr.h"
91#include "hostfile.h" 91#include "hostfile.h"
92#include "auth.h" 92#include "auth.h"
93#include "auth-pam.h" 93#include "auth-pam.h"
@@ -105,7 +105,7 @@ extern char *__progname;
105#include "monitor_wrap.h" 105#include "monitor_wrap.h"
106 106
107extern ServerOptions options; 107extern ServerOptions options;
108extern Buffer loginmsg; 108extern struct sshbuf *loginmsg;
109extern u_int utmp_len; 109extern u_int utmp_len;
110 110
111/* so we don't silently change behaviour */ 111/* so we don't silently change behaviour */
@@ -313,44 +313,54 @@ sshpam_password_change_required(int reqd)
313 313
314/* Import regular and PAM environment from subprocess */ 314/* Import regular and PAM environment from subprocess */
315static void 315static void
316import_environments(Buffer *b) 316import_environments(struct sshbuf *b)
317{ 317{
318 char *env; 318 char *env;
319 u_int i, num_env; 319 u_int n, i, num_env;
320 int err; 320 int r;
321 321
322 debug3("PAM: %s entering", __func__); 322 debug3("PAM: %s entering", __func__);
323 323
324#ifndef UNSUPPORTED_POSIX_THREADS_HACK 324#ifndef UNSUPPORTED_POSIX_THREADS_HACK
325 /* Import variables set by do_pam_account */ 325 /* Import variables set by do_pam_account */
326 sshpam_account_status = buffer_get_int(b); 326 if ((r = sshbuf_get_u32(b, &n)) != 0)
327 sshpam_password_change_required(buffer_get_int(b)); 327 fatal("%s: buffer error: %s", __func__, ssh_err(r));
328 if (n > INT_MAX)
329 fatal("%s: invalid PAM account status %u", __func__, n);
330 sshpam_account_status = (int)n;
331 if ((r = sshbuf_get_u32(b, &n)) != 0)
332 fatal("%s: buffer error: %s", __func__, ssh_err(r));
333 sshpam_password_change_required(n != 0);
328 334
329 /* Import environment from subprocess */ 335 /* Import environment from subprocess */
330 num_env = buffer_get_int(b); 336 if ((r = sshbuf_get_u32(b, &num_env)) != 0)
337 fatal("%s: buffer error: %s", __func__, ssh_err(r));
331 if (num_env > 1024) 338 if (num_env > 1024)
332 fatal("%s: received %u environment variables, expected <= 1024", 339 fatal("%s: received %u environment variables, expected <= 1024",
333 __func__, num_env); 340 __func__, num_env);
334 sshpam_env = xcalloc(num_env + 1, sizeof(*sshpam_env)); 341 sshpam_env = xcalloc(num_env + 1, sizeof(*sshpam_env));
335 debug3("PAM: num env strings %d", num_env); 342 debug3("PAM: num env strings %d", num_env);
336 for(i = 0; i < num_env; i++) 343 for(i = 0; i < num_env; i++) {
337 sshpam_env[i] = buffer_get_string(b, NULL); 344 if ((r = sshbuf_get_cstring(b, &(sshpam_env[i]), NULL)) != 0)
338 345 fatal("%s: buffer error: %s", __func__, ssh_err(r));
346 }
339 sshpam_env[num_env] = NULL; 347 sshpam_env[num_env] = NULL;
340 348
341 /* Import PAM environment from subprocess */ 349 /* Import PAM environment from subprocess */
342 num_env = buffer_get_int(b); 350 if ((r = sshbuf_get_u32(b, &num_env)) != 0)
351 fatal("%s: buffer error: %s", __func__, ssh_err(r));
343 debug("PAM: num PAM env strings %d", num_env); 352 debug("PAM: num PAM env strings %d", num_env);
344 for(i = 0; i < num_env; i++) { 353 for (i = 0; i < num_env; i++) {
345 env = buffer_get_string(b, NULL); 354 if ((r = sshbuf_get_cstring(b, &env, NULL)) != 0)
346 355 fatal("%s: buffer error: %s", __func__, ssh_err(r));
347#ifdef HAVE_PAM_PUTENV 356#ifdef HAVE_PAM_PUTENV
348 /* Errors are not fatal here */ 357 /* Errors are not fatal here */
349 if ((err = pam_putenv(sshpam_handle, env)) != PAM_SUCCESS) { 358 if ((r = pam_putenv(sshpam_handle, env)) != PAM_SUCCESS) {
350 error("PAM: pam_putenv: %s", 359 error("PAM: pam_putenv: %s",
351 pam_strerror(sshpam_handle, sshpam_err)); 360 pam_strerror(sshpam_handle, r));
352 } 361 }
353#endif 362#endif
363 /* XXX leak env? */
354 } 364 }
355#endif 365#endif
356} 366}
@@ -362,10 +372,11 @@ static int
362sshpam_thread_conv(int n, sshpam_const struct pam_message **msg, 372sshpam_thread_conv(int n, sshpam_const struct pam_message **msg,
363 struct pam_response **resp, void *data) 373 struct pam_response **resp, void *data)
364{ 374{
365 Buffer buffer; 375 struct sshbuf *buffer;
366 struct pam_ctxt *ctxt; 376 struct pam_ctxt *ctxt;
367 struct pam_response *reply; 377 struct pam_response *reply;
368 int i; 378 int r, i;
379 u_char status;
369 380
370 debug3("PAM: %s entering, %d messages", __func__, n); 381 debug3("PAM: %s entering, %d messages", __func__, n);
371 *resp = NULL; 382 *resp = NULL;
@@ -379,38 +390,52 @@ sshpam_thread_conv(int n, sshpam_const struct pam_message **msg,
379 return (PAM_CONV_ERR); 390 return (PAM_CONV_ERR);
380 391
381 if ((reply = calloc(n, sizeof(*reply))) == NULL) 392 if ((reply = calloc(n, sizeof(*reply))) == NULL)
382 return (PAM_CONV_ERR); 393 return PAM_CONV_ERR;
394 if ((buffer = sshbuf_new()) == NULL) {
395 free(reply);
396 return PAM_CONV_ERR;
397 }
383 398
384 buffer_init(&buffer);
385 for (i = 0; i < n; ++i) { 399 for (i = 0; i < n; ++i) {
386 switch (PAM_MSG_MEMBER(msg, i, msg_style)) { 400 switch (PAM_MSG_MEMBER(msg, i, msg_style)) {
387 case PAM_PROMPT_ECHO_OFF: 401 case PAM_PROMPT_ECHO_OFF:
388 case PAM_PROMPT_ECHO_ON: 402 case PAM_PROMPT_ECHO_ON:
389 buffer_put_cstring(&buffer, 403 if ((r = sshbuf_put_cstring(buffer,
390 PAM_MSG_MEMBER(msg, i, msg)); 404 PAM_MSG_MEMBER(msg, i, msg))) != 0)
405 fatal("%s: buffer error: %s",
406 __func__, ssh_err(r));
391 if (ssh_msg_send(ctxt->pam_csock, 407 if (ssh_msg_send(ctxt->pam_csock,
392 PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) 408 PAM_MSG_MEMBER(msg, i, msg_style), buffer) == -1)
393 goto fail; 409 goto fail;
394 if (ssh_msg_recv(ctxt->pam_csock, &buffer) == -1) 410
411 if (ssh_msg_recv(ctxt->pam_csock, buffer) == -1)
395 goto fail; 412 goto fail;
396 if (buffer_get_char(&buffer) != PAM_AUTHTOK) 413 if ((r = sshbuf_get_u8(buffer, &status)) != 0)
414 fatal("%s: buffer error: %s",
415 __func__, ssh_err(r));
416 if (status != PAM_AUTHTOK)
397 goto fail; 417 goto fail;
398 reply[i].resp = buffer_get_string(&buffer, NULL); 418 if ((r = sshbuf_get_cstring(buffer,
419 &reply[i].resp, NULL)) != 0)
420 fatal("%s: buffer error: %s",
421 __func__, ssh_err(r));
399 break; 422 break;
400 case PAM_ERROR_MSG: 423 case PAM_ERROR_MSG:
401 case PAM_TEXT_INFO: 424 case PAM_TEXT_INFO:
402 buffer_put_cstring(&buffer, 425 if ((r = sshbuf_put_cstring(buffer,
403 PAM_MSG_MEMBER(msg, i, msg)); 426 PAM_MSG_MEMBER(msg, i, msg))) != 0)
427 fatal("%s: buffer error: %s",
428 __func__, ssh_err(r));
404 if (ssh_msg_send(ctxt->pam_csock, 429 if (ssh_msg_send(ctxt->pam_csock,
405 PAM_MSG_MEMBER(msg, i, msg_style), &buffer) == -1) 430 PAM_MSG_MEMBER(msg, i, msg_style), buffer) == -1)
406 goto fail; 431 goto fail;
407 break; 432 break;
408 default: 433 default:
409 goto fail; 434 goto fail;
410 } 435 }
411 buffer_clear(&buffer); 436 sshbuf_reset(buffer);
412 } 437 }
413 buffer_free(&buffer); 438 sshbuf_free(buffer);
414 *resp = reply; 439 *resp = reply;
415 return (PAM_SUCCESS); 440 return (PAM_SUCCESS);
416 441
@@ -419,7 +444,7 @@ sshpam_thread_conv(int n, sshpam_const struct pam_message **msg,
419 free(reply[i].resp); 444 free(reply[i].resp);
420 } 445 }
421 free(reply); 446 free(reply);
422 buffer_free(&buffer); 447 sshbuf_free(buffer);
423 return (PAM_CONV_ERR); 448 return (PAM_CONV_ERR);
424} 449}
425 450
@@ -430,9 +455,9 @@ static void *
430sshpam_thread(void *ctxtp) 455sshpam_thread(void *ctxtp)
431{ 456{
432 struct pam_ctxt *ctxt = ctxtp; 457 struct pam_ctxt *ctxt = ctxtp;
433 Buffer buffer; 458 struct sshbuf *buffer = NULL;
434 struct pam_conv sshpam_conv; 459 struct pam_conv sshpam_conv;
435 int flags = (options.permit_empty_passwd == 0 ? 460 int r, flags = (options.permit_empty_passwd == 0 ?
436 PAM_DISALLOW_NULL_AUTHTOK : 0); 461 PAM_DISALLOW_NULL_AUTHTOK : 0);
437#ifndef UNSUPPORTED_POSIX_THREADS_HACK 462#ifndef UNSUPPORTED_POSIX_THREADS_HACK
438 extern char **environ; 463 extern char **environ;
@@ -465,7 +490,9 @@ sshpam_thread(void *ctxtp)
465 if (sshpam_authctxt == NULL) 490 if (sshpam_authctxt == NULL)
466 fatal("%s: PAM authctxt not initialized", __func__); 491 fatal("%s: PAM authctxt not initialized", __func__);
467 492
468 buffer_init(&buffer); 493 if ((buffer = sshbuf_new()) == NULL)
494 fatal("%s: sshbuf_new failed", __func__);
495
469 sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, 496 sshpam_err = pam_set_item(sshpam_handle, PAM_CONV,
470 (const void *)&sshpam_conv); 497 (const void *)&sshpam_conv);
471 if (sshpam_err != PAM_SUCCESS) 498 if (sshpam_err != PAM_SUCCESS)
@@ -488,45 +515,59 @@ sshpam_thread(void *ctxtp)
488 sshpam_password_change_required(0); 515 sshpam_password_change_required(0);
489 } 516 }
490 517
491 buffer_put_cstring(&buffer, "OK"); 518 if ((r = sshbuf_put_cstring(buffer, "OK")) != 0)
519 fatal("%s: buffer error: %s", __func__, ssh_err(r));
492 520
493#ifndef UNSUPPORTED_POSIX_THREADS_HACK 521#ifndef UNSUPPORTED_POSIX_THREADS_HACK
494 /* Export variables set by do_pam_account */ 522 /* Export variables set by do_pam_account */
495 buffer_put_int(&buffer, sshpam_account_status); 523 if ((r = sshbuf_put_u32(buffer, sshpam_account_status)) != 0 ||
496 buffer_put_int(&buffer, sshpam_authctxt->force_pwchange); 524 (r = sshbuf_put_u32(buffer, sshpam_authctxt->force_pwchange)) != 0)
525 fatal("%s: buffer error: %s", __func__, ssh_err(r));
497 526
498 /* Export any environment strings set in child */ 527 /* Export any environment strings set in child */
499 for(i = 0; environ[i] != NULL; i++) 528 for (i = 0; environ[i] != NULL; i++) {
500 ; /* Count */ 529 /* Count */
501 buffer_put_int(&buffer, i); 530 if (i > INT_MAX)
502 for(i = 0; environ[i] != NULL; i++) 531 fatal("%s: too many enviornment strings", __func__);
503 buffer_put_cstring(&buffer, environ[i]); 532 }
504 533 if ((r = sshbuf_put_u32(buffer, i)) != 0)
534 fatal("%s: buffer error: %s", __func__, ssh_err(r));
535 for (i = 0; environ[i] != NULL; i++) {
536 if ((r = sshbuf_put_cstring(buffer, environ[i])) != 0)
537 fatal("%s: buffer error: %s", __func__, ssh_err(r));
538 }
505 /* Export any environment strings set by PAM in child */ 539 /* Export any environment strings set by PAM in child */
506 env_from_pam = pam_getenvlist(sshpam_handle); 540 env_from_pam = pam_getenvlist(sshpam_handle);
507 for(i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) 541 for (i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) {
508 ; /* Count */ 542 /* Count */
509 buffer_put_int(&buffer, i); 543 if (i > INT_MAX)
510 for(i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) 544 fatal("%s: too many PAM enviornment strings", __func__);
511 buffer_put_cstring(&buffer, env_from_pam[i]); 545 }
546 if ((r = sshbuf_put_u32(buffer, i)) != 0)
547 fatal("%s: buffer error: %s", __func__, ssh_err(r));
548 for (i = 0; env_from_pam != NULL && env_from_pam[i] != NULL; i++) {
549 if ((r = sshbuf_put_cstring(buffer, env_from_pam[i])) != 0)
550 fatal("%s: buffer error: %s", __func__, ssh_err(r));
551 }
512#endif /* UNSUPPORTED_POSIX_THREADS_HACK */ 552#endif /* UNSUPPORTED_POSIX_THREADS_HACK */
513 553
514 /* XXX - can't do much about an error here */ 554 /* XXX - can't do much about an error here */
515 ssh_msg_send(ctxt->pam_csock, sshpam_err, &buffer); 555 ssh_msg_send(ctxt->pam_csock, sshpam_err, buffer);
516 buffer_free(&buffer); 556 sshbuf_free(buffer);
517 pthread_exit(NULL); 557 pthread_exit(NULL);
518 558
519 auth_fail: 559 auth_fail:
520 buffer_put_cstring(&buffer, 560 if ((r = sshbuf_put_cstring(buffer,
521 pam_strerror(sshpam_handle, sshpam_err)); 561 pam_strerror(sshpam_handle, sshpam_err))) != 0)
562 fatal("%s: buffer error: %s", __func__, ssh_err(r));
522 /* XXX - can't do much about an error here */ 563 /* XXX - can't do much about an error here */
523 if (sshpam_err == PAM_ACCT_EXPIRED) 564 if (sshpam_err == PAM_ACCT_EXPIRED)
524 ssh_msg_send(ctxt->pam_csock, PAM_ACCT_EXPIRED, &buffer); 565 ssh_msg_send(ctxt->pam_csock, PAM_ACCT_EXPIRED, buffer);
525 else if (sshpam_maxtries_reached) 566 else if (sshpam_maxtries_reached)
526 ssh_msg_send(ctxt->pam_csock, PAM_MAXTRIES, &buffer); 567 ssh_msg_send(ctxt->pam_csock, PAM_MAXTRIES, buffer);
527 else 568 else
528 ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, &buffer); 569 ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, buffer);
529 buffer_free(&buffer); 570 sshbuf_free(buffer);
530 pthread_exit(NULL); 571 pthread_exit(NULL);
531 572
532 return (NULL); /* Avoid warning for non-pthread case */ 573 return (NULL); /* Avoid warning for non-pthread case */
@@ -563,8 +604,7 @@ sshpam_store_conv(int n, sshpam_const struct pam_message **msg,
563 struct pam_response **resp, void *data) 604 struct pam_response **resp, void *data)
564{ 605{
565 struct pam_response *reply; 606 struct pam_response *reply;
566 int i; 607 int r, i;
567 size_t len;
568 608
569 debug3("PAM: %s called with %d messages", __func__, n); 609 debug3("PAM: %s called with %d messages", __func__, n);
570 *resp = NULL; 610 *resp = NULL;
@@ -579,9 +619,10 @@ sshpam_store_conv(int n, sshpam_const struct pam_message **msg,
579 switch (PAM_MSG_MEMBER(msg, i, msg_style)) { 619 switch (PAM_MSG_MEMBER(msg, i, msg_style)) {
580 case PAM_ERROR_MSG: 620 case PAM_ERROR_MSG:
581 case PAM_TEXT_INFO: 621 case PAM_TEXT_INFO:
582 len = strlen(PAM_MSG_MEMBER(msg, i, msg)); 622 if ((r = sshbuf_putf(loginmsg, "%s\n",
583 buffer_append(&loginmsg, PAM_MSG_MEMBER(msg, i, msg), len); 623 PAM_MSG_MEMBER(msg, i, msg))) != 0)
584 buffer_append(&loginmsg, "\n", 1 ); 624 fatal("%s: buffer error: %s",
625 __func__, ssh_err(r));
585 reply[i].resp_retcode = PAM_SUCCESS; 626 reply[i].resp_retcode = PAM_SUCCESS;
586 break; 627 break;
587 default: 628 default:
@@ -674,6 +715,27 @@ sshpam_init(Authctxt *authctxt)
674 return (0); 715 return (0);
675} 716}
676 717
718static void
719expose_authinfo(const char *caller)
720{
721 char *auth_info;
722
723 /*
724 * Expose authentication information to PAM.
725 * The environment variable is versioned. Please increment the
726 * version suffix if the format of session_info changes.
727 */
728 if (sshpam_authctxt->session_info == NULL)
729 auth_info = xstrdup("");
730 else if ((auth_info = sshbuf_dup_string(
731 sshpam_authctxt->session_info)) == NULL)
732 fatal("%s: sshbuf_dup_string failed", __func__);
733
734 debug2("%s: auth information in SSH_AUTH_INFO_0", caller);
735 do_pam_putenv("SSH_AUTH_INFO_0", auth_info);
736 free(auth_info);
737}
738
677static void * 739static void *
678sshpam_init_ctx(Authctxt *authctxt) 740sshpam_init_ctx(Authctxt *authctxt)
679{ 741{
@@ -694,6 +756,7 @@ sshpam_init_ctx(Authctxt *authctxt)
694 return (NULL); 756 return (NULL);
695 } 757 }
696 758
759 expose_authinfo(__func__);
697 ctxt = xcalloc(1, sizeof *ctxt); 760 ctxt = xcalloc(1, sizeof *ctxt);
698 761
699 /* Start the authentication thread */ 762 /* Start the authentication thread */
@@ -721,25 +784,27 @@ sshpam_query(void *ctx, char **name, char **info,
721 u_int *num, char ***prompts, u_int **echo_on) 784 u_int *num, char ***prompts, u_int **echo_on)
722{ 785{
723 struct ssh *ssh = active_state; /* XXX */ 786 struct ssh *ssh = active_state; /* XXX */
724 Buffer buffer; 787 struct sshbuf *buffer;
725 struct pam_ctxt *ctxt = ctx; 788 struct pam_ctxt *ctxt = ctx;
726 size_t plen; 789 size_t plen;
727 u_char type; 790 u_char type;
728 char *msg; 791 char *msg;
729 size_t len, mlen; 792 size_t len, mlen;
793 int r;
730 794
731 debug3("PAM: %s entering", __func__); 795 debug3("PAM: %s entering", __func__);
732 buffer_init(&buffer); 796 if ((buffer = sshbuf_new()) == NULL)
797 fatal("%s: sshbuf_new failed", __func__);
733 *name = xstrdup(""); 798 *name = xstrdup("");
734 *info = xstrdup(""); 799 *info = xstrdup("");
735 *prompts = xmalloc(sizeof(char *)); 800 *prompts = xmalloc(sizeof(char *));
736 **prompts = NULL; 801 **prompts = NULL;
737 plen = 0; 802 plen = 0;
738 *echo_on = xmalloc(sizeof(u_int)); 803 *echo_on = xmalloc(sizeof(u_int));
739 while (ssh_msg_recv(ctxt->pam_psock, &buffer) == 0) { 804 while (ssh_msg_recv(ctxt->pam_psock, buffer) == 0) {
740 type = buffer_get_char(&buffer); 805 if ((r = sshbuf_get_u8(buffer, &type)) != 0 ||
741 msg = buffer_get_string(&buffer, NULL); 806 (r = sshbuf_get_cstring(buffer, &msg, &mlen)) != 0)
742 mlen = strlen(msg); 807 fatal("%s: buffer error: %s", __func__, ssh_err(r));
743 switch (type) { 808 switch (type) {
744 case PAM_PROMPT_ECHO_ON: 809 case PAM_PROMPT_ECHO_ON:
745 case PAM_PROMPT_ECHO_OFF: 810 case PAM_PROMPT_ECHO_OFF:
@@ -785,8 +850,10 @@ sshpam_query(void *ctx, char **name, char **info,
785 if (**prompts != NULL) { 850 if (**prompts != NULL) {
786 /* drain any accumulated messages */ 851 /* drain any accumulated messages */
787 debug("PAM: %s", **prompts); 852 debug("PAM: %s", **prompts);
788 buffer_append(&loginmsg, **prompts, 853 if ((r = sshbuf_put(loginmsg, **prompts,
789 strlen(**prompts)); 854 strlen(**prompts))) != 0)
855 fatal("%s: buffer error: %s",
856 __func__, ssh_err(r));
790 free(**prompts); 857 free(**prompts);
791 **prompts = NULL; 858 **prompts = NULL;
792 } 859 }
@@ -797,7 +864,7 @@ sshpam_query(void *ctx, char **name, char **info,
797 fatal("Internal error: PAM auth " 864 fatal("Internal error: PAM auth "
798 "succeeded when it should have " 865 "succeeded when it should have "
799 "failed"); 866 "failed");
800 import_environments(&buffer); 867 import_environments(buffer);
801 *num = 0; 868 *num = 0;
802 **echo_on = 0; 869 **echo_on = 0;
803 ctxt->pam_done = 1; 870 ctxt->pam_done = 1;
@@ -848,9 +915,10 @@ fake_password(const char *wire_password)
848static int 915static int
849sshpam_respond(void *ctx, u_int num, char **resp) 916sshpam_respond(void *ctx, u_int num, char **resp)
850{ 917{
851 Buffer buffer; 918 struct sshbuf *buffer;
852 struct pam_ctxt *ctxt = ctx; 919 struct pam_ctxt *ctxt = ctx;
853 char *fake; 920 char *fake;
921 int r;
854 922
855 debug2("PAM: %s entering, %u responses", __func__, num); 923 debug2("PAM: %s entering, %u responses", __func__, num);
856 switch (ctxt->pam_done) { 924 switch (ctxt->pam_done) {
@@ -866,21 +934,24 @@ sshpam_respond(void *ctx, u_int num, char **resp)
866 error("PAM: expected one response, got %u", num); 934 error("PAM: expected one response, got %u", num);
867 return (-1); 935 return (-1);
868 } 936 }
869 buffer_init(&buffer); 937 if ((buffer = sshbuf_new()) == NULL)
938 fatal("%s: sshbuf_new failed", __func__);
870 if (sshpam_authctxt->valid && 939 if (sshpam_authctxt->valid &&
871 (sshpam_authctxt->pw->pw_uid != 0 || 940 (sshpam_authctxt->pw->pw_uid != 0 ||
872 options.permit_root_login == PERMIT_YES)) 941 options.permit_root_login == PERMIT_YES)) {
873 buffer_put_cstring(&buffer, *resp); 942 if ((r = sshbuf_put_cstring(buffer, *resp)) != 0)
874 else { 943 fatal("%s: buffer error: %s", __func__, ssh_err(r));
944 } else {
875 fake = fake_password(*resp); 945 fake = fake_password(*resp);
876 buffer_put_cstring(&buffer, fake); 946 if ((r = sshbuf_put_cstring(buffer, fake)) != 0)
947 fatal("%s: buffer error: %s", __func__, ssh_err(r));
877 free(fake); 948 free(fake);
878 } 949 }
879 if (ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, &buffer) == -1) { 950 if (ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, buffer) == -1) {
880 buffer_free(&buffer); 951 sshbuf_free(buffer);
881 return (-1); 952 return (-1);
882 } 953 }
883 buffer_free(&buffer); 954 sshbuf_free(buffer);
884 return (1); 955 return (1);
885} 956}
886 957
@@ -935,26 +1006,6 @@ finish_pam(void)
935 sshpam_cleanup(); 1006 sshpam_cleanup();
936} 1007}
937 1008
938static void
939expose_authinfo(const char *caller)
940{
941 char *auth_info;
942
943 /*
944 * Expose authentication information to PAM.
945 * The enviornment variable is versioned. Please increment the
946 * version suffix if the format of session_info changes.
947 */
948 if (sshpam_authctxt->session_info == NULL)
949 auth_info = xstrdup("");
950 else if ((auth_info = sshbuf_dup_string(
951 sshpam_authctxt->session_info)) == NULL)
952 fatal("%s: sshbuf_dup_string failed", __func__);
953
954 debug2("%s: auth information in SSH_AUTH_INFO_0", caller);
955 do_pam_putenv("SSH_AUTH_INFO_0", auth_info);
956 free(auth_info);
957}
958 1009
959u_int 1010u_int
960do_pam_account(void) 1011do_pam_account(void)
@@ -1174,7 +1225,7 @@ sshpam_passwd_conv(int n, sshpam_const struct pam_message **msg,
1174 struct pam_response **resp, void *data) 1225 struct pam_response **resp, void *data)
1175{ 1226{
1176 struct pam_response *reply; 1227 struct pam_response *reply;
1177 int i; 1228 int r, i;
1178 size_t len; 1229 size_t len;
1179 1230
1180 debug3("PAM: %s called with %d messages", __func__, n); 1231 debug3("PAM: %s called with %d messages", __func__, n);
@@ -1200,9 +1251,10 @@ sshpam_passwd_conv(int n, sshpam_const struct pam_message **msg,
1200 case PAM_TEXT_INFO: 1251 case PAM_TEXT_INFO:
1201 len = strlen(PAM_MSG_MEMBER(msg, i, msg)); 1252 len = strlen(PAM_MSG_MEMBER(msg, i, msg));
1202 if (len > 0) { 1253 if (len > 0) {
1203 buffer_append(&loginmsg, 1254 if ((r = sshbuf_putf(loginmsg, "%s\n",
1204 PAM_MSG_MEMBER(msg, i, msg), len); 1255 PAM_MSG_MEMBER(msg, i, msg))) != 0)
1205 buffer_append(&loginmsg, "\n", 1); 1256 fatal("%s: buffer error: %s",
1257 __func__, ssh_err(r));
1206 } 1258 }
1207 if ((reply[i].resp = strdup("")) == NULL) 1259 if ((reply[i].resp = strdup("")) == NULL)
1208 goto fail; 1260 goto fail;
diff --git a/auth-passwd.c b/auth-passwd.c
index 6097fdd24..65f525184 100644
--- a/auth-passwd.c
+++ b/auth-passwd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-passwd.c,v 1.46 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: auth-passwd.c,v 1.47 2018/07/09 21:26:02 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -46,16 +46,17 @@
46#include <stdarg.h> 46#include <stdarg.h>
47 47
48#include "packet.h" 48#include "packet.h"
49#include "buffer.h" 49#include "sshbuf.h"
50#include "ssherr.h"
50#include "log.h" 51#include "log.h"
51#include "misc.h" 52#include "misc.h"
52#include "servconf.h" 53#include "servconf.h"
53#include "key.h" 54#include "sshkey.h"
54#include "hostfile.h" 55#include "hostfile.h"
55#include "auth.h" 56#include "auth.h"
56#include "auth-options.h" 57#include "auth-options.h"
57 58
58extern Buffer loginmsg; 59extern struct sshbuf *loginmsg;
59extern ServerOptions options; 60extern ServerOptions options;
60 61
61#ifdef HAVE_LOGIN_CAP 62#ifdef HAVE_LOGIN_CAP
@@ -131,7 +132,7 @@ auth_password(struct ssh *ssh, const char *password)
131static void 132static void
132warn_expiry(Authctxt *authctxt, auth_session_t *as) 133warn_expiry(Authctxt *authctxt, auth_session_t *as)
133{ 134{
134 char buf[256]; 135 int r;
135 quad_t pwtimeleft, actimeleft, daysleft, pwwarntime, acwarntime; 136 quad_t pwtimeleft, actimeleft, daysleft, pwwarntime, acwarntime;
136 137
137 pwwarntime = acwarntime = TWO_WEEKS; 138 pwwarntime = acwarntime = TWO_WEEKS;
@@ -148,17 +149,17 @@ warn_expiry(Authctxt *authctxt, auth_session_t *as)
148#endif 149#endif
149 if (pwtimeleft != 0 && pwtimeleft < pwwarntime) { 150 if (pwtimeleft != 0 && pwtimeleft < pwwarntime) {
150 daysleft = pwtimeleft / DAY + 1; 151 daysleft = pwtimeleft / DAY + 1;
151 snprintf(buf, sizeof(buf), 152 if ((r = sshbuf_putf(loginmsg,
152 "Your password will expire in %lld day%s.\n", 153 "Your password will expire in %lld day%s.\n",
153 daysleft, daysleft == 1 ? "" : "s"); 154 daysleft, daysleft == 1 ? "" : "s")) != 0)
154 buffer_append(&loginmsg, buf, strlen(buf)); 155 fatal("%s: buffer error: %s", __func__, ssh_err(r));
155 } 156 }
156 if (actimeleft != 0 && actimeleft < acwarntime) { 157 if (actimeleft != 0 && actimeleft < acwarntime) {
157 daysleft = actimeleft / DAY + 1; 158 daysleft = actimeleft / DAY + 1;
158 snprintf(buf, sizeof(buf), 159 if ((r = sshbuf_putf(loginmsg,
159 "Your account will expire in %lld day%s.\n", 160 "Your account will expire in %lld day%s.\n",
160 daysleft, daysleft == 1 ? "" : "s"); 161 daysleft, daysleft == 1 ? "" : "s")) != 0)
161 buffer_append(&loginmsg, buf, strlen(buf)); 162 fatal("%s: buffer error: %s", __func__, ssh_err(r));
162 } 163 }
163} 164}
164 165
diff --git a/auth-rhosts.c b/auth-rhosts.c
index ecf956f06..57296e1f6 100644
--- a/auth-rhosts.c
+++ b/auth-rhosts.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-rhosts.c,v 1.48 2016/08/13 17:47:41 markus Exp $ */ 1/* $OpenBSD: auth-rhosts.c,v 1.49 2018/07/09 21:35:50 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -34,8 +34,8 @@
34#include "pathnames.h" 34#include "pathnames.h"
35#include "log.h" 35#include "log.h"
36#include "misc.h" 36#include "misc.h"
37#include "buffer.h" /* XXX */ 37#include "sshbuf.h"
38#include "key.h" /* XXX */ 38#include "sshkey.h"
39#include "servconf.h" 39#include "servconf.h"
40#include "canohost.h" 40#include "canohost.h"
41#include "sshkey.h" 41#include "sshkey.h"
diff --git a/auth-shadow.c b/auth-shadow.c
index 219091677..c77ee8da9 100644
--- a/auth-shadow.c
+++ b/auth-shadow.c
@@ -30,10 +30,10 @@
30#include <string.h> 30#include <string.h>
31#include <time.h> 31#include <time.h>
32 32
33#include "key.h"
34#include "hostfile.h" 33#include "hostfile.h"
35#include "auth.h" 34#include "auth.h"
36#include "buffer.h" 35#include "sshbuf.h"
36#include "ssherr.h"
37#include "log.h" 37#include "log.h"
38 38
39#ifdef DAY 39#ifdef DAY
@@ -41,7 +41,7 @@
41#endif 41#endif
42#define DAY (24L * 60 * 60) /* 1 day in seconds */ 42#define DAY (24L * 60 * 60) /* 1 day in seconds */
43 43
44extern Buffer loginmsg; 44extern struct sshbuf *loginmsg;
45 45
46/* 46/*
47 * For the account and password expiration functions, we assume the expiry 47 * For the account and password expiration functions, we assume the expiry
@@ -57,7 +57,7 @@ auth_shadow_acctexpired(struct spwd *spw)
57{ 57{
58 time_t today; 58 time_t today;
59 int daysleft; 59 int daysleft;
60 char buf[256]; 60 int r;
61 61
62 today = time(NULL) / DAY; 62 today = time(NULL) / DAY;
63 daysleft = spw->sp_expire - today; 63 daysleft = spw->sp_expire - today;
@@ -71,10 +71,10 @@ auth_shadow_acctexpired(struct spwd *spw)
71 return 1; 71 return 1;
72 } else if (daysleft <= spw->sp_warn) { 72 } else if (daysleft <= spw->sp_warn) {
73 debug3("account will expire in %d days", daysleft); 73 debug3("account will expire in %d days", daysleft);
74 snprintf(buf, sizeof(buf), 74 if ((r = sshbuf_putf(loginmsg,
75 "Your account will expire in %d day%s.\n", daysleft, 75 "Your account will expire in %d day%s.\n", daysleft,
76 daysleft == 1 ? "" : "s"); 76 daysleft == 1 ? "" : "s")) != 0)
77 buffer_append(&loginmsg, buf, strlen(buf)); 77 fatal("%s: buffer error: %s", __func__, ssh_err(r));
78 } 78 }
79 79
80 return 0; 80 return 0;
@@ -89,9 +89,8 @@ auth_shadow_pwexpired(Authctxt *ctxt)
89{ 89{
90 struct spwd *spw = NULL; 90 struct spwd *spw = NULL;
91 const char *user = ctxt->pw->pw_name; 91 const char *user = ctxt->pw->pw_name;
92 char buf[256];
93 time_t today; 92 time_t today;
94 int daysleft, disabled = 0; 93 int r, daysleft, disabled = 0;
95 94
96 if ((spw = getspnam((char *)user)) == NULL) { 95 if ((spw = getspnam((char *)user)) == NULL) {
97 error("Could not get shadow information for %.100s", user); 96 error("Could not get shadow information for %.100s", user);
@@ -131,10 +130,10 @@ auth_shadow_pwexpired(Authctxt *ctxt)
131 return 1; 130 return 1;
132 } else if (daysleft <= spw->sp_warn) { 131 } else if (daysleft <= spw->sp_warn) {
133 debug3("password will expire in %d days", daysleft); 132 debug3("password will expire in %d days", daysleft);
134 snprintf(buf, sizeof(buf), 133 if ((r = sshbuf_putf(loginmsg,
135 "Your password will expire in %d day%s.\n", daysleft, 134 "Your password will expire in %d day%s.\n", daysleft,
136 daysleft == 1 ? "" : "s"); 135 daysleft == 1 ? "" : "s")) != 0)
137 buffer_append(&loginmsg, buf, strlen(buf)); 136 fatal("%s: buffer error: %s", __func__, ssh_err(r));
138 } 137 }
139 138
140 return 0; 139 return 0;
diff --git a/auth-sia.c b/auth-sia.c
index 7c97f03e5..ebe9d8d12 100644
--- a/auth-sia.c
+++ b/auth-sia.c
@@ -37,7 +37,6 @@
37 37
38#include "ssh.h" 38#include "ssh.h"
39#include "ssh_api.h" 39#include "ssh_api.h"
40#include "key.h"
41#include "hostfile.h" 40#include "hostfile.h"
42#include "auth.h" 41#include "auth.h"
43#include "auth-sia.h" 42#include "auth-sia.h"
diff --git a/auth-skey.c b/auth-skey.c
index 3536ec8fa..b347527f6 100644
--- a/auth-skey.c
+++ b/auth-skey.c
@@ -35,7 +35,6 @@
35#include <skey.h> 35#include <skey.h>
36 36
37#include "xmalloc.h" 37#include "xmalloc.h"
38#include "key.h"
39#include "hostfile.h" 38#include "hostfile.h"
40#include "auth.h" 39#include "auth.h"
41#include "ssh-gss.h" 40#include "ssh-gss.h"
diff --git a/auth.c b/auth.c
index 63366768a..9a3bc96f1 100644
--- a/auth.c
+++ b/auth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth.c,v 1.127 2018/03/12 00:52:01 djm Exp $ */ 1/* $OpenBSD: auth.c,v 1.132 2018/07/11 08:19:35 martijn Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -55,10 +55,10 @@
55#include "match.h" 55#include "match.h"
56#include "groupaccess.h" 56#include "groupaccess.h"
57#include "log.h" 57#include "log.h"
58#include "buffer.h" 58#include "sshbuf.h"
59#include "misc.h" 59#include "misc.h"
60#include "servconf.h" 60#include "servconf.h"
61#include "key.h" 61#include "sshkey.h"
62#include "hostfile.h" 62#include "hostfile.h"
63#include "auth.h" 63#include "auth.h"
64#include "auth-options.h" 64#include "auth-options.h"
@@ -79,13 +79,12 @@
79/* import */ 79/* import */
80extern ServerOptions options; 80extern ServerOptions options;
81extern int use_privsep; 81extern int use_privsep;
82extern Buffer loginmsg; 82extern struct sshbuf *loginmsg;
83extern struct passwd *privsep_pw; 83extern struct passwd *privsep_pw;
84extern struct sshauthopt *auth_opts; 84extern struct sshauthopt *auth_opts;
85 85
86/* Debugging messages */ 86/* Debugging messages */
87Buffer auth_debug; 87static struct sshbuf *auth_debug;
88int auth_debug_init;
89 88
90/* 89/*
91 * Check if the user is allowed to log in via ssh. If user is listed 90 * Check if the user is allowed to log in via ssh. If user is listed
@@ -281,7 +280,7 @@ format_method_key(Authctxt *authctxt)
281 if (key == NULL) 280 if (key == NULL)
282 return NULL; 281 return NULL;
283 282
284 if (key_is_cert(key)) { 283 if (sshkey_is_cert(key)) {
285 fp = sshkey_fingerprint(key->cert->signature_key, 284 fp = sshkey_fingerprint(key->cert->signature_key,
286 options.fingerprint_hash, SSH_FP_DEFAULT); 285 options.fingerprint_hash, SSH_FP_DEFAULT);
287 xasprintf(&ret, "%s ID %s (serial %llu) CA %s %s%s%s", 286 xasprintf(&ret, "%s ID %s (serial %llu) CA %s %s%s%s",
@@ -422,11 +421,13 @@ auth_root_allowed(struct ssh *ssh, const char *method)
422char * 421char *
423expand_authorized_keys(const char *filename, struct passwd *pw) 422expand_authorized_keys(const char *filename, struct passwd *pw)
424{ 423{
425 char *file, ret[PATH_MAX]; 424 char *file, uidstr[32], ret[PATH_MAX];
426 int i; 425 int i;
427 426
427 snprintf(uidstr, sizeof(uidstr), "%llu",
428 (unsigned long long)pw->pw_uid);
428 file = percent_expand(filename, "h", pw->pw_dir, 429 file = percent_expand(filename, "h", pw->pw_dir,
429 "u", pw->pw_name, (char *)NULL); 430 "u", pw->pw_name, "U", uidstr, (char *)NULL);
430 431
431 /* 432 /*
432 * Ensure that filename starts anchored. If not, be backward 433 * Ensure that filename starts anchored. If not, be backward
@@ -670,26 +671,32 @@ auth_debug_add(const char *fmt,...)
670{ 671{
671 char buf[1024]; 672 char buf[1024];
672 va_list args; 673 va_list args;
674 int r;
673 675
674 if (!auth_debug_init) 676 if (auth_debug == NULL)
675 return; 677 return;
676 678
677 va_start(args, fmt); 679 va_start(args, fmt);
678 vsnprintf(buf, sizeof(buf), fmt, args); 680 vsnprintf(buf, sizeof(buf), fmt, args);
679 va_end(args); 681 va_end(args);
680 buffer_put_cstring(&auth_debug, buf); 682 if ((r = sshbuf_put_cstring(auth_debug, buf)) != 0)
683 fatal("%s: sshbuf_put_cstring: %s", __func__, ssh_err(r));
681} 684}
682 685
683void 686void
684auth_debug_send(void) 687auth_debug_send(void)
685{ 688{
689 struct ssh *ssh = active_state; /* XXX */
686 char *msg; 690 char *msg;
691 int r;
687 692
688 if (!auth_debug_init) 693 if (auth_debug == NULL)
689 return; 694 return;
690 while (buffer_len(&auth_debug)) { 695 while (sshbuf_len(auth_debug) != 0) {
691 msg = buffer_get_string(&auth_debug, NULL); 696 if ((r = sshbuf_get_cstring(auth_debug, &msg, NULL)) != 0)
692 packet_send_debug("%s", msg); 697 fatal("%s: sshbuf_get_cstring: %s",
698 __func__, ssh_err(r));
699 ssh_packet_send_debug(ssh, "%s", msg);
693 free(msg); 700 free(msg);
694 } 701 }
695} 702}
@@ -697,12 +704,10 @@ auth_debug_send(void)
697void 704void
698auth_debug_reset(void) 705auth_debug_reset(void)
699{ 706{
700 if (auth_debug_init) 707 if (auth_debug != NULL)
701 buffer_clear(&auth_debug); 708 sshbuf_reset(auth_debug);
702 else { 709 else if ((auth_debug = sshbuf_new()) == NULL)
703 buffer_init(&auth_debug); 710 fatal("%s: sshbuf_new failed", __func__);
704 auth_debug_init = 1;
705 }
706} 711}
707 712
708struct passwd * 713struct passwd *
@@ -843,7 +848,7 @@ auth_get_canonical_hostname(struct ssh *ssh, int use_dns)
843} 848}
844 849
845/* 850/*
846 * Runs command in a subprocess wuth a minimal environment. 851 * Runs command in a subprocess with a minimal environment.
847 * Returns pid on success, 0 on failure. 852 * Returns pid on success, 0 on failure.
848 * The child stdout and stderr maybe captured, left attached or sent to 853 * The child stdout and stderr maybe captured, left attached or sent to
849 * /dev/null depending on the contents of flags. 854 * /dev/null depending on the contents of flags.
@@ -1003,17 +1008,20 @@ auth_log_authopts(const char *loc, const struct sshauthopt *opts, int do_remote)
1003 int do_env = options.permit_user_env && opts->nenv > 0; 1008 int do_env = options.permit_user_env && opts->nenv > 0;
1004 int do_permitopen = opts->npermitopen > 0 && 1009 int do_permitopen = opts->npermitopen > 0 &&
1005 (options.allow_tcp_forwarding & FORWARD_LOCAL) != 0; 1010 (options.allow_tcp_forwarding & FORWARD_LOCAL) != 0;
1011 int do_permitlisten = opts->npermitlisten > 0 &&
1012 (options.allow_tcp_forwarding & FORWARD_REMOTE) != 0;
1006 size_t i; 1013 size_t i;
1007 char msg[1024], buf[64]; 1014 char msg[1024], buf[64];
1008 1015
1009 snprintf(buf, sizeof(buf), "%d", opts->force_tun_device); 1016 snprintf(buf, sizeof(buf), "%d", opts->force_tun_device);
1010 /* Try to keep this alphabetically sorted */ 1017 /* Try to keep this alphabetically sorted */
1011 snprintf(msg, sizeof(msg), "key options:%s%s%s%s%s%s%s%s%s%s%s%s", 1018 snprintf(msg, sizeof(msg), "key options:%s%s%s%s%s%s%s%s%s%s%s%s%s",
1012 opts->permit_agent_forwarding_flag ? " agent-forwarding" : "", 1019 opts->permit_agent_forwarding_flag ? " agent-forwarding" : "",
1013 opts->force_command == NULL ? "" : " command", 1020 opts->force_command == NULL ? "" : " command",
1014 do_env ? " environment" : "", 1021 do_env ? " environment" : "",
1015 opts->valid_before == 0 ? "" : "expires", 1022 opts->valid_before == 0 ? "" : "expires",
1016 do_permitopen ? " permitopen" : "", 1023 do_permitopen ? " permitopen" : "",
1024 do_permitlisten ? " permitlisten" : "",
1017 opts->permit_port_forwarding_flag ? " port-forwarding" : "", 1025 opts->permit_port_forwarding_flag ? " port-forwarding" : "",
1018 opts->cert_principals == NULL ? "" : " principals", 1026 opts->cert_principals == NULL ? "" : " principals",
1019 opts->permit_pty_flag ? " pty" : "", 1027 opts->permit_pty_flag ? " pty" : "",
@@ -1047,12 +1055,18 @@ auth_log_authopts(const char *loc, const struct sshauthopt *opts, int do_remote)
1047 } 1055 }
1048 if (opts->force_command != NULL) 1056 if (opts->force_command != NULL)
1049 debug("%s: forced command: \"%s\"", loc, opts->force_command); 1057 debug("%s: forced command: \"%s\"", loc, opts->force_command);
1050 if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0) { 1058 if (do_permitopen) {
1051 for (i = 0; i < opts->npermitopen; i++) { 1059 for (i = 0; i < opts->npermitopen; i++) {
1052 debug("%s: permitted open: %s", 1060 debug("%s: permitted open: %s",
1053 loc, opts->permitopen[i]); 1061 loc, opts->permitopen[i]);
1054 } 1062 }
1055 } 1063 }
1064 if (do_permitlisten) {
1065 for (i = 0; i < opts->npermitlisten; i++) {
1066 debug("%s: permitted listen: %s",
1067 loc, opts->permitlisten[i]);
1068 }
1069 }
1056} 1070}
1057 1071
1058/* Activate a new set of key/cert options; merging with what is there. */ 1072/* Activate a new set of key/cert options; merging with what is there. */
@@ -1080,6 +1094,7 @@ auth_restrict_session(struct ssh *ssh)
1080 1094
1081 /* A blank sshauthopt defaults to permitting nothing */ 1095 /* A blank sshauthopt defaults to permitting nothing */
1082 restricted = sshauthopt_new(); 1096 restricted = sshauthopt_new();
1097 restricted->permit_pty_flag = 1;
1083 restricted->restricted = 1; 1098 restricted->restricted = 1;
1084 1099
1085 if (auth_activate_options(ssh, restricted) != 0) 1100 if (auth_activate_options(ssh, restricted) != 0)
diff --git a/auth.h b/auth.h
index 23ce67caf..977562f0a 100644
--- a/auth.h
+++ b/auth.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth.h,v 1.95 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: auth.h,v 1.96 2018/04/10 00:10:49 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -89,7 +89,7 @@ struct Authctxt {
89 struct sshkey **prev_keys; 89 struct sshkey **prev_keys;
90 u_int nprev_keys; 90 u_int nprev_keys;
91 91
92 /* Last used key and ancilliary information from active auth method */ 92 /* Last used key and ancillary information from active auth method */
93 struct sshkey *auth_method_key; 93 struct sshkey *auth_method_key;
94 char *auth_method_info; 94 char *auth_method_info;
95 95
@@ -187,8 +187,6 @@ int auth2_challenge(struct ssh *, char *);
187void auth2_challenge_stop(struct ssh *); 187void auth2_challenge_stop(struct ssh *);
188int bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **); 188int bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **);
189int bsdauth_respond(void *, u_int, char **); 189int bsdauth_respond(void *, u_int, char **);
190int skey_query(void *, char **, char **, u_int *, char ***, u_int **);
191int skey_respond(void *, u_int, char **);
192 190
193int allowed_user(struct passwd *); 191int allowed_user(struct passwd *);
194struct passwd * getpwnamallow(const char *user); 192struct passwd * getpwnamallow(const char *user);
@@ -239,8 +237,6 @@ pid_t subprocess(const char *, struct passwd *,
239 237
240int sys_auth_passwd(struct ssh *, const char *); 238int sys_auth_passwd(struct ssh *, const char *);
241 239
242#define SKEY_PROMPT "\nS/Key Password: "
243
244#if defined(KRB5) && !defined(HEIMDAL) 240#if defined(KRB5) && !defined(HEIMDAL)
245#include <krb5.h> 241#include <krb5.h>
246krb5_error_code ssh_krb5_cc_gen(krb5_context, krb5_ccache *); 242krb5_error_code ssh_krb5_cc_gen(krb5_context, krb5_ccache *);
diff --git a/auth2-chall.c b/auth2-chall.c
index 11c8d31b3..2d5cff448 100644
--- a/auth2-chall.c
+++ b/auth2-chall.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-chall.c,v 1.48 2017/05/30 14:29:59 markus Exp $ */ 1/* $OpenBSD: auth2-chall.c,v 1.50 2018/07/11 18:55:11 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2001 Per Allansson. All rights reserved. 4 * Copyright (c) 2001 Per Allansson. All rights reserved.
@@ -34,12 +34,13 @@
34 34
35#include "xmalloc.h" 35#include "xmalloc.h"
36#include "ssh2.h" 36#include "ssh2.h"
37#include "key.h" 37#include "sshkey.h"
38#include "hostfile.h" 38#include "hostfile.h"
39#include "auth.h" 39#include "auth.h"
40#include "buffer.h" 40#include "sshbuf.h"
41#include "packet.h" 41#include "packet.h"
42#include "dispatch.h" 42#include "dispatch.h"
43#include "ssherr.h"
43#include "log.h" 44#include "log.h"
44#include "misc.h" 45#include "misc.h"
45#include "servconf.h" 46#include "servconf.h"
@@ -48,7 +49,7 @@
48extern ServerOptions options; 49extern ServerOptions options;
49 50
50static int auth2_challenge_start(struct ssh *); 51static int auth2_challenge_start(struct ssh *);
51static int send_userauth_info_request(Authctxt *); 52static int send_userauth_info_request(struct ssh *);
52static int input_userauth_info_response(int, u_int32_t, struct ssh *); 53static int input_userauth_info_response(int, u_int32_t, struct ssh *);
53 54
54#ifdef BSD_AUTH 55#ifdef BSD_AUTH
@@ -57,9 +58,6 @@ extern KbdintDevice bsdauth_device;
57#ifdef USE_PAM 58#ifdef USE_PAM
58extern KbdintDevice sshpam_device; 59extern KbdintDevice sshpam_device;
59#endif 60#endif
60#ifdef SKEY
61extern KbdintDevice skey_device;
62#endif
63#endif 61#endif
64 62
65KbdintDevice *devices[] = { 63KbdintDevice *devices[] = {
@@ -69,9 +67,6 @@ KbdintDevice *devices[] = {
69#ifdef USE_PAM 67#ifdef USE_PAM
70 &sshpam_device, 68 &sshpam_device,
71#endif 69#endif
72#ifdef SKEY
73 &skey_device,
74#endif
75#endif 70#endif
76 NULL 71 NULL
77}; 72};
@@ -105,8 +100,8 @@ static KbdintAuthctxt *
105kbdint_alloc(const char *devs) 100kbdint_alloc(const char *devs)
106{ 101{
107 KbdintAuthctxt *kbdintctxt; 102 KbdintAuthctxt *kbdintctxt;
108 Buffer b; 103 struct sshbuf *b;
109 int i; 104 int i, r;
110 105
111#ifdef USE_PAM 106#ifdef USE_PAM
112 if (!options.use_pam) 107 if (!options.use_pam)
@@ -115,16 +110,17 @@ kbdint_alloc(const char *devs)
115 110
116 kbdintctxt = xcalloc(1, sizeof(KbdintAuthctxt)); 111 kbdintctxt = xcalloc(1, sizeof(KbdintAuthctxt));
117 if (strcmp(devs, "") == 0) { 112 if (strcmp(devs, "") == 0) {
118 buffer_init(&b); 113 if ((b = sshbuf_new()) == NULL)
114 fatal("%s: sshbuf_new failed", __func__);
119 for (i = 0; devices[i]; i++) { 115 for (i = 0; devices[i]; i++) {
120 if (buffer_len(&b) > 0) 116 if ((r = sshbuf_putf(b, "%s%s",
121 buffer_append(&b, ",", 1); 117 sshbuf_len(b) ? "," : "", devices[i]->name)) != 0)
122 buffer_append(&b, devices[i]->name, 118 fatal("%s: buffer error: %s",
123 strlen(devices[i]->name)); 119 __func__, ssh_err(r));
124 } 120 }
125 if ((kbdintctxt->devices = sshbuf_dup_string(&b)) == NULL) 121 if ((kbdintctxt->devices = sshbuf_dup_string(b)) == NULL)
126 fatal("%s: sshbuf_dup_string failed", __func__); 122 fatal("%s: sshbuf_dup_string failed", __func__);
127 buffer_free(&b); 123 sshbuf_free(b);
128 } else { 124 } else {
129 kbdintctxt->devices = xstrdup(devs); 125 kbdintctxt->devices = xstrdup(devs);
130 } 126 }
@@ -243,7 +239,7 @@ auth2_challenge_start(struct ssh *ssh)
243 auth2_challenge_stop(ssh); 239 auth2_challenge_stop(ssh);
244 return 0; 240 return 0;
245 } 241 }
246 if (send_userauth_info_request(authctxt) == 0) { 242 if (send_userauth_info_request(ssh) == 0) {
247 auth2_challenge_stop(ssh); 243 auth2_challenge_stop(ssh);
248 return 0; 244 return 0;
249 } 245 }
@@ -255,28 +251,32 @@ auth2_challenge_start(struct ssh *ssh)
255} 251}
256 252
257static int 253static int
258send_userauth_info_request(Authctxt *authctxt) 254send_userauth_info_request(struct ssh *ssh)
259{ 255{
256 Authctxt *authctxt = ssh->authctxt;
260 KbdintAuthctxt *kbdintctxt; 257 KbdintAuthctxt *kbdintctxt;
261 char *name, *instr, **prompts; 258 char *name, *instr, **prompts;
262 u_int i, *echo_on; 259 u_int r, i, *echo_on;
263 260
264 kbdintctxt = authctxt->kbdintctxt; 261 kbdintctxt = authctxt->kbdintctxt;
265 if (kbdintctxt->device->query(kbdintctxt->ctxt, 262 if (kbdintctxt->device->query(kbdintctxt->ctxt,
266 &name, &instr, &kbdintctxt->nreq, &prompts, &echo_on)) 263 &name, &instr, &kbdintctxt->nreq, &prompts, &echo_on))
267 return 0; 264 return 0;
268 265
269 packet_start(SSH2_MSG_USERAUTH_INFO_REQUEST); 266 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_INFO_REQUEST)) != 0 ||
270 packet_put_cstring(name); 267 (r = sshpkt_put_cstring(ssh, name)) != 0 ||
271 packet_put_cstring(instr); 268 (r = sshpkt_put_cstring(ssh, instr)) != 0 ||
272 packet_put_cstring(""); /* language not used */ 269 (r = sshpkt_put_cstring(ssh, "")) != 0 || /* language not used */
273 packet_put_int(kbdintctxt->nreq); 270 (r = sshpkt_put_u32(ssh, kbdintctxt->nreq)) != 0)
271 fatal("%s: %s", __func__, ssh_err(r));
274 for (i = 0; i < kbdintctxt->nreq; i++) { 272 for (i = 0; i < kbdintctxt->nreq; i++) {
275 packet_put_cstring(prompts[i]); 273 if ((r = sshpkt_put_cstring(ssh, prompts[i])) != 0 ||
276 packet_put_char(echo_on[i]); 274 (r = sshpkt_put_u8(ssh, echo_on[i])) != 0)
275 fatal("%s: %s", __func__, ssh_err(r));
277 } 276 }
278 packet_send(); 277 if ((r = sshpkt_send(ssh)) != 0 ||
279 packet_write_wait(); 278 (r = ssh_packet_write_wait(ssh)) != 0)
279 fatal("%s: %s", __func__, ssh_err(r));
280 280
281 for (i = 0; i < kbdintctxt->nreq; i++) 281 for (i = 0; i < kbdintctxt->nreq; i++)
282 free(prompts[i]); 282 free(prompts[i]);
@@ -293,6 +293,7 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh)
293 Authctxt *authctxt = ssh->authctxt; 293 Authctxt *authctxt = ssh->authctxt;
294 KbdintAuthctxt *kbdintctxt; 294 KbdintAuthctxt *kbdintctxt;
295 int authenticated = 0, res; 295 int authenticated = 0, res;
296 int r;
296 u_int i, nresp; 297 u_int i, nresp;
297 const char *devicename = NULL; 298 const char *devicename = NULL;
298 char **response = NULL; 299 char **response = NULL;
@@ -306,7 +307,8 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh)
306 fatal("input_userauth_info_response: no device"); 307 fatal("input_userauth_info_response: no device");
307 308
308 authctxt->postponed = 0; /* reset */ 309 authctxt->postponed = 0; /* reset */
309 nresp = packet_get_int(); 310 if ((r = sshpkt_get_u32(ssh, &nresp)) != 0)
311 fatal("%s: %s", __func__, ssh_err(r));
310 if (nresp != kbdintctxt->nreq) 312 if (nresp != kbdintctxt->nreq)
311 fatal("input_userauth_info_response: wrong number of replies"); 313 fatal("input_userauth_info_response: wrong number of replies");
312 if (nresp > 100) 314 if (nresp > 100)
@@ -314,9 +316,12 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh)
314 if (nresp > 0) { 316 if (nresp > 0) {
315 response = xcalloc(nresp, sizeof(char *)); 317 response = xcalloc(nresp, sizeof(char *));
316 for (i = 0; i < nresp; i++) 318 for (i = 0; i < nresp; i++)
317 response[i] = packet_get_string(NULL); 319 if ((r = sshpkt_get_cstring(ssh, &response[i],
320 NULL)) != 0)
321 fatal("%s: %s", __func__, ssh_err(r));
318 } 322 }
319 packet_check_eom(); 323 if ((r = sshpkt_get_end(ssh)) != 0)
324 fatal("%s: %s", __func__, ssh_err(r));
320 325
321 res = kbdintctxt->device->respond(kbdintctxt->ctxt, nresp, response); 326 res = kbdintctxt->device->respond(kbdintctxt->ctxt, nresp, response);
322 327
@@ -333,7 +338,7 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh)
333 break; 338 break;
334 case 1: 339 case 1:
335 /* Authentication needs further interaction */ 340 /* Authentication needs further interaction */
336 if (send_userauth_info_request(authctxt) == 1) 341 if (send_userauth_info_request(ssh) == 1)
337 authctxt->postponed = 1; 342 authctxt->postponed = 1;
338 break; 343 break;
339 default: 344 default:
@@ -358,7 +363,7 @@ input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh)
358void 363void
359privsep_challenge_enable(void) 364privsep_challenge_enable(void)
360{ 365{
361#if defined(BSD_AUTH) || defined(USE_PAM) || defined(SKEY) 366#if defined(BSD_AUTH) || defined(USE_PAM)
362 int n = 0; 367 int n = 0;
363#endif 368#endif
364#ifdef BSD_AUTH 369#ifdef BSD_AUTH
@@ -367,9 +372,6 @@ privsep_challenge_enable(void)
367#ifdef USE_PAM 372#ifdef USE_PAM
368 extern KbdintDevice mm_sshpam_device; 373 extern KbdintDevice mm_sshpam_device;
369#endif 374#endif
370#ifdef SKEY
371 extern KbdintDevice mm_skey_device;
372#endif
373 375
374#ifdef BSD_AUTH 376#ifdef BSD_AUTH
375 devices[n++] = &mm_bsdauth_device; 377 devices[n++] = &mm_bsdauth_device;
@@ -377,8 +379,5 @@ privsep_challenge_enable(void)
377#ifdef USE_PAM 379#ifdef USE_PAM
378 devices[n++] = &mm_sshpam_device; 380 devices[n++] = &mm_sshpam_device;
379#endif 381#endif
380#ifdef SKEY
381 devices[n++] = &mm_skey_device;
382#endif
383#endif 382#endif
384} 383}
diff --git a/auth2-gss.c b/auth2-gss.c
index 589283b72..9351e0428 100644
--- a/auth2-gss.c
+++ b/auth2-gss.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-gss.c,v 1.26 2017/06/24 06:34:38 djm Exp $ */ 1/* $OpenBSD: auth2-gss.c,v 1.29 2018/07/31 03:10:27 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. 4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -33,13 +33,14 @@
33#include <stdarg.h> 33#include <stdarg.h>
34 34
35#include "xmalloc.h" 35#include "xmalloc.h"
36#include "key.h" 36#include "sshkey.h"
37#include "hostfile.h" 37#include "hostfile.h"
38#include "auth.h" 38#include "auth.h"
39#include "ssh2.h" 39#include "ssh2.h"
40#include "log.h" 40#include "log.h"
41#include "dispatch.h" 41#include "dispatch.h"
42#include "buffer.h" 42#include "sshbuf.h"
43#include "ssherr.h"
43#include "misc.h" 44#include "misc.h"
44#include "servconf.h" 45#include "servconf.h"
45#include "packet.h" 46#include "packet.h"
@@ -63,16 +64,15 @@ userauth_gssapi(struct ssh *ssh)
63 Authctxt *authctxt = ssh->authctxt; 64 Authctxt *authctxt = ssh->authctxt;
64 gss_OID_desc goid = {0, NULL}; 65 gss_OID_desc goid = {0, NULL};
65 Gssctxt *ctxt = NULL; 66 Gssctxt *ctxt = NULL;
66 int mechs; 67 int r, present;
67 int present; 68 u_int mechs;
68 OM_uint32 ms; 69 OM_uint32 ms;
69 u_int len; 70 size_t len;
70 u_char *doid = NULL; 71 u_char *doid = NULL;
71 72
72 if (!authctxt->valid || authctxt->user == NULL) 73 if ((r = sshpkt_get_u32(ssh, &mechs)) != 0)
73 return (0); 74 fatal("%s: %s", __func__, ssh_err(r));
74 75
75 mechs = packet_get_int();
76 if (mechs == 0) { 76 if (mechs == 0) {
77 debug("Mechanism negotiation is not supported"); 77 debug("Mechanism negotiation is not supported");
78 return (0); 78 return (0);
@@ -84,7 +84,8 @@ userauth_gssapi(struct ssh *ssh)
84 free(doid); 84 free(doid);
85 85
86 present = 0; 86 present = 0;
87 doid = packet_get_string(&len); 87 if ((r = sshpkt_get_string(ssh, &doid, &len)) != 0)
88 fatal("%s: %s", __func__, ssh_err(r));
88 89
89 if (len > 2 && doid[0] == SSH_GSS_OIDTYPE && 90 if (len > 2 && doid[0] == SSH_GSS_OIDTYPE &&
90 doid[1] == len - 2) { 91 doid[1] == len - 2) {
@@ -102,6 +103,12 @@ userauth_gssapi(struct ssh *ssh)
102 return (0); 103 return (0);
103 } 104 }
104 105
106 if (!authctxt->valid || authctxt->user == NULL) {
107 debug2("%s: disabled because of invalid user", __func__);
108 free(doid);
109 return (0);
110 }
111
105 if (GSS_ERROR(PRIVSEP(ssh_gssapi_server_ctx(&ctxt, &goid)))) { 112 if (GSS_ERROR(PRIVSEP(ssh_gssapi_server_ctx(&ctxt, &goid)))) {
106 if (ctxt != NULL) 113 if (ctxt != NULL)
107 ssh_gssapi_delete_ctx(&ctxt); 114 ssh_gssapi_delete_ctx(&ctxt);
@@ -112,12 +119,12 @@ userauth_gssapi(struct ssh *ssh)
112 119
113 authctxt->methoddata = (void *)ctxt; 120 authctxt->methoddata = (void *)ctxt;
114 121
115 packet_start(SSH2_MSG_USERAUTH_GSSAPI_RESPONSE);
116
117 /* Return the OID that we received */ 122 /* Return the OID that we received */
118 packet_put_string(doid, len); 123 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_GSSAPI_RESPONSE)) != 0 ||
124 (r = sshpkt_put_string(ssh, doid, len)) != 0 ||
125 (r = sshpkt_send(ssh)) != 0)
126 fatal("%s: %s", __func__, ssh_err(r));
119 127
120 packet_send();
121 free(doid); 128 free(doid);
122 129
123 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, &input_gssapi_token); 130 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, &input_gssapi_token);
@@ -135,36 +142,45 @@ input_gssapi_token(int type, u_int32_t plen, struct ssh *ssh)
135 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; 142 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
136 gss_buffer_desc recv_tok; 143 gss_buffer_desc recv_tok;
137 OM_uint32 maj_status, min_status, flags; 144 OM_uint32 maj_status, min_status, flags;
138 u_int len; 145 u_char *p;
146 size_t len;
147 int r;
139 148
140 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) 149 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep))
141 fatal("No authentication or GSSAPI context"); 150 fatal("No authentication or GSSAPI context");
142 151
143 gssctxt = authctxt->methoddata; 152 gssctxt = authctxt->methoddata;
144 recv_tok.value = packet_get_string(&len); 153 if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 ||
145 recv_tok.length = len; /* u_int vs. size_t */ 154 (r = sshpkt_get_end(ssh)) != 0)
146 155 fatal("%s: %s", __func__, ssh_err(r));
147 packet_check_eom();
148 156
157 recv_tok.value = p;
158 recv_tok.length = len;
149 maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok, 159 maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok,
150 &send_tok, &flags)); 160 &send_tok, &flags));
151 161
152 free(recv_tok.value); 162 free(p);
153 163
154 if (GSS_ERROR(maj_status)) { 164 if (GSS_ERROR(maj_status)) {
155 if (send_tok.length != 0) { 165 if (send_tok.length != 0) {
156 packet_start(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK); 166 if ((r = sshpkt_start(ssh,
157 packet_put_string(send_tok.value, send_tok.length); 167 SSH2_MSG_USERAUTH_GSSAPI_ERRTOK)) != 0 ||
158 packet_send(); 168 (r = sshpkt_put_string(ssh, send_tok.value,
169 send_tok.length)) != 0 ||
170 (r = sshpkt_send(ssh)) != 0)
171 fatal("%s: %s", __func__, ssh_err(r));
159 } 172 }
160 authctxt->postponed = 0; 173 authctxt->postponed = 0;
161 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); 174 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL);
162 userauth_finish(ssh, 0, "gssapi-with-mic", NULL); 175 userauth_finish(ssh, 0, "gssapi-with-mic", NULL);
163 } else { 176 } else {
164 if (send_tok.length != 0) { 177 if (send_tok.length != 0) {
165 packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); 178 if ((r = sshpkt_start(ssh,
166 packet_put_string(send_tok.value, send_tok.length); 179 SSH2_MSG_USERAUTH_GSSAPI_TOKEN)) != 0 ||
167 packet_send(); 180 (r = sshpkt_put_string(ssh, send_tok.value,
181 send_tok.length)) != 0 ||
182 (r = sshpkt_send(ssh)) != 0)
183 fatal("%s: %s", __func__, ssh_err(r));
168 } 184 }
169 if (maj_status == GSS_S_COMPLETE) { 185 if (maj_status == GSS_S_COMPLETE) {
170 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); 186 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL);
@@ -190,17 +206,20 @@ input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh)
190 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; 206 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
191 gss_buffer_desc recv_tok; 207 gss_buffer_desc recv_tok;
192 OM_uint32 maj_status; 208 OM_uint32 maj_status;
193 u_int len; 209 int r;
210 u_char *p;
211 size_t len;
194 212
195 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) 213 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep))
196 fatal("No authentication or GSSAPI context"); 214 fatal("No authentication or GSSAPI context");
197 215
198 gssctxt = authctxt->methoddata; 216 gssctxt = authctxt->methoddata;
199 recv_tok.value = packet_get_string(&len); 217 if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 ||
218 (r = sshpkt_get_end(ssh)) != 0)
219 fatal("%s: %s", __func__, ssh_err(r));
220 recv_tok.value = p;
200 recv_tok.length = len; 221 recv_tok.length = len;
201 222
202 packet_check_eom();
203
204 /* Push the error token into GSSAPI to see what it says */ 223 /* Push the error token into GSSAPI to see what it says */
205 maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok, 224 maj_status = PRIVSEP(ssh_gssapi_accept_ctx(gssctxt, &recv_tok,
206 &send_tok, NULL)); 225 &send_tok, NULL));
@@ -227,7 +246,7 @@ static int
227input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh) 246input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh)
228{ 247{
229 Authctxt *authctxt = ssh->authctxt; 248 Authctxt *authctxt = ssh->authctxt;
230 int authenticated; 249 int r, authenticated;
231 const char *displayname; 250 const char *displayname;
232 251
233 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) 252 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep))
@@ -238,7 +257,8 @@ input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh)
238 * the dispatcher once the exchange is complete 257 * the dispatcher once the exchange is complete
239 */ 258 */
240 259
241 packet_check_eom(); 260 if ((r = sshpkt_get_end(ssh)) != 0)
261 fatal("%s: %s", __func__, ssh_err(r));
242 262
243 authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user)); 263 authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user));
244 264
@@ -260,32 +280,37 @@ input_gssapi_mic(int type, u_int32_t plen, struct ssh *ssh)
260{ 280{
261 Authctxt *authctxt = ssh->authctxt; 281 Authctxt *authctxt = ssh->authctxt;
262 Gssctxt *gssctxt; 282 Gssctxt *gssctxt;
263 int authenticated = 0; 283 int r, authenticated = 0;
264 Buffer b; 284 struct sshbuf *b;
265 gss_buffer_desc mic, gssbuf; 285 gss_buffer_desc mic, gssbuf;
266 u_int len;
267 const char *displayname; 286 const char *displayname;
287 u_char *p;
288 size_t len;
268 289
269 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) 290 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep))
270 fatal("No authentication or GSSAPI context"); 291 fatal("No authentication or GSSAPI context");
271 292
272 gssctxt = authctxt->methoddata; 293 gssctxt = authctxt->methoddata;
273 294
274 mic.value = packet_get_string(&len); 295 if ((r = sshpkt_get_string(ssh, &p, &len)) != 0)
296 fatal("%s: %s", __func__, ssh_err(r));
297 if ((b = sshbuf_new()) == NULL)
298 fatal("%s: sshbuf_new failed", __func__);
299 mic.value = p;
275 mic.length = len; 300 mic.length = len;
276 301 ssh_gssapi_buildmic(b, authctxt->user, authctxt->service,
277 ssh_gssapi_buildmic(&b, authctxt->user, authctxt->service,
278 "gssapi-with-mic"); 302 "gssapi-with-mic");
279 303
280 gssbuf.value = buffer_ptr(&b); 304 if ((gssbuf.value = sshbuf_mutable_ptr(b)) == NULL)
281 gssbuf.length = buffer_len(&b); 305 fatal("%s: sshbuf_mutable_ptr failed", __func__);
306 gssbuf.length = sshbuf_len(b);
282 307
283 if (!GSS_ERROR(PRIVSEP(ssh_gssapi_checkmic(gssctxt, &gssbuf, &mic)))) 308 if (!GSS_ERROR(PRIVSEP(ssh_gssapi_checkmic(gssctxt, &gssbuf, &mic))))
284 authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user)); 309 authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user));
285 else 310 else
286 logit("GSSAPI MIC check failed"); 311 logit("GSSAPI MIC check failed");
287 312
288 buffer_free(&b); 313 sshbuf_free(b);
289 free(mic.value); 314 free(mic.value);
290 315
291 if ((!use_privsep || mm_is_monitor()) && 316 if ((!use_privsep || mm_is_monitor()) &&
diff --git a/auth2-hostbased.c b/auth2-hostbased.c
index 8996f7e05..359393291 100644
--- a/auth2-hostbased.c
+++ b/auth2-hostbased.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-hostbased.c,v 1.33 2018/01/23 05:27:21 djm Exp $ */ 1/* $OpenBSD: auth2-hostbased.c,v 1.36 2018/07/31 03:10:27 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -34,7 +34,7 @@
34#include "xmalloc.h" 34#include "xmalloc.h"
35#include "ssh2.h" 35#include "ssh2.h"
36#include "packet.h" 36#include "packet.h"
37#include "buffer.h" 37#include "sshbuf.h"
38#include "log.h" 38#include "log.h"
39#include "misc.h" 39#include "misc.h"
40#include "servconf.h" 40#include "servconf.h"
@@ -67,10 +67,6 @@ userauth_hostbased(struct ssh *ssh)
67 size_t alen, blen, slen; 67 size_t alen, blen, slen;
68 int r, pktype, authenticated = 0; 68 int r, pktype, authenticated = 0;
69 69
70 if (!authctxt->valid) {
71 debug2("%s: disabled because of invalid user", __func__);
72 return 0;
73 }
74 /* XXX use sshkey_froms() */ 70 /* XXX use sshkey_froms() */
75 if ((r = sshpkt_get_cstring(ssh, &pkalg, &alen)) != 0 || 71 if ((r = sshpkt_get_cstring(ssh, &pkalg, &alen)) != 0 ||
76 (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0 || 72 (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0 ||
@@ -111,13 +107,17 @@ userauth_hostbased(struct ssh *ssh)
111 "signature format"); 107 "signature format");
112 goto done; 108 goto done;
113 } 109 }
114 if (match_pattern_list(sshkey_ssh_name(key), 110 if (match_pattern_list(pkalg, options.hostbased_key_types, 0) != 1) {
115 options.hostbased_key_types, 0) != 1) {
116 logit("%s: key type %s not in HostbasedAcceptedKeyTypes", 111 logit("%s: key type %s not in HostbasedAcceptedKeyTypes",
117 __func__, sshkey_type(key)); 112 __func__, sshkey_type(key));
118 goto done; 113 goto done;
119 } 114 }
120 115
116 if (!authctxt->valid || authctxt->user == NULL) {
117 debug2("%s: disabled because of invalid user", __func__);
118 goto done;
119 }
120
121 if ((b = sshbuf_new()) == NULL) 121 if ((b = sshbuf_new()) == NULL)
122 fatal("%s: sshbuf_new failed", __func__); 122 fatal("%s: sshbuf_new failed", __func__);
123 /* reconstruct packet */ 123 /* reconstruct packet */
diff --git a/auth2-kbdint.c b/auth2-kbdint.c
index 86aad8ddc..a813b8f56 100644
--- a/auth2-kbdint.c
+++ b/auth2-kbdint.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-kbdint.c,v 1.8 2017/05/30 14:29:59 markus Exp $ */ 1/* $OpenBSD: auth2-kbdint.c,v 1.9 2018/07/09 21:35:50 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -31,13 +31,12 @@
31 31
32#include "xmalloc.h" 32#include "xmalloc.h"
33#include "packet.h" 33#include "packet.h"
34#include "key.h"
35#include "hostfile.h" 34#include "hostfile.h"
36#include "auth.h" 35#include "auth.h"
37#include "log.h" 36#include "log.h"
38#include "buffer.h"
39#include "misc.h" 37#include "misc.h"
40#include "servconf.h" 38#include "servconf.h"
39#include "ssherr.h"
41 40
42/* import */ 41/* import */
43extern ServerOptions options; 42extern ServerOptions options;
@@ -45,12 +44,13 @@ extern ServerOptions options;
45static int 44static int
46userauth_kbdint(struct ssh *ssh) 45userauth_kbdint(struct ssh *ssh)
47{ 46{
48 int authenticated = 0; 47 int r, authenticated = 0;
49 char *lang, *devs; 48 char *lang, *devs;
50 49
51 lang = packet_get_string(NULL); 50 if ((r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0 ||
52 devs = packet_get_string(NULL); 51 (r = sshpkt_get_cstring(ssh, &devs, NULL)) != 0 ||
53 packet_check_eom(); 52 (r = sshpkt_get_end(ssh)) != 0)
53 fatal("%s: %s", __func__, ssh_err(r));
54 54
55 debug("keyboard-interactive devs %s", devs); 55 debug("keyboard-interactive devs %s", devs);
56 56
diff --git a/auth2-none.c b/auth2-none.c
index 8d4e9bb8c..dacb5fb83 100644
--- a/auth2-none.c
+++ b/auth2-none.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-none.c,v 1.21 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: auth2-none.c,v 1.22 2018/07/09 21:35:50 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -42,7 +42,6 @@
42#include "auth.h" 42#include "auth.h"
43#include "packet.h" 43#include "packet.h"
44#include "log.h" 44#include "log.h"
45#include "buffer.h"
46#include "misc.h" 45#include "misc.h"
47#include "servconf.h" 46#include "servconf.h"
48#include "compat.h" 47#include "compat.h"
diff --git a/auth2-passwd.c b/auth2-passwd.c
index 445016aec..0395a69f4 100644
--- a/auth2-passwd.c
+++ b/auth2-passwd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-passwd.c,v 1.15 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: auth2-passwd.c,v 1.16 2018/07/09 21:35:50 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -36,7 +36,6 @@
36#include "sshkey.h" 36#include "sshkey.h"
37#include "hostfile.h" 37#include "hostfile.h"
38#include "auth.h" 38#include "auth.h"
39#include "buffer.h"
40#ifdef GSSAPI 39#ifdef GSSAPI
41#include "ssh-gss.h" 40#include "ssh-gss.h"
42#endif 41#endif
diff --git a/auth2-pubkey.c b/auth2-pubkey.c
index 8024b1d6a..3d9f9af1f 100644
--- a/auth2-pubkey.c
+++ b/auth2-pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-pubkey.c,v 1.77 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: auth2-pubkey.c,v 1.84 2018/08/23 03:01:08 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -46,7 +46,7 @@
46#include "ssh.h" 46#include "ssh.h"
47#include "ssh2.h" 47#include "ssh2.h"
48#include "packet.h" 48#include "packet.h"
49#include "buffer.h" 49#include "sshbuf.h"
50#include "log.h" 50#include "log.h"
51#include "misc.h" 51#include "misc.h"
52#include "servconf.h" 52#include "servconf.h"
@@ -89,19 +89,15 @@ userauth_pubkey(struct ssh *ssh)
89{ 89{
90 Authctxt *authctxt = ssh->authctxt; 90 Authctxt *authctxt = ssh->authctxt;
91 struct passwd *pw = authctxt->pw; 91 struct passwd *pw = authctxt->pw;
92 struct sshbuf *b; 92 struct sshbuf *b = NULL;
93 struct sshkey *key = NULL; 93 struct sshkey *key = NULL;
94 char *pkalg, *userstyle = NULL, *key_s = NULL, *ca_s = NULL; 94 char *pkalg = NULL, *userstyle = NULL, *key_s = NULL, *ca_s = NULL;
95 u_char *pkblob, *sig, have_sig; 95 u_char *pkblob = NULL, *sig = NULL, have_sig;
96 size_t blen, slen; 96 size_t blen, slen;
97 int r, pktype; 97 int r, pktype;
98 int authenticated = 0; 98 int authenticated = 0;
99 struct sshauthopt *authopts = NULL; 99 struct sshauthopt *authopts = NULL;
100 100
101 if (!authctxt->valid) {
102 debug2("%s: disabled because of invalid user", __func__);
103 return 0;
104 }
105 if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 || 101 if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 ||
106 (r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 || 102 (r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 ||
107 (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0) 103 (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0)
@@ -109,7 +105,7 @@ userauth_pubkey(struct ssh *ssh)
109 pktype = sshkey_type_from_name(pkalg); 105 pktype = sshkey_type_from_name(pkalg);
110 if (pktype == KEY_UNSPEC) { 106 if (pktype == KEY_UNSPEC) {
111 /* this is perfectly legal */ 107 /* this is perfectly legal */
112 logit("%s: unsupported public key algorithm: %s", 108 verbose("%s: unsupported public key algorithm: %s",
113 __func__, pkalg); 109 __func__, pkalg);
114 goto done; 110 goto done;
115 } 111 }
@@ -136,8 +132,7 @@ userauth_pubkey(struct ssh *ssh)
136 logit("refusing previously-used %s key", sshkey_type(key)); 132 logit("refusing previously-used %s key", sshkey_type(key));
137 goto done; 133 goto done;
138 } 134 }
139 if (match_pattern_list(sshkey_ssh_name(key), 135 if (match_pattern_list(pkalg, options.pubkey_key_types, 0) != 1) {
140 options.pubkey_key_types, 0) != 1) {
141 logit("%s: key type %s not in PubkeyAcceptedKeyTypes", 136 logit("%s: key type %s not in PubkeyAcceptedKeyTypes",
142 __func__, sshkey_ssh_name(key)); 137 __func__, sshkey_ssh_name(key));
143 goto done; 138 goto done;
@@ -168,6 +163,11 @@ userauth_pubkey(struct ssh *ssh)
168 fatal("%s: sshbuf_put_string session id: %s", 163 fatal("%s: sshbuf_put_string session id: %s",
169 __func__, ssh_err(r)); 164 __func__, ssh_err(r));
170 } 165 }
166 if (!authctxt->valid || authctxt->user == NULL) {
167 debug2("%s: disabled because of invalid user",
168 __func__);
169 goto done;
170 }
171 /* reconstruct packet */ 171 /* reconstruct packet */
172 xasprintf(&userstyle, "%s%s%s", authctxt->user, 172 xasprintf(&userstyle, "%s%s%s", authctxt->user,
173 authctxt->style ? ":" : "", 173 authctxt->style ? ":" : "",
@@ -184,16 +184,15 @@ userauth_pubkey(struct ssh *ssh)
184#ifdef DEBUG_PK 184#ifdef DEBUG_PK
185 sshbuf_dump(b, stderr); 185 sshbuf_dump(b, stderr);
186#endif 186#endif
187
188 /* test for correct signature */ 187 /* test for correct signature */
189 authenticated = 0; 188 authenticated = 0;
190 if (PRIVSEP(user_key_allowed(ssh, pw, key, 1, &authopts)) && 189 if (PRIVSEP(user_key_allowed(ssh, pw, key, 1, &authopts)) &&
191 PRIVSEP(sshkey_verify(key, sig, slen, sshbuf_ptr(b), 190 PRIVSEP(sshkey_verify(key, sig, slen,
192 sshbuf_len(b), NULL, ssh->compat)) == 0) { 191 sshbuf_ptr(b), sshbuf_len(b),
192 (ssh->compat & SSH_BUG_SIGTYPE) == 0 ? pkalg : NULL,
193 ssh->compat)) == 0) {
193 authenticated = 1; 194 authenticated = 1;
194 } 195 }
195 sshbuf_free(b);
196 free(sig);
197 auth2_record_key(authctxt, authenticated, key); 196 auth2_record_key(authctxt, authenticated, key);
198 } else { 197 } else {
199 debug("%s: test pkalg %s pkblob %s%s%s", 198 debug("%s: test pkalg %s pkblob %s%s%s",
@@ -204,6 +203,11 @@ userauth_pubkey(struct ssh *ssh)
204 if ((r = sshpkt_get_end(ssh)) != 0) 203 if ((r = sshpkt_get_end(ssh)) != 0)
205 fatal("%s: %s", __func__, ssh_err(r)); 204 fatal("%s: %s", __func__, ssh_err(r));
206 205
206 if (!authctxt->valid || authctxt->user == NULL) {
207 debug2("%s: disabled because of invalid user",
208 __func__);
209 goto done;
210 }
207 /* XXX fake reply and always send PK_OK ? */ 211 /* XXX fake reply and always send PK_OK ? */
208 /* 212 /*
209 * XXX this allows testing whether a user is allowed 213 * XXX this allows testing whether a user is allowed
@@ -217,9 +221,9 @@ userauth_pubkey(struct ssh *ssh)
217 != 0 || 221 != 0 ||
218 (r = sshpkt_put_cstring(ssh, pkalg)) != 0 || 222 (r = sshpkt_put_cstring(ssh, pkalg)) != 0 ||
219 (r = sshpkt_put_string(ssh, pkblob, blen)) != 0 || 223 (r = sshpkt_put_string(ssh, pkblob, blen)) != 0 ||
220 (r = sshpkt_send(ssh)) != 0) 224 (r = sshpkt_send(ssh)) != 0 ||
225 (r = ssh_packet_write_wait(ssh)) != 0)
221 fatal("%s: %s", __func__, ssh_err(r)); 226 fatal("%s: %s", __func__, ssh_err(r));
222 ssh_packet_write_wait(ssh);
223 authctxt->postponed = 1; 227 authctxt->postponed = 1;
224 } 228 }
225 } 229 }
@@ -230,6 +234,7 @@ done:
230 } 234 }
231 debug2("%s: authenticated %d pkalg %s", __func__, authenticated, pkalg); 235 debug2("%s: authenticated %d pkalg %s", __func__, authenticated, pkalg);
232 236
237 sshbuf_free(b);
233 sshauthopt_free(authopts); 238 sshauthopt_free(authopts);
234 sshkey_free(key); 239 sshkey_free(key);
235 free(userstyle); 240 free(userstyle);
@@ -237,6 +242,7 @@ done:
237 free(pkblob); 242 free(pkblob);
238 free(key_s); 243 free(key_s);
239 free(ca_s); 244 free(ca_s);
245 free(sig);
240 return authenticated; 246 return authenticated;
241} 247}
242 248
@@ -319,14 +325,16 @@ static int
319process_principals(struct ssh *ssh, FILE *f, const char *file, 325process_principals(struct ssh *ssh, FILE *f, const char *file,
320 const struct sshkey_cert *cert, struct sshauthopt **authoptsp) 326 const struct sshkey_cert *cert, struct sshauthopt **authoptsp)
321{ 327{
322 char loc[256], line[SSH_MAX_PUBKEY_BYTES], *cp, *ep; 328 char loc[256], *line = NULL, *cp, *ep;
329 size_t linesize = 0;
323 u_long linenum = 0; 330 u_long linenum = 0;
324 u_int found_principal = 0; 331 u_int found_principal = 0;
325 332
326 if (authoptsp != NULL) 333 if (authoptsp != NULL)
327 *authoptsp = NULL; 334 *authoptsp = NULL;
328 335
329 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 336 while (getline(&line, &linesize, f) != -1) {
337 linenum++;
330 /* Always consume entire input */ 338 /* Always consume entire input */
331 if (found_principal) 339 if (found_principal)
332 continue; 340 continue;
@@ -344,6 +352,7 @@ process_principals(struct ssh *ssh, FILE *f, const char *file,
344 if (check_principals_line(ssh, cp, cert, loc, authoptsp) == 0) 352 if (check_principals_line(ssh, cp, cert, loc, authoptsp) == 0)
345 found_principal = 1; 353 found_principal = 1;
346 } 354 }
355 free(line);
347 return found_principal; 356 return found_principal;
348} 357}
349 358
@@ -387,7 +396,7 @@ match_principals_command(struct ssh *ssh, struct passwd *user_pw,
387 pid_t pid; 396 pid_t pid;
388 char *tmp, *username = NULL, *command = NULL, **av = NULL; 397 char *tmp, *username = NULL, *command = NULL, **av = NULL;
389 char *ca_fp = NULL, *key_fp = NULL, *catext = NULL, *keytext = NULL; 398 char *ca_fp = NULL, *key_fp = NULL, *catext = NULL, *keytext = NULL;
390 char serial_s[16]; 399 char serial_s[16], uidstr[32];
391 void (*osigchld)(int); 400 void (*osigchld)(int);
392 401
393 if (authoptsp != NULL) 402 if (authoptsp != NULL)
@@ -447,8 +456,11 @@ match_principals_command(struct ssh *ssh, struct passwd *user_pw,
447 } 456 }
448 snprintf(serial_s, sizeof(serial_s), "%llu", 457 snprintf(serial_s, sizeof(serial_s), "%llu",
449 (unsigned long long)cert->serial); 458 (unsigned long long)cert->serial);
459 snprintf(uidstr, sizeof(uidstr), "%llu",
460 (unsigned long long)user_pw->pw_uid);
450 for (i = 1; i < ac; i++) { 461 for (i = 1; i < ac; i++) {
451 tmp = percent_expand(av[i], 462 tmp = percent_expand(av[i],
463 "U", uidstr,
452 "u", user_pw->pw_name, 464 "u", user_pw->pw_name,
453 "h", user_pw->pw_dir, 465 "h", user_pw->pw_dir,
454 "t", sshkey_ssh_name(key), 466 "t", sshkey_ssh_name(key),
@@ -684,14 +696,16 @@ static int
684check_authkeys_file(struct ssh *ssh, struct passwd *pw, FILE *f, 696check_authkeys_file(struct ssh *ssh, struct passwd *pw, FILE *f,
685 char *file, struct sshkey *key, struct sshauthopt **authoptsp) 697 char *file, struct sshkey *key, struct sshauthopt **authoptsp)
686{ 698{
687 char *cp, line[SSH_MAX_PUBKEY_BYTES], loc[256]; 699 char *cp, *line = NULL, loc[256];
700 size_t linesize = 0;
688 int found_key = 0; 701 int found_key = 0;
689 u_long linenum = 0; 702 u_long linenum = 0;
690 703
691 if (authoptsp != NULL) 704 if (authoptsp != NULL)
692 *authoptsp = NULL; 705 *authoptsp = NULL;
693 706
694 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 707 while (getline(&line, &linesize, f) != -1) {
708 linenum++;
695 /* Always consume entire file */ 709 /* Always consume entire file */
696 if (found_key) 710 if (found_key)
697 continue; 711 continue;
@@ -705,6 +719,7 @@ check_authkeys_file(struct ssh *ssh, struct passwd *pw, FILE *f,
705 if (check_authkey_line(ssh, pw, key, cp, loc, authoptsp) == 0) 719 if (check_authkey_line(ssh, pw, key, cp, loc, authoptsp) == 0)
706 found_key = 1; 720 found_key = 1;
707 } 721 }
722 free(line);
708 return found_key; 723 return found_key;
709} 724}
710 725
@@ -852,7 +867,7 @@ user_key_command_allowed2(struct ssh *ssh, struct passwd *user_pw,
852 int i, uid_swapped = 0, ac = 0; 867 int i, uid_swapped = 0, ac = 0;
853 pid_t pid; 868 pid_t pid;
854 char *username = NULL, *key_fp = NULL, *keytext = NULL; 869 char *username = NULL, *key_fp = NULL, *keytext = NULL;
855 char *tmp, *command = NULL, **av = NULL; 870 char uidstr[32], *tmp, *command = NULL, **av = NULL;
856 void (*osigchld)(int); 871 void (*osigchld)(int);
857 872
858 if (authoptsp != NULL) 873 if (authoptsp != NULL)
@@ -902,8 +917,11 @@ user_key_command_allowed2(struct ssh *ssh, struct passwd *user_pw,
902 command); 917 command);
903 goto out; 918 goto out;
904 } 919 }
920 snprintf(uidstr, sizeof(uidstr), "%llu",
921 (unsigned long long)user_pw->pw_uid);
905 for (i = 1; i < ac; i++) { 922 for (i = 1; i < ac; i++) {
906 tmp = percent_expand(av[i], 923 tmp = percent_expand(av[i],
924 "U", uidstr,
907 "u", user_pw->pw_name, 925 "u", user_pw->pw_name,
908 "h", user_pw->pw_dir, 926 "h", user_pw->pw_dir,
909 "t", sshkey_ssh_name(key), 927 "t", sshkey_ssh_name(key),
diff --git a/auth2.c b/auth2.c
index e0034229a..ab8795895 100644
--- a/auth2.c
+++ b/auth2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2.c,v 1.145 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: auth2.c,v 1.149 2018/07/11 18:53:29 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -41,28 +41,30 @@
41#include "ssh2.h" 41#include "ssh2.h"
42#include "packet.h" 42#include "packet.h"
43#include "log.h" 43#include "log.h"
44#include "buffer.h" 44#include "sshbuf.h"
45#include "misc.h" 45#include "misc.h"
46#include "servconf.h" 46#include "servconf.h"
47#include "compat.h" 47#include "compat.h"
48#include "key.h" 48#include "sshkey.h"
49#include "hostfile.h" 49#include "hostfile.h"
50#include "auth.h" 50#include "auth.h"
51#include "dispatch.h" 51#include "dispatch.h"
52#include "pathnames.h" 52#include "pathnames.h"
53#include "buffer.h" 53#include "sshbuf.h"
54#include "ssherr.h"
54 55
55#ifdef GSSAPI 56#ifdef GSSAPI
56#include "ssh-gss.h" 57#include "ssh-gss.h"
57#endif 58#endif
58#include "monitor_wrap.h" 59#include "monitor_wrap.h"
59#include "ssherr.h" 60#include "ssherr.h"
61#include "digest.h"
60 62
61/* import */ 63/* import */
62extern ServerOptions options; 64extern ServerOptions options;
63extern u_char *session_id2; 65extern u_char *session_id2;
64extern u_int session_id2_len; 66extern u_int session_id2_len;
65extern Buffer loginmsg; 67extern struct sshbuf *loginmsg;
66 68
67/* methods */ 69/* methods */
68 70
@@ -210,6 +212,43 @@ input_service_request(int type, u_int32_t seq, struct ssh *ssh)
210 return 0; 212 return 0;
211} 213}
212 214
215#define MIN_FAIL_DELAY_SECONDS 0.005
216static double
217user_specific_delay(const char *user)
218{
219 char b[512];
220 size_t len = ssh_digest_bytes(SSH_DIGEST_SHA512);
221 u_char *hash = xmalloc(len);
222 double delay;
223
224 (void)snprintf(b, sizeof b, "%llu%s",
225 (unsigned long long)options.timing_secret, user);
226 if (ssh_digest_memory(SSH_DIGEST_SHA512, b, strlen(b), hash, len) != 0)
227 fatal("%s: ssh_digest_memory", __func__);
228 /* 0-4.2 ms of delay */
229 delay = (double)PEEK_U32(hash) / 1000 / 1000 / 1000 / 1000;
230 freezero(hash, len);
231 debug3("%s: user specific delay %0.3lfms", __func__, delay/1000);
232 return MIN_FAIL_DELAY_SECONDS + delay;
233}
234
235static void
236ensure_minimum_time_since(double start, double seconds)
237{
238 struct timespec ts;
239 double elapsed = monotime_double() - start, req = seconds, remain;
240
241 /* if we've already passed the requested time, scale up */
242 while ((remain = seconds - elapsed) < 0.0)
243 seconds *= 2;
244
245 ts.tv_sec = remain;
246 ts.tv_nsec = (remain - ts.tv_sec) * 1000000000;
247 debug3("%s: elapsed %0.3lfms, delaying %0.3lfms (requested %0.3lfms)",
248 __func__, elapsed*1000, remain*1000, req*1000);
249 nanosleep(&ts, NULL);
250}
251
213/*ARGSUSED*/ 252/*ARGSUSED*/
214static int 253static int
215input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) 254input_userauth_request(int type, u_int32_t seq, struct ssh *ssh)
@@ -218,6 +257,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh)
218 Authmethod *m = NULL; 257 Authmethod *m = NULL;
219 char *user, *service, *method, *style = NULL; 258 char *user, *service, *method, *style = NULL;
220 int authenticated = 0; 259 int authenticated = 0;
260 double tstart = monotime_double();
221 261
222 if (authctxt == NULL) 262 if (authctxt == NULL)
223 fatal("input_userauth_request: no authctxt"); 263 fatal("input_userauth_request: no authctxt");
@@ -286,6 +326,9 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh)
286 debug2("input_userauth_request: try method %s", method); 326 debug2("input_userauth_request: try method %s", method);
287 authenticated = m->userauth(ssh); 327 authenticated = m->userauth(ssh);
288 } 328 }
329 if (!authctxt->authenticated)
330 ensure_minimum_time_since(tstart,
331 user_specific_delay(authctxt->user));
289 userauth_finish(ssh, authenticated, method, NULL); 332 userauth_finish(ssh, authenticated, method, NULL);
290 333
291 free(service); 334 free(service);
@@ -336,11 +379,15 @@ userauth_finish(struct ssh *ssh, int authenticated, const char *method,
336 379
337#ifdef USE_PAM 380#ifdef USE_PAM
338 if (options.use_pam && authenticated) { 381 if (options.use_pam && authenticated) {
382 int r;
383
339 if (!PRIVSEP(do_pam_account())) { 384 if (!PRIVSEP(do_pam_account())) {
340 /* if PAM returned a message, send it to the user */ 385 /* if PAM returned a message, send it to the user */
341 if (buffer_len(&loginmsg) > 0) { 386 if (sshbuf_len(loginmsg) > 0) {
342 buffer_append(&loginmsg, "\0", 1); 387 if ((r = sshbuf_put(loginmsg, "\0", 1)) != 0)
343 userauth_send_banner(buffer_ptr(&loginmsg)); 388 fatal("%s: buffer error: %s",
389 __func__, ssh_err(r));
390 userauth_send_banner(sshbuf_ptr(loginmsg));
344 packet_write_wait(); 391 packet_write_wait();
345 } 392 }
346 fatal("Access denied for user %s by PAM account " 393 fatal("Access denied for user %s by PAM account "
@@ -409,11 +456,12 @@ auth2_method_allowed(Authctxt *authctxt, const char *method,
409static char * 456static char *
410authmethods_get(Authctxt *authctxt) 457authmethods_get(Authctxt *authctxt)
411{ 458{
412 Buffer b; 459 struct sshbuf *b;
413 char *list; 460 char *list;
414 u_int i; 461 int i, r;
415 462
416 buffer_init(&b); 463 if ((b = sshbuf_new()) == NULL)
464 fatal("%s: sshbuf_new failed", __func__);
417 for (i = 0; authmethods[i] != NULL; i++) { 465 for (i = 0; authmethods[i] != NULL; i++) {
418 if (strcmp(authmethods[i]->name, "none") == 0) 466 if (strcmp(authmethods[i]->name, "none") == 0)
419 continue; 467 continue;
@@ -423,14 +471,13 @@ authmethods_get(Authctxt *authctxt)
423 if (!auth2_method_allowed(authctxt, authmethods[i]->name, 471 if (!auth2_method_allowed(authctxt, authmethods[i]->name,
424 NULL)) 472 NULL))
425 continue; 473 continue;
426 if (buffer_len(&b) > 0) 474 if ((r = sshbuf_putf(b, "%s%s", sshbuf_len(b) ? "," : "",
427 buffer_append(&b, ",", 1); 475 authmethods[i]->name)) != 0)
428 buffer_append(&b, authmethods[i]->name, 476 fatal("%s: buffer error: %s", __func__, ssh_err(r));
429 strlen(authmethods[i]->name));
430 } 477 }
431 if ((list = sshbuf_dup_string(&b)) == NULL) 478 if ((list = sshbuf_dup_string(b)) == NULL)
432 fatal("%s: sshbuf_dup_string failed", __func__); 479 fatal("%s: sshbuf_dup_string failed", __func__);
433 buffer_free(&b); 480 sshbuf_free(b);
434 return list; 481 return list;
435} 482}
436 483
diff --git a/authfd.c b/authfd.c
index 1eff7ba94..ecdd869ab 100644
--- a/authfd.c
+++ b/authfd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfd.c,v 1.108 2018/02/23 15:58:37 markus Exp $ */ 1/* $OpenBSD: authfd.c,v 1.111 2018/07/09 21:59:10 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -133,7 +133,7 @@ ssh_request_reply(int sock, struct sshbuf *request, struct sshbuf *reply)
133 133
134 /* Send the length and then the packet to the agent. */ 134 /* Send the length and then the packet to the agent. */
135 if (atomicio(vwrite, sock, buf, 4) != 4 || 135 if (atomicio(vwrite, sock, buf, 4) != 4 ||
136 atomicio(vwrite, sock, (u_char *)sshbuf_ptr(request), 136 atomicio(vwrite, sock, sshbuf_mutable_ptr(request),
137 sshbuf_len(request)) != sshbuf_len(request)) 137 sshbuf_len(request)) != sshbuf_len(request))
138 return SSH_ERR_AGENT_COMMUNICATION; 138 return SSH_ERR_AGENT_COMMUNICATION;
139 /* 139 /*
@@ -323,7 +323,7 @@ ssh_free_identitylist(struct ssh_identitylist *idl)
323 */ 323 */
324 324
325 325
326/* encode signature algoritm in flag bits, so we can keep the msg format */ 326/* encode signature algorithm in flag bits, so we can keep the msg format */
327static u_int 327static u_int
328agent_encode_alg(const struct sshkey *key, const char *alg) 328agent_encode_alg(const struct sshkey *key, const char *alg)
329{ 329{
@@ -343,8 +343,8 @@ ssh_agent_sign(int sock, const struct sshkey *key,
343 const u_char *data, size_t datalen, const char *alg, u_int compat) 343 const u_char *data, size_t datalen, const char *alg, u_int compat)
344{ 344{
345 struct sshbuf *msg; 345 struct sshbuf *msg;
346 u_char *blob = NULL, type; 346 u_char *sig = NULL, type = 0;
347 size_t blen = 0, len = 0; 347 size_t len = 0;
348 u_int flags = 0; 348 u_int flags = 0;
349 int r = SSH_ERR_INTERNAL_ERROR; 349 int r = SSH_ERR_INTERNAL_ERROR;
350 350
@@ -355,11 +355,9 @@ ssh_agent_sign(int sock, const struct sshkey *key,
355 return SSH_ERR_INVALID_ARGUMENT; 355 return SSH_ERR_INVALID_ARGUMENT;
356 if ((msg = sshbuf_new()) == NULL) 356 if ((msg = sshbuf_new()) == NULL)
357 return SSH_ERR_ALLOC_FAIL; 357 return SSH_ERR_ALLOC_FAIL;
358 if ((r = sshkey_to_blob(key, &blob, &blen)) != 0)
359 goto out;
360 flags |= agent_encode_alg(key, alg); 358 flags |= agent_encode_alg(key, alg);
361 if ((r = sshbuf_put_u8(msg, SSH2_AGENTC_SIGN_REQUEST)) != 0 || 359 if ((r = sshbuf_put_u8(msg, SSH2_AGENTC_SIGN_REQUEST)) != 0 ||
362 (r = sshbuf_put_string(msg, blob, blen)) != 0 || 360 (r = sshkey_puts(key, msg)) != 0 ||
363 (r = sshbuf_put_string(msg, data, datalen)) != 0 || 361 (r = sshbuf_put_string(msg, data, datalen)) != 0 ||
364 (r = sshbuf_put_u32(msg, flags)) != 0) 362 (r = sshbuf_put_u32(msg, flags)) != 0)
365 goto out; 363 goto out;
@@ -374,15 +372,19 @@ ssh_agent_sign(int sock, const struct sshkey *key,
374 r = SSH_ERR_INVALID_FORMAT; 372 r = SSH_ERR_INVALID_FORMAT;
375 goto out; 373 goto out;
376 } 374 }
377 if ((r = sshbuf_get_string(msg, sigp, &len)) != 0) 375 if ((r = sshbuf_get_string(msg, &sig, &len)) != 0)
376 goto out;
377 /* Check what we actually got back from the agent. */
378 if ((r = sshkey_check_sigtype(sig, len, alg)) != 0)
378 goto out; 379 goto out;
380 /* success */
381 *sigp = sig;
379 *lenp = len; 382 *lenp = len;
383 sig = NULL;
384 len = 0;
380 r = 0; 385 r = 0;
381 out: 386 out:
382 if (blob != NULL) { 387 freezero(sig, len);
383 explicit_bzero(blob, blen);
384 free(blob);
385 }
386 sshbuf_free(msg); 388 sshbuf_free(msg);
387 return r; 389 return r;
388} 390}
diff --git a/authfd.h b/authfd.h
index ab954ffc0..a032fd542 100644
--- a/authfd.h
+++ b/authfd.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfd.h,v 1.43 2018/02/23 15:58:37 markus Exp $ */ 1/* $OpenBSD: authfd.h,v 1.44 2018/07/12 04:35:25 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -36,8 +36,6 @@ int ssh_update_card(int sock, int add, const char *reader_id,
36 const char *pin, u_int life, u_int confirm); 36 const char *pin, u_int life, u_int confirm);
37int ssh_remove_all_identities(int sock, int version); 37int ssh_remove_all_identities(int sock, int version);
38 38
39int ssh_decrypt_challenge(int sock, struct sshkey* key, BIGNUM *challenge,
40 u_char session_id[16], u_char response[16]);
41int ssh_agent_sign(int sock, const struct sshkey *key, 39int ssh_agent_sign(int sock, const struct sshkey *key,
42 u_char **sigp, size_t *lenp, 40 u_char **sigp, size_t *lenp,
43 const u_char *data, size_t datalen, const char *alg, u_int compat); 41 const u_char *data, size_t datalen, const char *alg, u_int compat);
diff --git a/authfile.c b/authfile.c
index 57dcd808c..be4a57736 100644
--- a/authfile.c
+++ b/authfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfile.c,v 1.128 2018/02/23 15:58:37 markus Exp $ */ 1/* $OpenBSD: authfile.c,v 1.130 2018/07/09 21:59:10 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved.
4 * 4 *
@@ -59,7 +59,7 @@ sshkey_save_private_blob(struct sshbuf *keybuf, const char *filename)
59 59
60 if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0) 60 if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
61 return SSH_ERR_SYSTEM_ERROR; 61 return SSH_ERR_SYSTEM_ERROR;
62 if (atomicio(vwrite, fd, (u_char *)sshbuf_ptr(keybuf), 62 if (atomicio(vwrite, fd, sshbuf_mutable_ptr(keybuf),
63 sshbuf_len(keybuf)) != sshbuf_len(keybuf)) { 63 sshbuf_len(keybuf)) != sshbuf_len(keybuf)) {
64 oerrno = errno; 64 oerrno = errno;
65 close(fd); 65 close(fd);
@@ -265,17 +265,15 @@ static int
265sshkey_try_load_public(struct sshkey *k, const char *filename, char **commentp) 265sshkey_try_load_public(struct sshkey *k, const char *filename, char **commentp)
266{ 266{
267 FILE *f; 267 FILE *f;
268 char line[SSH_MAX_PUBKEY_BYTES]; 268 char *line = NULL, *cp;
269 char *cp; 269 size_t linesize = 0;
270 u_long linenum = 0;
271 int r; 270 int r;
272 271
273 if (commentp != NULL) 272 if (commentp != NULL)
274 *commentp = NULL; 273 *commentp = NULL;
275 if ((f = fopen(filename, "r")) == NULL) 274 if ((f = fopen(filename, "r")) == NULL)
276 return SSH_ERR_SYSTEM_ERROR; 275 return SSH_ERR_SYSTEM_ERROR;
277 while (read_keyfile_line(f, filename, line, sizeof(line), 276 while (getline(&line, &linesize, f) != -1) {
278 &linenum) != -1) {
279 cp = line; 277 cp = line;
280 switch (*cp) { 278 switch (*cp) {
281 case '#': 279 case '#':
@@ -299,11 +297,13 @@ sshkey_try_load_public(struct sshkey *k, const char *filename, char **commentp)
299 if (*commentp == NULL) 297 if (*commentp == NULL)
300 r = SSH_ERR_ALLOC_FAIL; 298 r = SSH_ERR_ALLOC_FAIL;
301 } 299 }
300 free(line);
302 fclose(f); 301 fclose(f);
303 return r; 302 return r;
304 } 303 }
305 } 304 }
306 } 305 }
306 free(line);
307 fclose(f); 307 fclose(f);
308 return SSH_ERR_INVALID_FORMAT; 308 return SSH_ERR_INVALID_FORMAT;
309} 309}
@@ -447,19 +447,18 @@ sshkey_in_file(struct sshkey *key, const char *filename, int strict_type,
447 int check_ca) 447 int check_ca)
448{ 448{
449 FILE *f; 449 FILE *f;
450 char line[SSH_MAX_PUBKEY_BYTES]; 450 char *line = NULL, *cp;
451 char *cp; 451 size_t linesize = 0;
452 u_long linenum = 0;
453 int r = 0; 452 int r = 0;
454 struct sshkey *pub = NULL; 453 struct sshkey *pub = NULL;
454
455 int (*sshkey_compare)(const struct sshkey *, const struct sshkey *) = 455 int (*sshkey_compare)(const struct sshkey *, const struct sshkey *) =
456 strict_type ? sshkey_equal : sshkey_equal_public; 456 strict_type ? sshkey_equal : sshkey_equal_public;
457 457
458 if ((f = fopen(filename, "r")) == NULL) 458 if ((f = fopen(filename, "r")) == NULL)
459 return SSH_ERR_SYSTEM_ERROR; 459 return SSH_ERR_SYSTEM_ERROR;
460 460
461 while (read_keyfile_line(f, filename, line, sizeof(line), 461 while (getline(&line, &linesize, f) != -1) {
462 &linenum) != -1) {
463 cp = line; 462 cp = line;
464 463
465 /* Skip leading whitespace. */ 464 /* Skip leading whitespace. */
@@ -491,6 +490,7 @@ sshkey_in_file(struct sshkey *key, const char *filename, int strict_type,
491 } 490 }
492 r = SSH_ERR_KEY_NOT_FOUND; 491 r = SSH_ERR_KEY_NOT_FOUND;
493 out: 492 out:
493 free(line);
494 sshkey_free(pub); 494 sshkey_free(pub);
495 fclose(f); 495 fclose(f);
496 return r; 496 return r;
diff --git a/bufaux.c b/bufaux.c
deleted file mode 100644
index 3976896a9..000000000
--- a/bufaux.c
+++ /dev/null
@@ -1,259 +0,0 @@
1/* $OpenBSD: bufaux.c,v 1.60 2014/04/30 05:29:56 djm Exp $ */
2/*
3 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
19
20#include "includes.h"
21
22#include <sys/types.h>
23
24#include "buffer.h"
25#include "log.h"
26#include "ssherr.h"
27
28int
29buffer_get_short_ret(u_short *v, Buffer *buffer)
30{
31 int ret;
32
33 if ((ret = sshbuf_get_u16(buffer, v)) != 0) {
34 error("%s: %s", __func__, ssh_err(ret));
35 return -1;
36 }
37 return 0;
38}
39
40u_short
41buffer_get_short(Buffer *buffer)
42{
43 u_short ret;
44
45 if (buffer_get_short_ret(&ret, buffer) == -1)
46 fatal("%s: buffer error", __func__);
47
48 return (ret);
49}
50
51int
52buffer_get_int_ret(u_int *v, Buffer *buffer)
53{
54 int ret;
55
56 if ((ret = sshbuf_get_u32(buffer, v)) != 0) {
57 error("%s: %s", __func__, ssh_err(ret));
58 return -1;
59 }
60 return 0;
61}
62
63u_int
64buffer_get_int(Buffer *buffer)
65{
66 u_int ret;
67
68 if (buffer_get_int_ret(&ret, buffer) == -1)
69 fatal("%s: buffer error", __func__);
70
71 return (ret);
72}
73
74int
75buffer_get_int64_ret(u_int64_t *v, Buffer *buffer)
76{
77 int ret;
78
79 if ((ret = sshbuf_get_u64(buffer, v)) != 0) {
80 error("%s: %s", __func__, ssh_err(ret));
81 return -1;
82 }
83 return 0;
84}
85
86u_int64_t
87buffer_get_int64(Buffer *buffer)
88{
89 u_int64_t ret;
90
91 if (buffer_get_int64_ret(&ret, buffer) == -1)
92 fatal("%s: buffer error", __func__);
93
94 return (ret);
95}
96
97void
98buffer_put_short(Buffer *buffer, u_short value)
99{
100 int ret;
101
102 if ((ret = sshbuf_put_u16(buffer, value)) != 0)
103 fatal("%s: %s", __func__, ssh_err(ret));
104}
105
106void
107buffer_put_int(Buffer *buffer, u_int value)
108{
109 int ret;
110
111 if ((ret = sshbuf_put_u32(buffer, value)) != 0)
112 fatal("%s: %s", __func__, ssh_err(ret));
113}
114
115void
116buffer_put_int64(Buffer *buffer, u_int64_t value)
117{
118 int ret;
119
120 if ((ret = sshbuf_put_u64(buffer, value)) != 0)
121 fatal("%s: %s", __func__, ssh_err(ret));
122}
123
124void *
125buffer_get_string_ret(Buffer *buffer, u_int *length_ptr)
126{
127 size_t len;
128 int ret;
129 u_char *value;
130
131 if ((ret = sshbuf_get_string(buffer, &value, &len)) != 0) {
132 error("%s: %s", __func__, ssh_err(ret));
133 return NULL;
134 }
135 if (length_ptr != NULL)
136 *length_ptr = len; /* Safe: sshbuf never stores len > 2^31 */
137 return value;
138}
139
140void *
141buffer_get_string(Buffer *buffer, u_int *length_ptr)
142{
143 void *ret;
144
145 if ((ret = buffer_get_string_ret(buffer, length_ptr)) == NULL)
146 fatal("%s: buffer error", __func__);
147 return (ret);
148}
149
150char *
151buffer_get_cstring_ret(Buffer *buffer, u_int *length_ptr)
152{
153 size_t len;
154 int ret;
155 char *value;
156
157 if ((ret = sshbuf_get_cstring(buffer, &value, &len)) != 0) {
158 error("%s: %s", __func__, ssh_err(ret));
159 return NULL;
160 }
161 if (length_ptr != NULL)
162 *length_ptr = len; /* Safe: sshbuf never stores len > 2^31 */
163 return value;
164}
165
166char *
167buffer_get_cstring(Buffer *buffer, u_int *length_ptr)
168{
169 char *ret;
170
171 if ((ret = buffer_get_cstring_ret(buffer, length_ptr)) == NULL)
172 fatal("%s: buffer error", __func__);
173 return ret;
174}
175
176const void *
177buffer_get_string_ptr_ret(Buffer *buffer, u_int *length_ptr)
178{
179 size_t len;
180 int ret;
181 const u_char *value;
182
183 if ((ret = sshbuf_get_string_direct(buffer, &value, &len)) != 0) {
184 error("%s: %s", __func__, ssh_err(ret));
185 return NULL;
186 }
187 if (length_ptr != NULL)
188 *length_ptr = len; /* Safe: sshbuf never stores len > 2^31 */
189 return value;
190}
191
192const void *
193buffer_get_string_ptr(Buffer *buffer, u_int *length_ptr)
194{
195 const void *ret;
196
197 if ((ret = buffer_get_string_ptr_ret(buffer, length_ptr)) == NULL)
198 fatal("%s: buffer error", __func__);
199 return (ret);
200}
201
202void
203buffer_put_string(Buffer *buffer, const void *buf, u_int len)
204{
205 int ret;
206
207 if ((ret = sshbuf_put_string(buffer, buf, len)) != 0)
208 fatal("%s: %s", __func__, ssh_err(ret));
209}
210
211void
212buffer_put_cstring(Buffer *buffer, const char *s)
213{
214 int ret;
215
216 if ((ret = sshbuf_put_cstring(buffer, s)) != 0)
217 fatal("%s: %s", __func__, ssh_err(ret));
218}
219
220int
221buffer_get_char_ret(char *v, Buffer *buffer)
222{
223 int ret;
224
225 if ((ret = sshbuf_get_u8(buffer, (u_char *)v)) != 0) {
226 error("%s: %s", __func__, ssh_err(ret));
227 return -1;
228 }
229 return 0;
230}
231
232int
233buffer_get_char(Buffer *buffer)
234{
235 char ch;
236
237 if (buffer_get_char_ret(&ch, buffer) == -1)
238 fatal("%s: buffer error", __func__);
239 return (u_char) ch;
240}
241
242void
243buffer_put_char(Buffer *buffer, int value)
244{
245 int ret;
246
247 if ((ret = sshbuf_put_u8(buffer, value)) != 0)
248 fatal("%s: %s", __func__, ssh_err(ret));
249}
250
251void
252buffer_put_bignum2_from_string(Buffer *buffer, const u_char *s, u_int l)
253{
254 int ret;
255
256 if ((ret = sshbuf_put_bignum2_bytes(buffer, s, l)) != 0)
257 fatal("%s: %s", __func__, ssh_err(ret));
258}
259
diff --git a/bufbn.c b/bufbn.c
deleted file mode 100644
index 98f9466bc..000000000
--- a/bufbn.c
+++ /dev/null
@@ -1,69 +0,0 @@
1/* $OpenBSD: bufbn.c,v 1.13 2017/04/30 23:23:54 djm Exp $ */
2
3/*
4 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
20
21#include "includes.h"
22
23#ifdef WITH_OPENSSL
24
25#include <sys/types.h>
26
27#include "buffer.h"
28#include "log.h"
29#include "ssherr.h"
30
31int
32buffer_put_bignum2_ret(Buffer *buffer, const BIGNUM *value)
33{
34 int ret;
35
36 if ((ret = sshbuf_put_bignum2(buffer, value)) != 0) {
37 error("%s: %s", __func__, ssh_err(ret));
38 return -1;
39 }
40 return 0;
41}
42
43void
44buffer_put_bignum2(Buffer *buffer, const BIGNUM *value)
45{
46 if (buffer_put_bignum2_ret(buffer, value) == -1)
47 fatal("%s: buffer error", __func__);
48}
49
50int
51buffer_get_bignum2_ret(Buffer *buffer, BIGNUM *value)
52{
53 int ret;
54
55 if ((ret = sshbuf_get_bignum2(buffer, value)) != 0) {
56 error("%s: %s", __func__, ssh_err(ret));
57 return -1;
58 }
59 return 0;
60}
61
62void
63buffer_get_bignum2(Buffer *buffer, BIGNUM *value)
64{
65 if (buffer_get_bignum2_ret(buffer, value) == -1)
66 fatal("%s: buffer error", __func__);
67}
68
69#endif /* WITH_OPENSSL */
diff --git a/bufec.c b/bufec.c
deleted file mode 100644
index 749ce9d4c..000000000
--- a/bufec.c
+++ /dev/null
@@ -1,74 +0,0 @@
1/* $OpenBSD: bufec.c,v 1.4 2014/04/30 05:29:56 djm Exp $ */
2
3/*
4 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
20
21#include "includes.h"
22
23#include <sys/types.h>
24
25#include "buffer.h"
26#include "log.h"
27#include "ssherr.h"
28
29#ifdef OPENSSL_HAS_ECC
30
31int
32buffer_put_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve,
33 const EC_POINT *point)
34{
35 int ret;
36
37 if ((ret = sshbuf_put_ec(buffer, point, curve)) != 0) {
38 error("%s: %s", __func__, ssh_err(ret));
39 return -1;
40 }
41 return 0;
42}
43
44void
45buffer_put_ecpoint(Buffer *buffer, const EC_GROUP *curve,
46 const EC_POINT *point)
47{
48 if (buffer_put_ecpoint_ret(buffer, curve, point) == -1)
49 fatal("%s: buffer error", __func__);
50}
51
52int
53buffer_get_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve,
54 EC_POINT *point)
55{
56 int ret;
57
58 if ((ret = sshbuf_get_ec(buffer, point, curve)) != 0) {
59 error("%s: %s", __func__, ssh_err(ret));
60 return -1;
61 }
62 return 0;
63}
64
65void
66buffer_get_ecpoint(Buffer *buffer, const EC_GROUP *curve,
67 EC_POINT *point)
68{
69 if (buffer_get_ecpoint_ret(buffer, curve, point) == -1)
70 fatal("%s: buffer error", __func__);
71}
72
73#endif /* OPENSSL_HAS_ECC */
74
diff --git a/buffer.c b/buffer.c
deleted file mode 100644
index c5f708ab2..000000000
--- a/buffer.c
+++ /dev/null
@@ -1,118 +0,0 @@
1/* $OpenBSD: buffer.c,v 1.36 2014/04/30 05:29:56 djm Exp $ */
2
3/*
4 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
20
21#include "includes.h"
22
23#include <sys/types.h>
24
25#include "buffer.h"
26#include "log.h"
27#include "ssherr.h"
28
29void
30buffer_append(Buffer *buffer, const void *data, u_int len)
31{
32 int ret;
33
34 if ((ret = sshbuf_put(buffer, data, len)) != 0)
35 fatal("%s: %s", __func__, ssh_err(ret));
36}
37
38void *
39buffer_append_space(Buffer *buffer, u_int len)
40{
41 int ret;
42 u_char *p;
43
44 if ((ret = sshbuf_reserve(buffer, len, &p)) != 0)
45 fatal("%s: %s", __func__, ssh_err(ret));
46 return p;
47}
48
49int
50buffer_check_alloc(Buffer *buffer, u_int len)
51{
52 int ret = sshbuf_check_reserve(buffer, len);
53
54 if (ret == 0)
55 return 1;
56 if (ret == SSH_ERR_NO_BUFFER_SPACE)
57 return 0;
58 fatal("%s: %s", __func__, ssh_err(ret));
59}
60
61int
62buffer_get_ret(Buffer *buffer, void *buf, u_int len)
63{
64 int ret;
65
66 if ((ret = sshbuf_get(buffer, buf, len)) != 0) {
67 error("%s: %s", __func__, ssh_err(ret));
68 return -1;
69 }
70 return 0;
71}
72
73void
74buffer_get(Buffer *buffer, void *buf, u_int len)
75{
76 if (buffer_get_ret(buffer, buf, len) == -1)
77 fatal("%s: buffer error", __func__);
78}
79
80int
81buffer_consume_ret(Buffer *buffer, u_int bytes)
82{
83 int ret = sshbuf_consume(buffer, bytes);
84
85 if (ret == 0)
86 return 0;
87 if (ret == SSH_ERR_MESSAGE_INCOMPLETE)
88 return -1;
89 fatal("%s: %s", __func__, ssh_err(ret));
90}
91
92void
93buffer_consume(Buffer *buffer, u_int bytes)
94{
95 if (buffer_consume_ret(buffer, bytes) == -1)
96 fatal("%s: buffer error", __func__);
97}
98
99int
100buffer_consume_end_ret(Buffer *buffer, u_int bytes)
101{
102 int ret = sshbuf_consume_end(buffer, bytes);
103
104 if (ret == 0)
105 return 0;
106 if (ret == SSH_ERR_MESSAGE_INCOMPLETE)
107 return -1;
108 fatal("%s: %s", __func__, ssh_err(ret));
109}
110
111void
112buffer_consume_end(Buffer *buffer, u_int bytes)
113{
114 if (buffer_consume_end_ret(buffer, bytes) == -1)
115 fatal("%s: buffer error", __func__);
116}
117
118
diff --git a/buffer.h b/buffer.h
deleted file mode 100644
index 56174394c..000000000
--- a/buffer.h
+++ /dev/null
@@ -1,95 +0,0 @@
1/* $OpenBSD: buffer.h,v 1.26 2017/04/30 23:23:54 djm Exp $ */
2
3/*
4 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
20
21#ifndef BUFFER_H
22#define BUFFER_H
23
24#include "sshbuf.h"
25
26typedef struct sshbuf Buffer;
27
28#define buffer_init(b) sshbuf_init(b)
29#define buffer_clear(b) sshbuf_reset(b)
30#define buffer_free(b) sshbuf_free(b)
31#define buffer_dump(b) sshbuf_dump(b, stderr)
32
33/* XXX cast is safe: sshbuf never stores more than len 2^31 */
34#define buffer_len(b) ((u_int) sshbuf_len(b))
35#define buffer_ptr(b) sshbuf_mutable_ptr(b)
36
37void buffer_append(Buffer *, const void *, u_int);
38void *buffer_append_space(Buffer *, u_int);
39int buffer_check_alloc(Buffer *, u_int);
40void buffer_get(Buffer *, void *, u_int);
41
42void buffer_consume(Buffer *, u_int);
43void buffer_consume_end(Buffer *, u_int);
44
45
46int buffer_get_ret(Buffer *, void *, u_int);
47int buffer_consume_ret(Buffer *, u_int);
48int buffer_consume_end_ret(Buffer *, u_int);
49
50#include <openssl/objects.h>
51#include <openssl/bn.h>
52void buffer_put_bignum2(Buffer *, const BIGNUM *);
53void buffer_get_bignum2(Buffer *, BIGNUM *);
54void buffer_put_bignum2_from_string(Buffer *, const u_char *, u_int);
55
56u_short buffer_get_short(Buffer *);
57void buffer_put_short(Buffer *, u_short);
58
59u_int buffer_get_int(Buffer *);
60void buffer_put_int(Buffer *, u_int);
61
62u_int64_t buffer_get_int64(Buffer *);
63void buffer_put_int64(Buffer *, u_int64_t);
64
65int buffer_get_char(Buffer *);
66void buffer_put_char(Buffer *, int);
67
68void *buffer_get_string(Buffer *, u_int *);
69const void *buffer_get_string_ptr(Buffer *, u_int *);
70void buffer_put_string(Buffer *, const void *, u_int);
71char *buffer_get_cstring(Buffer *, u_int *);
72void buffer_put_cstring(Buffer *, const char *);
73
74#define buffer_skip_string(b) (void)buffer_get_string_ptr(b, NULL);
75
76int buffer_put_bignum2_ret(Buffer *, const BIGNUM *);
77int buffer_get_bignum2_ret(Buffer *, BIGNUM *);
78int buffer_get_short_ret(u_short *, Buffer *);
79int buffer_get_int_ret(u_int *, Buffer *);
80int buffer_get_int64_ret(u_int64_t *, Buffer *);
81void *buffer_get_string_ret(Buffer *, u_int *);
82char *buffer_get_cstring_ret(Buffer *, u_int *);
83const void *buffer_get_string_ptr_ret(Buffer *, u_int *);
84int buffer_get_char_ret(char *, Buffer *);
85
86#ifdef OPENSSL_HAS_ECC
87#include <openssl/ec.h>
88int buffer_put_ecpoint_ret(Buffer *, const EC_GROUP *, const EC_POINT *);
89void buffer_put_ecpoint(Buffer *, const EC_GROUP *, const EC_POINT *);
90int buffer_get_ecpoint_ret(Buffer *, const EC_GROUP *, EC_POINT *);
91void buffer_get_ecpoint(Buffer *, const EC_GROUP *, EC_POINT *);
92#endif
93
94#endif /* BUFFER_H */
95
diff --git a/channels.c b/channels.c
index bdee1f386..e90f7fea9 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.c,v 1.379 2018/02/05 05:36:49 tb Exp $ */ 1/* $OpenBSD: channels.c,v 1.384 2018/07/27 12:03:17 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -79,9 +79,10 @@
79#include "channels.h" 79#include "channels.h"
80#include "compat.h" 80#include "compat.h"
81#include "canohost.h" 81#include "canohost.h"
82#include "key.h" 82#include "sshkey.h"
83#include "authfd.h" 83#include "authfd.h"
84#include "pathnames.h" 84#include "pathnames.h"
85#include "match.h"
85 86
86/* -- agent forwarding */ 87/* -- agent forwarding */
87#define NUM_SOCKS 10 88#define NUM_SOCKS 10
@@ -97,6 +98,10 @@
97/* Maximum number of fake X11 displays to try. */ 98/* Maximum number of fake X11 displays to try. */
98#define MAX_DISPLAYS 1000 99#define MAX_DISPLAYS 1000
99 100
101/* Per-channel callback for pre/post select() actions */
102typedef void chan_fn(struct ssh *, Channel *c,
103 fd_set *readset, fd_set *writeset);
104
100/* 105/*
101 * Data structure for storing which hosts are permitted for forward requests. 106 * Data structure for storing which hosts are permitted for forward requests.
102 * The local sides of any remote forwards are stored in this array to prevent 107 * The local sides of any remote forwards are stored in this array to prevent
@@ -106,17 +111,40 @@
106/* XXX: streamlocal wants a path instead of host:port */ 111/* XXX: streamlocal wants a path instead of host:port */
107/* Overload host_to_connect; we could just make this match Forward */ 112/* Overload host_to_connect; we could just make this match Forward */
108/* XXX - can we use listen_host instead of listen_path? */ 113/* XXX - can we use listen_host instead of listen_path? */
109typedef struct { 114struct permission {
110 char *host_to_connect; /* Connect to 'host'. */ 115 char *host_to_connect; /* Connect to 'host'. */
111 int port_to_connect; /* Connect to 'port'. */ 116 int port_to_connect; /* Connect to 'port'. */
112 char *listen_host; /* Remote side should listen address. */ 117 char *listen_host; /* Remote side should listen address. */
113 char *listen_path; /* Remote side should listen path. */ 118 char *listen_path; /* Remote side should listen path. */
114 int listen_port; /* Remote side should listen port. */ 119 int listen_port; /* Remote side should listen port. */
115 Channel *downstream; /* Downstream mux*/ 120 Channel *downstream; /* Downstream mux*/
116} ForwardPermission; 121};
117 122
118typedef void chan_fn(struct ssh *, Channel *c, 123/*
119 fd_set *readset, fd_set *writeset); 124 * Stores the forwarding permission state for a single direction (local or
125 * remote).
126 */
127struct permission_set {
128 /*
129 * List of all local permitted host/port pairs to allow for the
130 * user.
131 */
132 u_int num_permitted_user;
133 struct permission *permitted_user;
134
135 /*
136 * List of all permitted host/port pairs to allow for the admin.
137 */
138 u_int num_permitted_admin;
139 struct permission *permitted_admin;
140
141 /*
142 * If this is true, all opens/listens are permitted. This is the
143 * case on the server on which we have to trust the client anyway,
144 * and the user could do anything after logging in.
145 */
146 int all_permitted;
147};
120 148
121/* Master structure for channels state */ 149/* Master structure for channels state */
122struct ssh_channels { 150struct ssh_channels {
@@ -149,31 +177,8 @@ struct ssh_channels {
149 chan_fn **channel_post; 177 chan_fn **channel_post;
150 178
151 /* -- tcp forwarding */ 179 /* -- tcp forwarding */
152 180 struct permission_set local_perms;
153 /* List of all permitted host/port pairs to connect by the user. */ 181 struct permission_set remote_perms;
154 ForwardPermission *permitted_opens;
155
156 /* List of all permitted host/port pairs to connect by the admin. */
157 ForwardPermission *permitted_adm_opens;
158
159 /*
160 * Number of permitted host/port pairs in the array permitted by
161 * the user.
162 */
163 u_int num_permitted_opens;
164
165 /*
166 * Number of permitted host/port pair in the array permitted by
167 * the admin.
168 */
169 u_int num_adm_permitted_opens;
170
171 /*
172 * If this is true, all opens are permitted. This is the case on
173 * the server on which we have to trust the client anyway, and the
174 * user could do anything after logging in anyway.
175 */
176 int all_opens_permitted;
177 182
178 /* -- X11 forwarding */ 183 /* -- X11 forwarding */
179 184
@@ -448,50 +453,95 @@ channel_close_fds(struct ssh *ssh, Channel *c)
448} 453}
449 454
450static void 455static void
451fwd_perm_clear(ForwardPermission *fp) 456fwd_perm_clear(struct permission *perm)
452{ 457{
453 free(fp->host_to_connect); 458 free(perm->host_to_connect);
454 free(fp->listen_host); 459 free(perm->listen_host);
455 free(fp->listen_path); 460 free(perm->listen_path);
456 bzero(fp, sizeof(*fp)); 461 bzero(perm, sizeof(*perm));
457} 462}
458 463
459enum { FWDPERM_USER, FWDPERM_ADMIN }; 464/* Returns an printable name for the specified forwarding permission list */
465static const char *
466fwd_ident(int who, int where)
467{
468 if (who == FORWARD_ADM) {
469 if (where == FORWARD_LOCAL)
470 return "admin local";
471 else if (where == FORWARD_REMOTE)
472 return "admin remote";
473 } else if (who == FORWARD_USER) {
474 if (where == FORWARD_LOCAL)
475 return "user local";
476 else if (where == FORWARD_REMOTE)
477 return "user remote";
478 }
479 fatal("Unknown forward permission list %d/%d", who, where);
480}
460 481
461static int 482/* Returns the forwarding permission list for the specified direction */
462fwd_perm_list_add(struct ssh *ssh, int which, 483static struct permission_set *
463 const char *host_to_connect, int port_to_connect, 484permission_set_get(struct ssh *ssh, int where)
464 const char *listen_host, const char *listen_path, int listen_port,
465 Channel *downstream)
466{ 485{
467 ForwardPermission **fpl; 486 struct ssh_channels *sc = ssh->chanctxt;
468 u_int n, *nfpl;
469 487
470 switch (which) { 488 switch (where) {
471 case FWDPERM_USER: 489 case FORWARD_LOCAL:
472 fpl = &ssh->chanctxt->permitted_opens; 490 return &sc->local_perms;
473 nfpl = &ssh->chanctxt->num_permitted_opens;
474 break; 491 break;
475 case FWDPERM_ADMIN: 492 case FORWARD_REMOTE:
476 fpl = &ssh->chanctxt->permitted_adm_opens; 493 return &sc->remote_perms;
477 nfpl = &ssh->chanctxt->num_adm_permitted_opens;
478 break; 494 break;
479 default: 495 default:
480 fatal("%s: invalid list %d", __func__, which); 496 fatal("%s: invalid forwarding direction %d", __func__, where);
481 } 497 }
498}
482 499
483 if (*nfpl >= INT_MAX) 500/* Reutrns pointers to the specified forwarding list and its element count */
484 fatal("%s: overflow", __func__); 501static void
502permission_set_get_array(struct ssh *ssh, int who, int where,
503 struct permission ***permpp, u_int **npermpp)
504{
505 struct permission_set *pset = permission_set_get(ssh, where);
485 506
486 *fpl = xrecallocarray(*fpl, *nfpl, *nfpl + 1, sizeof(**fpl)); 507 switch (who) {
487 n = (*nfpl)++; 508 case FORWARD_USER:
509 *permpp = &pset->permitted_user;
510 *npermpp = &pset->num_permitted_user;
511 break;
512 case FORWARD_ADM:
513 *permpp = &pset->permitted_admin;
514 *npermpp = &pset->num_permitted_admin;
515 break;
516 default:
517 fatal("%s: invalid forwarding client %d", __func__, who);
518 }
519}
520
521/* Adds an entry to the spcified forwarding list */
522static int
523permission_set_add(struct ssh *ssh, int who, int where,
524 const char *host_to_connect, int port_to_connect,
525 const char *listen_host, const char *listen_path, int listen_port,
526 Channel *downstream)
527{
528 struct permission **permp;
529 u_int n, *npermp;
530
531 permission_set_get_array(ssh, who, where, &permp, &npermp);
532
533 if (*npermp >= INT_MAX)
534 fatal("%s: %s overflow", __func__, fwd_ident(who, where));
535
536 *permp = xrecallocarray(*permp, *npermp, *npermp + 1, sizeof(**permp));
537 n = (*npermp)++;
488#define MAYBE_DUP(s) ((s == NULL) ? NULL : xstrdup(s)) 538#define MAYBE_DUP(s) ((s == NULL) ? NULL : xstrdup(s))
489 (*fpl)[n].host_to_connect = MAYBE_DUP(host_to_connect); 539 (*permp)[n].host_to_connect = MAYBE_DUP(host_to_connect);
490 (*fpl)[n].port_to_connect = port_to_connect; 540 (*permp)[n].port_to_connect = port_to_connect;
491 (*fpl)[n].listen_host = MAYBE_DUP(listen_host); 541 (*permp)[n].listen_host = MAYBE_DUP(listen_host);
492 (*fpl)[n].listen_path = MAYBE_DUP(listen_path); 542 (*permp)[n].listen_path = MAYBE_DUP(listen_path);
493 (*fpl)[n].listen_port = listen_port; 543 (*permp)[n].listen_port = listen_port;
494 (*fpl)[n].downstream = downstream; 544 (*permp)[n].downstream = downstream;
495#undef MAYBE_DUP 545#undef MAYBE_DUP
496 return (int)n; 546 return (int)n;
497} 547}
@@ -500,30 +550,31 @@ static void
500mux_remove_remote_forwardings(struct ssh *ssh, Channel *c) 550mux_remove_remote_forwardings(struct ssh *ssh, Channel *c)
501{ 551{
502 struct ssh_channels *sc = ssh->chanctxt; 552 struct ssh_channels *sc = ssh->chanctxt;
503 ForwardPermission *fp; 553 struct permission_set *pset = &sc->local_perms;
554 struct permission *perm;
504 int r; 555 int r;
505 u_int i; 556 u_int i;
506 557
507 for (i = 0; i < sc->num_permitted_opens; i++) { 558 for (i = 0; i < pset->num_permitted_user; i++) {
508 fp = &sc->permitted_opens[i]; 559 perm = &pset->permitted_user[i];
509 if (fp->downstream != c) 560 if (perm->downstream != c)
510 continue; 561 continue;
511 562
512 /* cancel on the server, since mux client is gone */ 563 /* cancel on the server, since mux client is gone */
513 debug("channel %d: cleanup remote forward for %s:%u", 564 debug("channel %d: cleanup remote forward for %s:%u",
514 c->self, fp->listen_host, fp->listen_port); 565 c->self, perm->listen_host, perm->listen_port);
515 if ((r = sshpkt_start(ssh, SSH2_MSG_GLOBAL_REQUEST)) != 0 || 566 if ((r = sshpkt_start(ssh, SSH2_MSG_GLOBAL_REQUEST)) != 0 ||
516 (r = sshpkt_put_cstring(ssh, 567 (r = sshpkt_put_cstring(ssh,
517 "cancel-tcpip-forward")) != 0 || 568 "cancel-tcpip-forward")) != 0 ||
518 (r = sshpkt_put_u8(ssh, 0)) != 0 || 569 (r = sshpkt_put_u8(ssh, 0)) != 0 ||
519 (r = sshpkt_put_cstring(ssh, 570 (r = sshpkt_put_cstring(ssh,
520 channel_rfwd_bind_host(fp->listen_host))) != 0 || 571 channel_rfwd_bind_host(perm->listen_host))) != 0 ||
521 (r = sshpkt_put_u32(ssh, fp->listen_port)) != 0 || 572 (r = sshpkt_put_u32(ssh, perm->listen_port)) != 0 ||
522 (r = sshpkt_send(ssh)) != 0) { 573 (r = sshpkt_send(ssh)) != 0) {
523 fatal("%s: channel %i: %s", __func__, 574 fatal("%s: channel %i: %s", __func__,
524 c->self, ssh_err(r)); 575 c->self, ssh_err(r));
525 } 576 }
526 fwd_perm_clear(fp); /* unregister */ 577 fwd_perm_clear(perm); /* unregister */
527 } 578 }
528} 579}
529 580
@@ -557,9 +608,11 @@ channel_free(struct ssh *ssh, Channel *c)
557 if (c->type == SSH_CHANNEL_MUX_CLIENT) 608 if (c->type == SSH_CHANNEL_MUX_CLIENT)
558 mux_remove_remote_forwardings(ssh, c); 609 mux_remove_remote_forwardings(ssh, c);
559 610
560 s = channel_open_message(ssh); 611 if (log_level_get() >= SYSLOG_LEVEL_DEBUG3) {
561 debug3("channel %d: status: %s", c->self, s); 612 s = channel_open_message(ssh);
562 free(s); 613 debug3("channel %d: status: %s", c->self, s);
614 free(s);
615 }
563 616
564 channel_close_fds(ssh, c); 617 channel_close_fds(ssh, c);
565 sshbuf_free(c->input); 618 sshbuf_free(c->input);
@@ -2599,7 +2652,7 @@ channel_output_poll(struct ssh *ssh)
2599 * SSH_CHANNEL_MUX_PROXY channel and replace the mux clients ID 2652 * SSH_CHANNEL_MUX_PROXY channel and replace the mux clients ID
2600 * with the newly allocated channel ID. 2653 * with the newly allocated channel ID.
2601 * 2) Upstream messages are received by matching SSH_CHANNEL_MUX_PROXY 2654 * 2) Upstream messages are received by matching SSH_CHANNEL_MUX_PROXY
2602 * channels and procesed by channel_proxy_upstream(). The local channel ID 2655 * channels and processed by channel_proxy_upstream(). The local channel ID
2603 * is then translated back to the original mux client ID. 2656 * is then translated back to the original mux client ID.
2604 * 3) In both cases we need to keep track of matching SSH2_MSG_CHANNEL_CLOSE 2657 * 3) In both cases we need to keep track of matching SSH2_MSG_CHANNEL_CLOSE
2605 * messages so we can clean up SSH_CHANNEL_MUX_PROXY channels. 2658 * messages so we can clean up SSH_CHANNEL_MUX_PROXY channels.
@@ -2610,7 +2663,7 @@ channel_output_poll(struct ssh *ssh)
2610 * channel. E.g. client_request_forwarded_tcpip() needs to figure 2663 * channel. E.g. client_request_forwarded_tcpip() needs to figure
2611 * out whether the request is addressed to the local client or a 2664 * out whether the request is addressed to the local client or a
2612 * specific downstream client based on the listen-address/port. 2665 * specific downstream client based on the listen-address/port.
2613 * 6) Agent and X11-Forwarding have a similar problem and are currenly 2666 * 6) Agent and X11-Forwarding have a similar problem and are currently
2614 * not supported as the matching session/channel cannot be identified 2667 * not supported as the matching session/channel cannot be identified
2615 * easily. 2668 * easily.
2616 */ 2669 */
@@ -2729,7 +2782,7 @@ channel_proxy_downstream(struct ssh *ssh, Channel *downstream)
2729 goto out; 2782 goto out;
2730 } 2783 }
2731 /* Record that connection to this host/port is permitted. */ 2784 /* Record that connection to this host/port is permitted. */
2732 fwd_perm_list_add(ssh, FWDPERM_USER, "<mux>", -1, 2785 permission_set_add(ssh, FORWARD_USER, FORWARD_LOCAL, "<mux>", -1,
2733 listen_host, NULL, (int)listen_port, downstream); 2786 listen_host, NULL, (int)listen_port, downstream);
2734 listen_host = NULL; 2787 listen_host = NULL;
2735 break; 2788 break;
@@ -2787,7 +2840,7 @@ channel_proxy_upstream(Channel *c, int type, u_int32_t seq, struct ssh *ssh)
2787 /* 2840 /*
2788 * When receiving packets from the peer we need to check whether we 2841 * When receiving packets from the peer we need to check whether we
2789 * need to forward the packets to the mux client. In this case we 2842 * need to forward the packets to the mux client. In this case we
2790 * restore the orignal channel id and keep track of CLOSE messages, 2843 * restore the original channel id and keep track of CLOSE messages,
2791 * so we can cleanup the channel. 2844 * so we can cleanup the channel.
2792 */ 2845 */
2793 if (c == NULL || c->type != SSH_CHANNEL_MUX_PROXY) 2846 if (c == NULL || c->type != SSH_CHANNEL_MUX_PROXY)
@@ -3637,11 +3690,78 @@ channel_setup_local_fwd_listener(struct ssh *ssh,
3637 } 3690 }
3638} 3691}
3639 3692
3693/* Matches a remote forwarding permission against a requested forwarding */
3694static int
3695remote_open_match(struct permission *allowed_open, struct Forward *fwd)
3696{
3697 int ret;
3698 char *lhost;
3699
3700 /* XXX add ACLs for streamlocal */
3701 if (fwd->listen_path != NULL)
3702 return 1;
3703
3704 if (fwd->listen_host == NULL || allowed_open->listen_host == NULL)
3705 return 0;
3706
3707 if (allowed_open->listen_port != FWD_PERMIT_ANY_PORT &&
3708 allowed_open->listen_port != fwd->listen_port)
3709 return 0;
3710
3711 /* Match hostnames case-insensitively */
3712 lhost = xstrdup(fwd->listen_host);
3713 lowercase(lhost);
3714 ret = match_pattern(lhost, allowed_open->listen_host);
3715 free(lhost);
3716
3717 return ret;
3718}
3719
3720/* Checks whether a requested remote forwarding is permitted */
3721static int
3722check_rfwd_permission(struct ssh *ssh, struct Forward *fwd)
3723{
3724 struct ssh_channels *sc = ssh->chanctxt;
3725 struct permission_set *pset = &sc->remote_perms;
3726 u_int i, permit, permit_adm = 1;
3727 struct permission *perm;
3728
3729 /* XXX apply GatewayPorts override before checking? */
3730
3731 permit = pset->all_permitted;
3732 if (!permit) {
3733 for (i = 0; i < pset->num_permitted_user; i++) {
3734 perm = &pset->permitted_user[i];
3735 if (remote_open_match(perm, fwd)) {
3736 permit = 1;
3737 break;
3738 }
3739 }
3740 }
3741
3742 if (pset->num_permitted_admin > 0) {
3743 permit_adm = 0;
3744 for (i = 0; i < pset->num_permitted_admin; i++) {
3745 perm = &pset->permitted_admin[i];
3746 if (remote_open_match(perm, fwd)) {
3747 permit_adm = 1;
3748 break;
3749 }
3750 }
3751 }
3752
3753 return permit && permit_adm;
3754}
3755
3640/* protocol v2 remote port fwd, used by sshd */ 3756/* protocol v2 remote port fwd, used by sshd */
3641int 3757int
3642channel_setup_remote_fwd_listener(struct ssh *ssh, struct Forward *fwd, 3758channel_setup_remote_fwd_listener(struct ssh *ssh, struct Forward *fwd,
3643 int *allocated_listen_port, struct ForwardOptions *fwd_opts) 3759 int *allocated_listen_port, struct ForwardOptions *fwd_opts)
3644{ 3760{
3761 if (!check_rfwd_permission(ssh, fwd)) {
3762 packet_send_debug("port forwarding refused");
3763 return 0;
3764 }
3645 if (fwd->listen_path != NULL) { 3765 if (fwd->listen_path != NULL) {
3646 return channel_setup_fwd_listener_streamlocal(ssh, 3766 return channel_setup_fwd_listener_streamlocal(ssh,
3647 SSH_CHANNEL_RUNIX_LISTENER, fwd, fwd_opts); 3767 SSH_CHANNEL_RUNIX_LISTENER, fwd, fwd_opts);
@@ -3671,7 +3791,7 @@ channel_rfwd_bind_host(const char *listen_host)
3671 * Initiate forwarding of connections to port "port" on remote host through 3791 * Initiate forwarding of connections to port "port" on remote host through
3672 * the secure channel to host:port from local side. 3792 * the secure channel to host:port from local side.
3673 * Returns handle (index) for updating the dynamic listen port with 3793 * Returns handle (index) for updating the dynamic listen port with
3674 * channel_update_permitted_opens(). 3794 * channel_update_permission().
3675 */ 3795 */
3676int 3796int
3677channel_request_remote_forwarding(struct ssh *ssh, struct Forward *fwd) 3797channel_request_remote_forwarding(struct ssh *ssh, struct Forward *fwd)
@@ -3724,7 +3844,7 @@ channel_request_remote_forwarding(struct ssh *ssh, struct Forward *fwd)
3724 listen_host = xstrdup(fwd->listen_host); 3844 listen_host = xstrdup(fwd->listen_host);
3725 listen_port = fwd->listen_port; 3845 listen_port = fwd->listen_port;
3726 } 3846 }
3727 idx = fwd_perm_list_add(ssh, FWDPERM_USER, 3847 idx = permission_set_add(ssh, FORWARD_USER, FORWARD_LOCAL,
3728 host_to_connect, port_to_connect, 3848 host_to_connect, port_to_connect,
3729 listen_host, listen_path, listen_port, NULL); 3849 listen_host, listen_path, listen_port, NULL);
3730 } 3850 }
@@ -3732,7 +3852,7 @@ channel_request_remote_forwarding(struct ssh *ssh, struct Forward *fwd)
3732} 3852}
3733 3853
3734static int 3854static int
3735open_match(ForwardPermission *allowed_open, const char *requestedhost, 3855open_match(struct permission *allowed_open, const char *requestedhost,
3736 int requestedport) 3856 int requestedport)
3737{ 3857{
3738 if (allowed_open->host_to_connect == NULL) 3858 if (allowed_open->host_to_connect == NULL)
@@ -3753,7 +3873,7 @@ open_match(ForwardPermission *allowed_open, const char *requestedhost,
3753 * and what we've sent to the remote server (channel_rfwd_bind_host) 3873 * and what we've sent to the remote server (channel_rfwd_bind_host)
3754 */ 3874 */
3755static int 3875static int
3756open_listen_match_tcpip(ForwardPermission *allowed_open, 3876open_listen_match_tcpip(struct permission *allowed_open,
3757 const char *requestedhost, u_short requestedport, int translate) 3877 const char *requestedhost, u_short requestedport, int translate)
3758{ 3878{
3759 const char *allowed_host; 3879 const char *allowed_host;
@@ -3768,14 +3888,14 @@ open_listen_match_tcpip(ForwardPermission *allowed_open,
3768 allowed_host = translate ? 3888 allowed_host = translate ?
3769 channel_rfwd_bind_host(allowed_open->listen_host) : 3889 channel_rfwd_bind_host(allowed_open->listen_host) :
3770 allowed_open->listen_host; 3890 allowed_open->listen_host;
3771 if (allowed_host == NULL || 3891 if (allowed_host == NULL || requestedhost == NULL ||
3772 strcmp(allowed_host, requestedhost) != 0) 3892 strcmp(allowed_host, requestedhost) != 0)
3773 return 0; 3893 return 0;
3774 return 1; 3894 return 1;
3775} 3895}
3776 3896
3777static int 3897static int
3778open_listen_match_streamlocal(ForwardPermission *allowed_open, 3898open_listen_match_streamlocal(struct permission *allowed_open,
3779 const char *requestedpath) 3899 const char *requestedpath)
3780{ 3900{
3781 if (allowed_open->host_to_connect == NULL) 3901 if (allowed_open->host_to_connect == NULL)
@@ -3797,17 +3917,18 @@ channel_request_rforward_cancel_tcpip(struct ssh *ssh,
3797 const char *host, u_short port) 3917 const char *host, u_short port)
3798{ 3918{
3799 struct ssh_channels *sc = ssh->chanctxt; 3919 struct ssh_channels *sc = ssh->chanctxt;
3920 struct permission_set *pset = &sc->local_perms;
3800 int r; 3921 int r;
3801 u_int i; 3922 u_int i;
3802 ForwardPermission *fp; 3923 struct permission *perm;
3803 3924
3804 for (i = 0; i < sc->num_permitted_opens; i++) { 3925 for (i = 0; i < pset->num_permitted_user; i++) {
3805 fp = &sc->permitted_opens[i]; 3926 perm = &pset->permitted_user[i];
3806 if (open_listen_match_tcpip(fp, host, port, 0)) 3927 if (open_listen_match_tcpip(perm, host, port, 0))
3807 break; 3928 break;
3808 fp = NULL; 3929 perm = NULL;
3809 } 3930 }
3810 if (fp == NULL) { 3931 if (perm == NULL) {
3811 debug("%s: requested forward not found", __func__); 3932 debug("%s: requested forward not found", __func__);
3812 return -1; 3933 return -1;
3813 } 3934 }
@@ -3819,7 +3940,7 @@ channel_request_rforward_cancel_tcpip(struct ssh *ssh,
3819 (r = sshpkt_send(ssh)) != 0) 3940 (r = sshpkt_send(ssh)) != 0)
3820 fatal("%s: send cancel: %s", __func__, ssh_err(r)); 3941 fatal("%s: send cancel: %s", __func__, ssh_err(r));
3821 3942
3822 fwd_perm_clear(fp); /* unregister */ 3943 fwd_perm_clear(perm); /* unregister */
3823 3944
3824 return 0; 3945 return 0;
3825} 3946}
@@ -3832,17 +3953,18 @@ static int
3832channel_request_rforward_cancel_streamlocal(struct ssh *ssh, const char *path) 3953channel_request_rforward_cancel_streamlocal(struct ssh *ssh, const char *path)
3833{ 3954{
3834 struct ssh_channels *sc = ssh->chanctxt; 3955 struct ssh_channels *sc = ssh->chanctxt;
3956 struct permission_set *pset = &sc->local_perms;
3835 int r; 3957 int r;
3836 u_int i; 3958 u_int i;
3837 ForwardPermission *fp; 3959 struct permission *perm;
3838 3960
3839 for (i = 0; i < sc->num_permitted_opens; i++) { 3961 for (i = 0; i < pset->num_permitted_user; i++) {
3840 fp = &sc->permitted_opens[i]; 3962 perm = &pset->permitted_user[i];
3841 if (open_listen_match_streamlocal(fp, path)) 3963 if (open_listen_match_streamlocal(perm, path))
3842 break; 3964 break;
3843 fp = NULL; 3965 perm = NULL;
3844 } 3966 }
3845 if (fp == NULL) { 3967 if (perm == NULL) {
3846 debug("%s: requested forward not found", __func__); 3968 debug("%s: requested forward not found", __func__);
3847 return -1; 3969 return -1;
3848 } 3970 }
@@ -3854,7 +3976,7 @@ channel_request_rforward_cancel_streamlocal(struct ssh *ssh, const char *path)
3854 (r = sshpkt_send(ssh)) != 0) 3976 (r = sshpkt_send(ssh)) != 0)
3855 fatal("%s: send cancel: %s", __func__, ssh_err(r)); 3977 fatal("%s: send cancel: %s", __func__, ssh_err(r));
3856 3978
3857 fwd_perm_clear(fp); /* unregister */ 3979 fwd_perm_clear(perm); /* unregister */
3858 3980
3859 return 0; 3981 return 0;
3860} 3982}
@@ -3876,25 +3998,64 @@ channel_request_rforward_cancel(struct ssh *ssh, struct Forward *fwd)
3876} 3998}
3877 3999
3878/* 4000/*
3879 * Permits opening to any host/port if permitted_opens[] is empty. This is 4001 * Permits opening to any host/port if permitted_user[] is empty. This is
3880 * usually called by the server, because the user could connect to any port 4002 * usually called by the server, because the user could connect to any port
3881 * anyway, and the server has no way to know but to trust the client anyway. 4003 * anyway, and the server has no way to know but to trust the client anyway.
3882 */ 4004 */
3883void 4005void
3884channel_permit_all_opens(struct ssh *ssh) 4006channel_permit_all(struct ssh *ssh, int where)
3885{ 4007{
3886 if (ssh->chanctxt->num_permitted_opens == 0) 4008 struct permission_set *pset = permission_set_get(ssh, where);
3887 ssh->chanctxt->all_opens_permitted = 1; 4009
4010 if (pset->num_permitted_user == 0)
4011 pset->all_permitted = 1;
3888} 4012}
3889 4013
4014/*
4015 * Permit the specified host/port for forwarding.
4016 */
3890void 4017void
3891channel_add_permitted_opens(struct ssh *ssh, char *host, int port) 4018channel_add_permission(struct ssh *ssh, int who, int where,
4019 char *host, int port)
3892{ 4020{
3893 struct ssh_channels *sc = ssh->chanctxt; 4021 int local = where == FORWARD_LOCAL;
4022 struct permission_set *pset = permission_set_get(ssh, where);
4023
4024 debug("allow %s forwarding to host %s port %d",
4025 fwd_ident(who, where), host, port);
4026 /*
4027 * Remote forwards set listen_host/port, local forwards set
4028 * host/port_to_connect.
4029 */
4030 permission_set_add(ssh, who, where,
4031 local ? host : 0, local ? port : 0,
4032 local ? NULL : host, NULL, local ? 0 : port, NULL);
4033 pset->all_permitted = 0;
4034}
3894 4035
3895 debug("allow port forwarding to host %s port %d", host, port); 4036/*
3896 fwd_perm_list_add(ssh, FWDPERM_USER, host, port, NULL, NULL, 0, NULL); 4037 * Administratively disable forwarding.
3897 sc->all_opens_permitted = 0; 4038 */
4039void
4040channel_disable_admin(struct ssh *ssh, int where)
4041{
4042 channel_clear_permission(ssh, FORWARD_ADM, where);
4043 permission_set_add(ssh, FORWARD_ADM, where,
4044 NULL, 0, NULL, NULL, 0, NULL);
4045}
4046
4047/*
4048 * Clear a list of permitted opens.
4049 */
4050void
4051channel_clear_permission(struct ssh *ssh, int who, int where)
4052{
4053 struct permission **permp;
4054 u_int *npermp;
4055
4056 permission_set_get_array(ssh, who, where, &permp, &npermp);
4057 *permp = xrecallocarray(*permp, *npermp, 0, sizeof(**permp));
4058 *npermp = 0;
3898} 4059}
3899 4060
3900/* 4061/*
@@ -3903,63 +4064,28 @@ channel_add_permitted_opens(struct ssh *ssh, char *host, int port)
3903 * passed then they entry will be invalidated. 4064 * passed then they entry will be invalidated.
3904 */ 4065 */
3905void 4066void
3906channel_update_permitted_opens(struct ssh *ssh, int idx, int newport) 4067channel_update_permission(struct ssh *ssh, int idx, int newport)
3907{ 4068{
3908 struct ssh_channels *sc = ssh->chanctxt; 4069 struct permission_set *pset = &ssh->chanctxt->local_perms;
3909 4070
3910 if (idx < 0 || (u_int)idx >= sc->num_permitted_opens) { 4071 if (idx < 0 || (u_int)idx >= pset->num_permitted_user) {
3911 debug("%s: index out of range: %d num_permitted_opens %d", 4072 debug("%s: index out of range: %d num_permitted_user %d",
3912 __func__, idx, sc->num_permitted_opens); 4073 __func__, idx, pset->num_permitted_user);
3913 return; 4074 return;
3914 } 4075 }
3915 debug("%s allowed port %d for forwarding to host %s port %d", 4076 debug("%s allowed port %d for forwarding to host %s port %d",
3916 newport > 0 ? "Updating" : "Removing", 4077 newport > 0 ? "Updating" : "Removing",
3917 newport, 4078 newport,
3918 sc->permitted_opens[idx].host_to_connect, 4079 pset->permitted_user[idx].host_to_connect,
3919 sc->permitted_opens[idx].port_to_connect); 4080 pset->permitted_user[idx].port_to_connect);
3920 if (newport <= 0) 4081 if (newport <= 0)
3921 fwd_perm_clear(&sc->permitted_opens[idx]); 4082 fwd_perm_clear(&pset->permitted_user[idx]);
3922 else { 4083 else {
3923 sc->permitted_opens[idx].listen_port = 4084 pset->permitted_user[idx].listen_port =
3924 (datafellows & SSH_BUG_DYNAMIC_RPORT) ? 0 : newport; 4085 (datafellows & SSH_BUG_DYNAMIC_RPORT) ? 0 : newport;
3925 } 4086 }
3926} 4087}
3927 4088
3928int
3929channel_add_adm_permitted_opens(struct ssh *ssh, char *host, int port)
3930{
3931 debug("config allows port forwarding to host %s port %d", host, port);
3932 return fwd_perm_list_add(ssh, FWDPERM_ADMIN, host, port,
3933 NULL, NULL, 0, NULL);
3934}
3935
3936void
3937channel_disable_adm_local_opens(struct ssh *ssh)
3938{
3939 channel_clear_adm_permitted_opens(ssh);
3940 fwd_perm_list_add(ssh, FWDPERM_ADMIN, NULL, 0, NULL, NULL, 0, NULL);
3941}
3942
3943void
3944channel_clear_permitted_opens(struct ssh *ssh)
3945{
3946 struct ssh_channels *sc = ssh->chanctxt;
3947
3948 sc->permitted_opens = xrecallocarray(sc->permitted_opens,
3949 sc->num_permitted_opens, 0, sizeof(*sc->permitted_opens));
3950 sc->num_permitted_opens = 0;
3951}
3952
3953void
3954channel_clear_adm_permitted_opens(struct ssh *ssh)
3955{
3956 struct ssh_channels *sc = ssh->chanctxt;
3957
3958 sc->permitted_adm_opens = xrecallocarray(sc->permitted_adm_opens,
3959 sc->num_adm_permitted_opens, 0, sizeof(*sc->permitted_adm_opens));
3960 sc->num_adm_permitted_opens = 0;
3961}
3962
3963/* returns port number, FWD_PERMIT_ANY_PORT or -1 on error */ 4089/* returns port number, FWD_PERMIT_ANY_PORT or -1 on error */
3964int 4090int
3965permitopen_port(const char *p) 4091permitopen_port(const char *p)
@@ -4148,19 +4274,21 @@ channel_connect_by_listen_address(struct ssh *ssh, const char *listen_host,
4148 u_short listen_port, char *ctype, char *rname) 4274 u_short listen_port, char *ctype, char *rname)
4149{ 4275{
4150 struct ssh_channels *sc = ssh->chanctxt; 4276 struct ssh_channels *sc = ssh->chanctxt;
4277 struct permission_set *pset = &sc->local_perms;
4151 u_int i; 4278 u_int i;
4152 ForwardPermission *fp; 4279 struct permission *perm;
4153 4280
4154 for (i = 0; i < sc->num_permitted_opens; i++) { 4281 for (i = 0; i < pset->num_permitted_user; i++) {
4155 fp = &sc->permitted_opens[i]; 4282 perm = &pset->permitted_user[i];
4156 if (open_listen_match_tcpip(fp, listen_host, listen_port, 1)) { 4283 if (open_listen_match_tcpip(perm,
4157 if (fp->downstream) 4284 listen_host, listen_port, 1)) {
4158 return fp->downstream; 4285 if (perm->downstream)
4159 if (fp->port_to_connect == 0) 4286 return perm->downstream;
4287 if (perm->port_to_connect == 0)
4160 return rdynamic_connect_prepare(ssh, 4288 return rdynamic_connect_prepare(ssh,
4161 ctype, rname); 4289 ctype, rname);
4162 return connect_to(ssh, 4290 return connect_to(ssh,
4163 fp->host_to_connect, fp->port_to_connect, 4291 perm->host_to_connect, perm->port_to_connect,
4164 ctype, rname); 4292 ctype, rname);
4165 } 4293 }
4166 } 4294 }
@@ -4174,14 +4302,15 @@ channel_connect_by_listen_path(struct ssh *ssh, const char *path,
4174 char *ctype, char *rname) 4302 char *ctype, char *rname)
4175{ 4303{
4176 struct ssh_channels *sc = ssh->chanctxt; 4304 struct ssh_channels *sc = ssh->chanctxt;
4305 struct permission_set *pset = &sc->local_perms;
4177 u_int i; 4306 u_int i;
4178 ForwardPermission *fp; 4307 struct permission *perm;
4179 4308
4180 for (i = 0; i < sc->num_permitted_opens; i++) { 4309 for (i = 0; i < pset->num_permitted_user; i++) {
4181 fp = &sc->permitted_opens[i]; 4310 perm = &pset->permitted_user[i];
4182 if (open_listen_match_streamlocal(fp, path)) { 4311 if (open_listen_match_streamlocal(perm, path)) {
4183 return connect_to(ssh, 4312 return connect_to(ssh,
4184 fp->host_to_connect, fp->port_to_connect, 4313 perm->host_to_connect, perm->port_to_connect,
4185 ctype, rname); 4314 ctype, rname);
4186 } 4315 }
4187 } 4316 }
@@ -4196,28 +4325,29 @@ channel_connect_to_port(struct ssh *ssh, const char *host, u_short port,
4196 char *ctype, char *rname, int *reason, const char **errmsg) 4325 char *ctype, char *rname, int *reason, const char **errmsg)
4197{ 4326{
4198 struct ssh_channels *sc = ssh->chanctxt; 4327 struct ssh_channels *sc = ssh->chanctxt;
4328 struct permission_set *pset = &sc->local_perms;
4199 struct channel_connect cctx; 4329 struct channel_connect cctx;
4200 Channel *c; 4330 Channel *c;
4201 u_int i, permit, permit_adm = 1; 4331 u_int i, permit, permit_adm = 1;
4202 int sock; 4332 int sock;
4203 ForwardPermission *fp; 4333 struct permission *perm;
4204 4334
4205 permit = sc->all_opens_permitted; 4335 permit = pset->all_permitted;
4206 if (!permit) { 4336 if (!permit) {
4207 for (i = 0; i < sc->num_permitted_opens; i++) { 4337 for (i = 0; i < pset->num_permitted_user; i++) {
4208 fp = &sc->permitted_opens[i]; 4338 perm = &pset->permitted_user[i];
4209 if (open_match(fp, host, port)) { 4339 if (open_match(perm, host, port)) {
4210 permit = 1; 4340 permit = 1;
4211 break; 4341 break;
4212 } 4342 }
4213 } 4343 }
4214 } 4344 }
4215 4345
4216 if (sc->num_adm_permitted_opens > 0) { 4346 if (pset->num_permitted_admin > 0) {
4217 permit_adm = 0; 4347 permit_adm = 0;
4218 for (i = 0; i < sc->num_adm_permitted_opens; i++) { 4348 for (i = 0; i < pset->num_permitted_admin; i++) {
4219 fp = &sc->permitted_adm_opens[i]; 4349 perm = &pset->permitted_admin[i];
4220 if (open_match(fp, host, port)) { 4350 if (open_match(perm, host, port)) {
4221 permit_adm = 1; 4351 permit_adm = 1;
4222 break; 4352 break;
4223 } 4353 }
@@ -4255,25 +4385,26 @@ channel_connect_to_path(struct ssh *ssh, const char *path,
4255 char *ctype, char *rname) 4385 char *ctype, char *rname)
4256{ 4386{
4257 struct ssh_channels *sc = ssh->chanctxt; 4387 struct ssh_channels *sc = ssh->chanctxt;
4388 struct permission_set *pset = &sc->local_perms;
4258 u_int i, permit, permit_adm = 1; 4389 u_int i, permit, permit_adm = 1;
4259 ForwardPermission *fp; 4390 struct permission *perm;
4260 4391
4261 permit = sc->all_opens_permitted; 4392 permit = pset->all_permitted;
4262 if (!permit) { 4393 if (!permit) {
4263 for (i = 0; i < sc->num_permitted_opens; i++) { 4394 for (i = 0; i < pset->num_permitted_user; i++) {
4264 fp = &sc->permitted_opens[i]; 4395 perm = &pset->permitted_user[i];
4265 if (open_match(fp, path, PORT_STREAMLOCAL)) { 4396 if (open_match(perm, path, PORT_STREAMLOCAL)) {
4266 permit = 1; 4397 permit = 1;
4267 break; 4398 break;
4268 } 4399 }
4269 } 4400 }
4270 } 4401 }
4271 4402
4272 if (sc->num_adm_permitted_opens > 0) { 4403 if (pset->num_permitted_admin > 0) {
4273 permit_adm = 0; 4404 permit_adm = 0;
4274 for (i = 0; i < sc->num_adm_permitted_opens; i++) { 4405 for (i = 0; i < pset->num_permitted_admin; i++) {
4275 fp = &sc->permitted_adm_opens[i]; 4406 perm = &pset->permitted_admin[i];
4276 if (open_match(fp, path, PORT_STREAMLOCAL)) { 4407 if (open_match(perm, path, PORT_STREAMLOCAL)) {
4277 permit_adm = 1; 4408 permit_adm = 1;
4278 break; 4409 break;
4279 } 4410 }
diff --git a/channels.h b/channels.h
index 126b04345..1aeafe94e 100644
--- a/channels.h
+++ b/channels.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.h,v 1.130 2017/09/21 19:16:53 markus Exp $ */ 1/* $OpenBSD: channels.h,v 1.131 2018/06/06 18:22:41 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -63,6 +63,15 @@
63 63
64#define CHANNEL_CANCEL_PORT_STATIC -1 64#define CHANNEL_CANCEL_PORT_STATIC -1
65 65
66/* TCP forwarding */
67#define FORWARD_DENY 0
68#define FORWARD_REMOTE (1)
69#define FORWARD_LOCAL (1<<1)
70#define FORWARD_ALLOW (FORWARD_REMOTE|FORWARD_LOCAL)
71
72#define FORWARD_ADM 0x100
73#define FORWARD_USER 0x101
74
66struct ssh; 75struct ssh;
67struct Channel; 76struct Channel;
68typedef struct Channel Channel; 77typedef struct Channel Channel;
@@ -283,16 +292,11 @@ int channel_find_open(struct ssh *);
283struct Forward; 292struct Forward;
284struct ForwardOptions; 293struct ForwardOptions;
285void channel_set_af(struct ssh *, int af); 294void channel_set_af(struct ssh *, int af);
286void channel_permit_all_opens(struct ssh *); 295void channel_permit_all(struct ssh *, int);
287void channel_add_permitted_opens(struct ssh *, char *, int); 296void channel_add_permission(struct ssh *, int, int, char *, int);
288int channel_add_adm_permitted_opens(struct ssh *, char *, int); 297void channel_clear_permission(struct ssh *, int, int);
289void channel_copy_adm_permitted_opens(struct ssh *, 298void channel_disable_admin(struct ssh *, int);
290 const struct fwd_perm_list *); 299void channel_update_permission(struct ssh *, int, int);
291void channel_disable_adm_local_opens(struct ssh *);
292void channel_update_permitted_opens(struct ssh *, int, int);
293void channel_clear_permitted_opens(struct ssh *);
294void channel_clear_adm_permitted_opens(struct ssh *);
295void channel_print_adm_permitted_opens(struct ssh *);
296Channel *channel_connect_to_port(struct ssh *, const char *, u_short, 300Channel *channel_connect_to_port(struct ssh *, const char *, u_short,
297 char *, char *, int *, const char **); 301 char *, char *, int *, const char **);
298Channel *channel_connect_to_path(struct ssh *, const char *, char *, char *); 302Channel *channel_connect_to_path(struct ssh *, const char *, char *, char *);
diff --git a/cipher.c b/cipher.c
index 578763616..a72682a82 100644
--- a/cipher.c
+++ b/cipher.c
@@ -82,7 +82,9 @@ struct sshcipher {
82 82
83static const struct sshcipher ciphers[] = { 83static const struct sshcipher ciphers[] = {
84#ifdef WITH_OPENSSL 84#ifdef WITH_OPENSSL
85#ifndef OPENSSL_NO_DES
85 { "3des-cbc", 8, 24, 0, 0, CFLAG_CBC, EVP_des_ede3_cbc }, 86 { "3des-cbc", 8, 24, 0, 0, CFLAG_CBC, EVP_des_ede3_cbc },
87#endif
86 { "aes128-cbc", 16, 16, 0, 0, CFLAG_CBC, EVP_aes_128_cbc }, 88 { "aes128-cbc", 16, 16, 0, 0, CFLAG_CBC, EVP_aes_128_cbc },
87 { "aes192-cbc", 16, 24, 0, 0, CFLAG_CBC, EVP_aes_192_cbc }, 89 { "aes192-cbc", 16, 24, 0, 0, CFLAG_CBC, EVP_aes_192_cbc },
88 { "aes256-cbc", 16, 32, 0, 0, CFLAG_CBC, EVP_aes_256_cbc }, 90 { "aes256-cbc", 16, 32, 0, 0, CFLAG_CBC, EVP_aes_256_cbc },
diff --git a/clientloop.c b/clientloop.c
index 7bcf22e38..ad35cb7ba 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.c,v 1.311 2018/02/11 21:16:56 dtucker Exp $ */ 1/* $OpenBSD: clientloop.c,v 1.317 2018/07/11 18:53:29 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -91,11 +91,11 @@
91#include "ssh.h" 91#include "ssh.h"
92#include "ssh2.h" 92#include "ssh2.h"
93#include "packet.h" 93#include "packet.h"
94#include "buffer.h" 94#include "sshbuf.h"
95#include "compat.h" 95#include "compat.h"
96#include "channels.h" 96#include "channels.h"
97#include "dispatch.h" 97#include "dispatch.h"
98#include "key.h" 98#include "sshkey.h"
99#include "cipher.h" 99#include "cipher.h"
100#include "kex.h" 100#include "kex.h"
101#include "myproposal.h" 101#include "myproposal.h"
@@ -153,7 +153,7 @@ static time_t control_persist_exit_time = 0;
153volatile sig_atomic_t quit_pending; /* Set non-zero to quit the loop. */ 153volatile sig_atomic_t quit_pending; /* Set non-zero to quit the loop. */
154static int last_was_cr; /* Last character was a newline. */ 154static int last_was_cr; /* Last character was a newline. */
155static int exit_status; /* Used to store the command exit status. */ 155static int exit_status; /* Used to store the command exit status. */
156static Buffer stderr_buffer; /* Used for final exit message. */ 156static struct sshbuf *stderr_buffer; /* Used for final exit message. */
157static int connection_in; /* Connection to server (input). */ 157static int connection_in; /* Connection to server (input). */
158static int connection_out; /* Connection to server (output). */ 158static int connection_out; /* Connection to server (output). */
159static int need_rekeying; /* Set to non-zero if rekeying is requested. */ 159static int need_rekeying; /* Set to non-zero if rekeying is requested. */
@@ -188,7 +188,7 @@ TAILQ_HEAD(global_confirms, global_confirm);
188static struct global_confirms global_confirms = 188static struct global_confirms global_confirms =
189 TAILQ_HEAD_INITIALIZER(global_confirms); 189 TAILQ_HEAD_INITIALIZER(global_confirms);
190 190
191void ssh_process_session2_setup(int, int, int, Buffer *); 191void ssh_process_session2_setup(int, int, int, struct sshbuf *);
192 192
193/* Restores stdin to blocking mode. */ 193/* Restores stdin to blocking mode. */
194 194
@@ -493,7 +493,7 @@ client_wait_until_can_do_something(struct ssh *ssh,
493 struct timeval tv, *tvp; 493 struct timeval tv, *tvp;
494 int timeout_secs; 494 int timeout_secs;
495 time_t minwait_secs = 0, server_alive_time = 0, now = monotime(); 495 time_t minwait_secs = 0, server_alive_time = 0, now = monotime();
496 int ret; 496 int r, ret;
497 497
498 /* Add any selections by the channel mechanism. */ 498 /* Add any selections by the channel mechanism. */
499 channel_prepare_select(active_state, readsetp, writesetp, maxfdp, 499 channel_prepare_select(active_state, readsetp, writesetp, maxfdp,
@@ -546,8 +546,6 @@ client_wait_until_can_do_something(struct ssh *ssh,
546 546
547 ret = select((*maxfdp)+1, *readsetp, *writesetp, NULL, tvp); 547 ret = select((*maxfdp)+1, *readsetp, *writesetp, NULL, tvp);
548 if (ret < 0) { 548 if (ret < 0) {
549 char buf[100];
550
551 /* 549 /*
552 * We have to clear the select masks, because we return. 550 * We have to clear the select masks, because we return.
553 * We have to return, because the mainloop checks for the flags 551 * We have to return, because the mainloop checks for the flags
@@ -559,8 +557,9 @@ client_wait_until_can_do_something(struct ssh *ssh,
559 if (errno == EINTR) 557 if (errno == EINTR)
560 return; 558 return;
561 /* Note: we might still have data in the buffers. */ 559 /* Note: we might still have data in the buffers. */
562 snprintf(buf, sizeof buf, "select: %s\r\n", strerror(errno)); 560 if ((r = sshbuf_putf(stderr_buffer,
563 buffer_append(&stderr_buffer, buf, strlen(buf)); 561 "select: %s\r\n", strerror(errno))) != 0)
562 fatal("%s: buffer error: %s", __func__, ssh_err(r));
564 quit_pending = 1; 563 quit_pending = 1;
565 } else if (ret == 0) { 564 } else if (ret == 0) {
566 /* 565 /*
@@ -574,15 +573,15 @@ client_wait_until_can_do_something(struct ssh *ssh,
574} 573}
575 574
576static void 575static void
577client_suspend_self(Buffer *bin, Buffer *bout, Buffer *berr) 576client_suspend_self(struct sshbuf *bin, struct sshbuf *bout, struct sshbuf *berr)
578{ 577{
579 /* Flush stdout and stderr buffers. */ 578 /* Flush stdout and stderr buffers. */
580 if (buffer_len(bout) > 0) 579 if (sshbuf_len(bout) > 0)
581 atomicio(vwrite, fileno(stdout), buffer_ptr(bout), 580 atomicio(vwrite, fileno(stdout), sshbuf_mutable_ptr(bout),
582 buffer_len(bout)); 581 sshbuf_len(bout));
583 if (buffer_len(berr) > 0) 582 if (sshbuf_len(berr) > 0)
584 atomicio(vwrite, fileno(stderr), buffer_ptr(berr), 583 atomicio(vwrite, fileno(stderr), sshbuf_mutable_ptr(berr),
585 buffer_len(berr)); 584 sshbuf_len(berr));
586 585
587 leave_raw_mode(options.request_tty == REQUEST_TTY_FORCE); 586 leave_raw_mode(options.request_tty == REQUEST_TTY_FORCE);
588 587
@@ -602,8 +601,8 @@ client_suspend_self(Buffer *bin, Buffer *bout, Buffer *berr)
602static void 601static void
603client_process_net_input(fd_set *readset) 602client_process_net_input(fd_set *readset)
604{ 603{
605 int len;
606 char buf[SSH_IOBUFSZ]; 604 char buf[SSH_IOBUFSZ];
605 int r, len;
607 606
608 /* 607 /*
609 * Read input from the server, and add any such data to the buffer of 608 * Read input from the server, and add any such data to the buffer of
@@ -617,10 +616,11 @@ client_process_net_input(fd_set *readset)
617 * Received EOF. The remote host has closed the 616 * Received EOF. The remote host has closed the
618 * connection. 617 * connection.
619 */ 618 */
620 snprintf(buf, sizeof buf, 619 if ((r = sshbuf_putf(stderr_buffer,
621 "Connection to %.300s closed by remote host.\r\n", 620 "Connection to %.300s closed by remote host.\r\n",
622 host); 621 host)) != 0)
623 buffer_append(&stderr_buffer, buf, strlen(buf)); 622 fatal("%s: buffer error: %s",
623 __func__, ssh_err(r));
624 quit_pending = 1; 624 quit_pending = 1;
625 return; 625 return;
626 } 626 }
@@ -637,10 +637,11 @@ client_process_net_input(fd_set *readset)
637 * An error has encountered. Perhaps there is a 637 * An error has encountered. Perhaps there is a
638 * network problem. 638 * network problem.
639 */ 639 */
640 snprintf(buf, sizeof buf, 640 if ((r = sshbuf_putf(stderr_buffer,
641 "Read from remote host %.300s: %.100s\r\n", 641 "Read from remote host %.300s: %.100s\r\n",
642 host, strerror(errno)); 642 host, strerror(errno))) != 0)
643 buffer_append(&stderr_buffer, buf, strlen(buf)); 643 fatal("%s: buffer error: %s",
644 __func__, ssh_err(r));
644 quit_pending = 1; 645 quit_pending = 1;
645 return; 646 return;
646 } 647 }
@@ -653,7 +654,7 @@ client_status_confirm(struct ssh *ssh, int type, Channel *c, void *ctx)
653{ 654{
654 struct channel_reply_ctx *cr = (struct channel_reply_ctx *)ctx; 655 struct channel_reply_ctx *cr = (struct channel_reply_ctx *)ctx;
655 char errmsg[256]; 656 char errmsg[256];
656 int tochan; 657 int r, tochan;
657 658
658 /* 659 /*
659 * If a TTY was explicitly requested, then a failure to allocate 660 * If a TTY was explicitly requested, then a failure to allocate
@@ -664,7 +665,7 @@ client_status_confirm(struct ssh *ssh, int type, Channel *c, void *ctx)
664 options.request_tty == REQUEST_TTY_YES)) 665 options.request_tty == REQUEST_TTY_YES))
665 cr->action = CONFIRM_CLOSE; 666 cr->action = CONFIRM_CLOSE;
666 667
667 /* XXX supress on mux _client_ quietmode */ 668 /* XXX suppress on mux _client_ quietmode */
668 tochan = options.log_level >= SYSLOG_LEVEL_ERROR && 669 tochan = options.log_level >= SYSLOG_LEVEL_ERROR &&
669 c->ctl_chan != -1 && c->extended_usage == CHAN_EXTENDED_WRITE; 670 c->ctl_chan != -1 && c->extended_usage == CHAN_EXTENDED_WRITE;
670 671
@@ -688,7 +689,10 @@ client_status_confirm(struct ssh *ssh, int type, Channel *c, void *ctx)
688 * their stderr. 689 * their stderr.
689 */ 690 */
690 if (tochan) { 691 if (tochan) {
691 buffer_append(c->extended, errmsg, strlen(errmsg)); 692 if ((r = sshbuf_put(c->extended, errmsg,
693 strlen(errmsg))) != 0)
694 fatal("%s: buffer error %s", __func__,
695 ssh_err(r));
692 } else 696 } else
693 error("%s", errmsg); 697 error("%s", errmsg);
694 if (cr->action == CONFIRM_TTY) { 698 if (cr->action == CONFIRM_TTY) {
@@ -892,14 +896,15 @@ static struct escape_help_text esc_txt[] = {
892}; 896};
893 897
894static void 898static void
895print_escape_help(Buffer *b, int escape_char, int mux_client, int using_stderr) 899print_escape_help(struct sshbuf *b, int escape_char, int mux_client,
900 int using_stderr)
896{ 901{
897 unsigned int i, suppress_flags; 902 unsigned int i, suppress_flags;
898 char string[1024]; 903 int r;
899 904
900 snprintf(string, sizeof string, "%c?\r\n" 905 if ((r = sshbuf_putf(b,
901 "Supported escape sequences:\r\n", escape_char); 906 "%c?\r\nSupported escape sequences:\r\n", escape_char)) != 0)
902 buffer_append(b, string, strlen(string)); 907 fatal("%s: buffer error: %s", __func__, ssh_err(r));
903 908
904 suppress_flags = 909 suppress_flags =
905 (mux_client ? SUPPRESS_MUXCLIENT : 0) | 910 (mux_client ? SUPPRESS_MUXCLIENT : 0) |
@@ -909,29 +914,28 @@ print_escape_help(Buffer *b, int escape_char, int mux_client, int using_stderr)
909 for (i = 0; i < sizeof(esc_txt)/sizeof(esc_txt[0]); i++) { 914 for (i = 0; i < sizeof(esc_txt)/sizeof(esc_txt[0]); i++) {
910 if (esc_txt[i].flags & suppress_flags) 915 if (esc_txt[i].flags & suppress_flags)
911 continue; 916 continue;
912 snprintf(string, sizeof string, " %c%-3s - %s\r\n", 917 if ((r = sshbuf_putf(b, " %c%-3s - %s\r\n",
913 escape_char, esc_txt[i].cmd, esc_txt[i].text); 918 escape_char, esc_txt[i].cmd, esc_txt[i].text)) != 0)
914 buffer_append(b, string, strlen(string)); 919 fatal("%s: buffer error: %s", __func__, ssh_err(r));
915 } 920 }
916 921
917 snprintf(string, sizeof string, 922 if ((r = sshbuf_putf(b,
918 " %c%c - send the escape character by typing it twice\r\n" 923 " %c%c - send the escape character by typing it twice\r\n"
919 "(Note that escapes are only recognized immediately after " 924 "(Note that escapes are only recognized immediately after "
920 "newline.)\r\n", escape_char, escape_char); 925 "newline.)\r\n", escape_char, escape_char)) != 0)
921 buffer_append(b, string, strlen(string)); 926 fatal("%s: buffer error: %s", __func__, ssh_err(r));
922} 927}
923 928
924/* 929/*
925 * Process the characters one by one. 930 * Process the characters one by one.
926 */ 931 */
927static int 932static int
928process_escapes(struct ssh *ssh, Channel *c, 933process_escapes(struct ssh *ssh, Channel *c,
929 Buffer *bin, Buffer *bout, Buffer *berr, 934 struct sshbuf *bin, struct sshbuf *bout, struct sshbuf *berr,
930 char *buf, int len) 935 char *buf, int len)
931{ 936{
932 char string[1024];
933 pid_t pid; 937 pid_t pid;
934 int bytes = 0; 938 int r, bytes = 0;
935 u_int i; 939 u_int i;
936 u_char ch; 940 u_char ch;
937 char *s; 941 char *s;
@@ -940,7 +944,7 @@ process_escapes(struct ssh *ssh, Channel *c,
940 944
941 if (c->filter_ctx == NULL) 945 if (c->filter_ctx == NULL)
942 return 0; 946 return 0;
943 947
944 if (len <= 0) 948 if (len <= 0)
945 return (0); 949 return (0);
946 950
@@ -957,10 +961,10 @@ process_escapes(struct ssh *ssh, Channel *c,
957 switch (ch) { 961 switch (ch) {
958 case '.': 962 case '.':
959 /* Terminate the connection. */ 963 /* Terminate the connection. */
960 snprintf(string, sizeof string, "%c.\r\n", 964 if ((r = sshbuf_putf(berr, "%c.\r\n",
961 efc->escape_char); 965 efc->escape_char)) != 0)
962 buffer_append(berr, string, strlen(string)); 966 fatal("%s: buffer error: %s",
963 967 __func__, ssh_err(r));
964 if (c && c->ctl_chan != -1) { 968 if (c && c->ctl_chan != -1) {
965 chan_read_failed(ssh, c); 969 chan_read_failed(ssh, c);
966 chan_write_failed(ssh, c); 970 chan_write_failed(ssh, c);
@@ -969,7 +973,7 @@ process_escapes(struct ssh *ssh, Channel *c,
969 c->self, NULL); 973 c->self, NULL);
970 } 974 }
971 c->type = SSH_CHANNEL_ABANDONED; 975 c->type = SSH_CHANNEL_ABANDONED;
972 buffer_clear(c->input); 976 sshbuf_reset(c->input);
973 chan_ibuf_empty(ssh, c); 977 chan_ibuf_empty(ssh, c);
974 return 0; 978 return 0;
975 } else 979 } else
@@ -985,18 +989,20 @@ process_escapes(struct ssh *ssh, Channel *c,
985 snprintf(b, sizeof b, "^Z"); 989 snprintf(b, sizeof b, "^Z");
986 else 990 else
987 snprintf(b, sizeof b, "%c", ch); 991 snprintf(b, sizeof b, "%c", ch);
988 snprintf(string, sizeof string, 992 if ((r = sshbuf_putf(berr,
989 "%c%s escape not available to " 993 "%c%s escape not available to "
990 "multiplexed sessions\r\n", 994 "multiplexed sessions\r\n",
991 efc->escape_char, b); 995 efc->escape_char, b)) != 0)
992 buffer_append(berr, string, 996 fatal("%s: buffer error: %s",
993 strlen(string)); 997 __func__, ssh_err(r));
994 continue; 998 continue;
995 } 999 }
996 /* Suspend the program. Inform the user */ 1000 /* Suspend the program. Inform the user */
997 snprintf(string, sizeof string, 1001 if ((r = sshbuf_putf(berr,
998 "%c^Z [suspend ssh]\r\n", efc->escape_char); 1002 "%c^Z [suspend ssh]\r\n",
999 buffer_append(berr, string, strlen(string)); 1003 efc->escape_char)) != 0)
1004 fatal("%s: buffer error: %s",
1005 __func__, ssh_err(r));
1000 1006
1001 /* Restore terminal modes and suspend. */ 1007 /* Restore terminal modes and suspend. */
1002 client_suspend_self(bin, bout, berr); 1008 client_suspend_self(bin, bout, berr);
@@ -1005,12 +1011,15 @@ process_escapes(struct ssh *ssh, Channel *c,
1005 continue; 1011 continue;
1006 1012
1007 case 'B': 1013 case 'B':
1008 snprintf(string, sizeof string, 1014 if ((r = sshbuf_putf(berr,
1009 "%cB\r\n", efc->escape_char); 1015 "%cB\r\n", efc->escape_char)) != 0)
1010 buffer_append(berr, string, strlen(string)); 1016 fatal("%s: buffer error: %s",
1017 __func__, ssh_err(r));
1011 channel_request_start(ssh, c->self, "break", 0); 1018 channel_request_start(ssh, c->self, "break", 0);
1012 packet_put_int(1000); 1019 if ((r = sshpkt_put_u32(ssh, 1000)) != 0 ||
1013 packet_send(); 1020 (r = sshpkt_send(ssh)) != 0)
1021 fatal("%s: %s", __func__,
1022 ssh_err(r));
1014 continue; 1023 continue;
1015 1024
1016 case 'R': 1025 case 'R':
@@ -1027,11 +1036,11 @@ process_escapes(struct ssh *ssh, Channel *c,
1027 if (c && c->ctl_chan != -1) 1036 if (c && c->ctl_chan != -1)
1028 goto noescape; 1037 goto noescape;
1029 if (!log_is_on_stderr()) { 1038 if (!log_is_on_stderr()) {
1030 snprintf(string, sizeof string, 1039 if ((r = sshbuf_putf(berr,
1031 "%c%c [Logging to syslog]\r\n", 1040 "%c%c [Logging to syslog]\r\n",
1032 efc->escape_char, ch); 1041 efc->escape_char, ch)) != 0)
1033 buffer_append(berr, string, 1042 fatal("%s: buffer error: %s",
1034 strlen(string)); 1043 __func__, ssh_err(r));
1035 continue; 1044 continue;
1036 } 1045 }
1037 if (ch == 'V' && options.log_level > 1046 if (ch == 'V' && options.log_level >
@@ -1040,11 +1049,12 @@ process_escapes(struct ssh *ssh, Channel *c,
1040 if (ch == 'v' && options.log_level < 1049 if (ch == 'v' && options.log_level <
1041 SYSLOG_LEVEL_DEBUG3) 1050 SYSLOG_LEVEL_DEBUG3)
1042 log_change_level(++options.log_level); 1051 log_change_level(++options.log_level);
1043 snprintf(string, sizeof string, 1052 if ((r = sshbuf_putf(berr,
1044 "%c%c [LogLevel %s]\r\n", 1053 "%c%c [LogLevel %s]\r\n",
1045 efc->escape_char, ch, 1054 efc->escape_char, ch,
1046 log_level_name(options.log_level)); 1055 log_level_name(options.log_level))) != 0)
1047 buffer_append(berr, string, strlen(string)); 1056 fatal("%s: buffer error: %s",
1057 __func__, ssh_err(r));
1048 continue; 1058 continue;
1049 1059
1050 case '&': 1060 case '&':
@@ -1062,9 +1072,11 @@ process_escapes(struct ssh *ssh, Channel *c,
1062 /* Stop listening for new connections. */ 1072 /* Stop listening for new connections. */
1063 channel_stop_listening(ssh); 1073 channel_stop_listening(ssh);
1064 1074
1065 snprintf(string, sizeof string, 1075 if ((r = sshbuf_putf(berr,
1066 "%c& [backgrounded]\n", efc->escape_char); 1076 "%c& [backgrounded]\n", efc->escape_char))
1067 buffer_append(berr, string, strlen(string)); 1077 != 0)
1078 fatal("%s: buffer error: %s",
1079 __func__, ssh_err(r));
1068 1080
1069 /* Fork into background. */ 1081 /* Fork into background. */
1070 pid = fork(); 1082 pid = fork();
@@ -1077,8 +1089,10 @@ process_escapes(struct ssh *ssh, Channel *c,
1077 exit(0); 1089 exit(0);
1078 } 1090 }
1079 /* The child continues serving connections. */ 1091 /* The child continues serving connections. */
1080 buffer_append(bin, "\004", 1);
1081 /* fake EOF on stdin */ 1092 /* fake EOF on stdin */
1093 if ((r = sshbuf_put_u8(bin, 4)) != 0)
1094 fatal("%s: buffer error: %s",
1095 __func__, ssh_err(r));
1082 return -1; 1096 return -1;
1083 case '?': 1097 case '?':
1084 print_escape_help(berr, efc->escape_char, 1098 print_escape_help(berr, efc->escape_char,
@@ -1087,11 +1101,14 @@ process_escapes(struct ssh *ssh, Channel *c,
1087 continue; 1101 continue;
1088 1102
1089 case '#': 1103 case '#':
1090 snprintf(string, sizeof string, "%c#\r\n", 1104 if ((r = sshbuf_putf(berr, "%c#\r\n",
1091 efc->escape_char); 1105 efc->escape_char)) != 0)
1092 buffer_append(berr, string, strlen(string)); 1106 fatal("%s: buffer error: %s",
1107 __func__, ssh_err(r));
1093 s = channel_open_message(ssh); 1108 s = channel_open_message(ssh);
1094 buffer_append(berr, s, strlen(s)); 1109 if ((r = sshbuf_put(berr, s, strlen(s))) != 0)
1110 fatal("%s: buffer error: %s",
1111 __func__, ssh_err(r));
1095 free(s); 1112 free(s);
1096 continue; 1113 continue;
1097 1114
@@ -1103,7 +1120,10 @@ process_escapes(struct ssh *ssh, Channel *c,
1103 1120
1104 default: 1121 default:
1105 if (ch != efc->escape_char) { 1122 if (ch != efc->escape_char) {
1106 buffer_put_char(bin, efc->escape_char); 1123 if ((r = sshbuf_put_u8(bin,
1124 efc->escape_char)) != 0)
1125 fatal("%s: buffer error: %s",
1126 __func__, ssh_err(r));
1107 bytes++; 1127 bytes++;
1108 } 1128 }
1109 /* Escaped characters fall through here */ 1129 /* Escaped characters fall through here */
@@ -1129,7 +1149,8 @@ process_escapes(struct ssh *ssh, Channel *c,
1129 * and append it to the buffer. 1149 * and append it to the buffer.
1130 */ 1150 */
1131 last_was_cr = (ch == '\r' || ch == '\n'); 1151 last_was_cr = (ch == '\r' || ch == '\n');
1132 buffer_put_char(bin, ch); 1152 if ((r = sshbuf_put_u8(bin, ch)) != 0)
1153 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1133 bytes++; 1154 bytes++;
1134 } 1155 }
1135 return bytes; 1156 return bytes;
@@ -1253,8 +1274,9 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
1253 1274
1254 quit_pending = 0; 1275 quit_pending = 0;
1255 1276
1256 /* Initialize buffers. */ 1277 /* Initialize buffer. */
1257 buffer_init(&stderr_buffer); 1278 if ((stderr_buffer = sshbuf_new()) == NULL)
1279 fatal("%s: sshbuf_new failed", __func__);
1258 1280
1259 client_init_dispatch(); 1281 client_init_dispatch();
1260 1282
@@ -1411,24 +1433,25 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
1411 * that the connection has been closed. 1433 * that the connection has been closed.
1412 */ 1434 */
1413 if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) { 1435 if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) {
1414 snprintf(buf, sizeof buf, 1436 if ((r = sshbuf_putf(stderr_buffer,
1415 "Connection to %.64s closed.\r\n", host); 1437 "Connection to %.64s closed.\r\n", host)) != 0)
1416 buffer_append(&stderr_buffer, buf, strlen(buf)); 1438 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1417 } 1439 }
1418 1440
1419 /* Output any buffered data for stderr. */ 1441 /* Output any buffered data for stderr. */
1420 if (buffer_len(&stderr_buffer) > 0) { 1442 if (sshbuf_len(stderr_buffer) > 0) {
1421 len = atomicio(vwrite, fileno(stderr), 1443 len = atomicio(vwrite, fileno(stderr),
1422 buffer_ptr(&stderr_buffer), buffer_len(&stderr_buffer)); 1444 (u_char *)sshbuf_ptr(stderr_buffer),
1423 if (len < 0 || (u_int)len != buffer_len(&stderr_buffer)) 1445 sshbuf_len(stderr_buffer));
1446 if (len < 0 || (u_int)len != sshbuf_len(stderr_buffer))
1424 error("Write failed flushing stderr buffer."); 1447 error("Write failed flushing stderr buffer.");
1425 else 1448 else if ((r = sshbuf_consume(stderr_buffer, len)) != 0)
1426 buffer_consume(&stderr_buffer, len); 1449 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1427 } 1450 }
1428 1451
1429 /* Clear and free any buffers. */ 1452 /* Clear and free any buffers. */
1430 explicit_bzero(buf, sizeof(buf)); 1453 explicit_bzero(buf, sizeof(buf));
1431 buffer_free(&stderr_buffer); 1454 sshbuf_free(stderr_buffer);
1432 1455
1433 /* Report bytes transferred, and transfer rates. */ 1456 /* Report bytes transferred, and transfer rates. */
1434 total_time = monotime_double() - start_time; 1457 total_time = monotime_double() - start_time;
@@ -1746,7 +1769,7 @@ struct hostkeys_update_ctx {
1746 */ 1769 */
1747 struct sshkey **keys; 1770 struct sshkey **keys;
1748 int *keys_seen; 1771 int *keys_seen;
1749 size_t nkeys, nnew; 1772 size_t nkeys, nnew;
1750 1773
1751 /* 1774 /*
1752 * Keys that are in known_hosts, but were not present in the update 1775 * Keys that are in known_hosts, but were not present in the update
@@ -2156,9 +2179,11 @@ client_input_global_request(int type, u_int32_t seq, struct ssh *ssh)
2156 2179
2157void 2180void
2158client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem, 2181client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem,
2159 const char *term, struct termios *tiop, int in_fd, Buffer *cmd, char **env) 2182 const char *term, struct termios *tiop, int in_fd, struct sshbuf *cmd,
2183 char **env)
2160{ 2184{
2161 int len; 2185 int i, j, matched, len;
2186 char *name, *val;
2162 Channel *c = NULL; 2187 Channel *c = NULL;
2163 2188
2164 debug2("%s: id %d", __func__, id); 2189 debug2("%s: id %d", __func__, id);
@@ -2185,7 +2210,7 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem,
2185 packet_put_int((u_int)ws.ws_ypixel); 2210 packet_put_int((u_int)ws.ws_ypixel);
2186 if (tiop == NULL) 2211 if (tiop == NULL)
2187 tiop = get_saved_tio(); 2212 tiop = get_saved_tio();
2188 tty_make_modes(-1, tiop); 2213 ssh_tty_make_modes(ssh, -1, tiop);
2189 packet_send(); 2214 packet_send();
2190 /* XXX wait for reply */ 2215 /* XXX wait for reply */
2191 c->client_tty = 1; 2216 c->client_tty = 1;
@@ -2193,9 +2218,6 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem,
2193 2218
2194 /* Transfer any environment variables from client to server */ 2219 /* Transfer any environment variables from client to server */
2195 if (options.num_send_env != 0 && env != NULL) { 2220 if (options.num_send_env != 0 && env != NULL) {
2196 int i, j, matched;
2197 char *name, *val;
2198
2199 debug("Sending environment."); 2221 debug("Sending environment.");
2200 for (i = 0; env[i] != NULL; i++) { 2222 for (i = 0; env[i] != NULL; i++) {
2201 /* Split */ 2223 /* Split */
@@ -2227,24 +2249,40 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem,
2227 free(name); 2249 free(name);
2228 } 2250 }
2229 } 2251 }
2252 for (i = 0; i < options.num_setenv; i++) {
2253 /* Split */
2254 name = xstrdup(options.setenv[i]);
2255 if ((val = strchr(name, '=')) == NULL) {
2256 free(name);
2257 continue;
2258 }
2259 *val++ = '\0';
2260
2261 debug("Setting env %s = %s", name, val);
2262 channel_request_start(ssh, id, "env", 0);
2263 packet_put_cstring(name);
2264 packet_put_cstring(val);
2265 packet_send();
2266 free(name);
2267 }
2230 2268
2231 len = buffer_len(cmd); 2269 len = sshbuf_len(cmd);
2232 if (len > 0) { 2270 if (len > 0) {
2233 if (len > 900) 2271 if (len > 900)
2234 len = 900; 2272 len = 900;
2235 if (want_subsystem) { 2273 if (want_subsystem) {
2236 debug("Sending subsystem: %.*s", 2274 debug("Sending subsystem: %.*s",
2237 len, (u_char*)buffer_ptr(cmd)); 2275 len, (const u_char*)sshbuf_ptr(cmd));
2238 channel_request_start(ssh, id, "subsystem", 1); 2276 channel_request_start(ssh, id, "subsystem", 1);
2239 client_expect_confirm(ssh, id, "subsystem", 2277 client_expect_confirm(ssh, id, "subsystem",
2240 CONFIRM_CLOSE); 2278 CONFIRM_CLOSE);
2241 } else { 2279 } else {
2242 debug("Sending command: %.*s", 2280 debug("Sending command: %.*s",
2243 len, (u_char*)buffer_ptr(cmd)); 2281 len, (const u_char*)sshbuf_ptr(cmd));
2244 channel_request_start(ssh, id, "exec", 1); 2282 channel_request_start(ssh, id, "exec", 1);
2245 client_expect_confirm(ssh, id, "exec", CONFIRM_CLOSE); 2283 client_expect_confirm(ssh, id, "exec", CONFIRM_CLOSE);
2246 } 2284 }
2247 packet_put_string(buffer_ptr(cmd), buffer_len(cmd)); 2285 packet_put_string(sshbuf_ptr(cmd), sshbuf_len(cmd));
2248 packet_send(); 2286 packet_send();
2249 } else { 2287 } else {
2250 channel_request_start(ssh, id, "shell", 1); 2288 channel_request_start(ssh, id, "shell", 1);
diff --git a/clientloop.h b/clientloop.h
index 8d1f0bff6..bf79c87bf 100644
--- a/clientloop.h
+++ b/clientloop.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.h,v 1.35 2017/10/23 05:08:00 djm Exp $ */ 1/* $OpenBSD: clientloop.h,v 1.36 2018/07/09 21:03:30 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -45,7 +45,7 @@ int client_x11_get_proto(struct ssh *, const char *, const char *,
45 u_int, u_int, char **, char **); 45 u_int, u_int, char **, char **);
46void client_global_request_reply_fwd(int, u_int32_t, void *); 46void client_global_request_reply_fwd(int, u_int32_t, void *);
47void client_session2_setup(struct ssh *, int, int, int, 47void client_session2_setup(struct ssh *, int, int, int,
48 const char *, struct termios *, int, Buffer *, char **); 48 const char *, struct termios *, int, struct sshbuf *, char **);
49char *client_request_tun_fwd(struct ssh *, int, int, int); 49char *client_request_tun_fwd(struct ssh *, int, int, int);
50void client_stop_mux(void); 50void client_stop_mux(void);
51 51
diff --git a/compat.c b/compat.c
index 861e9e21f..0624dc6de 100644
--- a/compat.c
+++ b/compat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.c,v 1.106 2018/02/16 04:43:11 dtucker Exp $ */ 1/* $OpenBSD: compat.c,v 1.113 2018/08/13 02:41:05 djm Exp $ */
2/* 2/*
3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -32,7 +32,6 @@
32#include <stdarg.h> 32#include <stdarg.h>
33 33
34#include "xmalloc.h" 34#include "xmalloc.h"
35#include "buffer.h"
36#include "packet.h" 35#include "packet.h"
37#include "compat.h" 36#include "compat.h"
38#include "log.h" 37#include "log.h"
@@ -52,16 +51,28 @@ compat_datafellows(const char *version)
52 } check[] = { 51 } check[] = {
53 { "OpenSSH_2.*," 52 { "OpenSSH_2.*,"
54 "OpenSSH_3.0*," 53 "OpenSSH_3.0*,"
55 "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, 54 "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR|
56 { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR }, 55 SSH_BUG_SIGTYPE},
57 { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, 56 { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR|SSH_BUG_SIGTYPE },
57 { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF|
58 SSH_BUG_SIGTYPE},
58 { "OpenSSH_2*," 59 { "OpenSSH_2*,"
59 "OpenSSH_3*," 60 "OpenSSH_3*,"
60 "OpenSSH_4*", 0 }, 61 "OpenSSH_4*", SSH_BUG_SIGTYPE },
61 { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT}, 62 { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT|
62 { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH}, 63 SSH_BUG_SIGTYPE},
64 { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH|SSH_BUG_SIGTYPE},
63 { "OpenSSH_6.5*," 65 { "OpenSSH_6.5*,"
64 "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD}, 66 "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD|
67 SSH_BUG_SIGTYPE},
68 { "OpenSSH_7.0*,"
69 "OpenSSH_7.1*,"
70 "OpenSSH_7.2*,"
71 "OpenSSH_7.3*,"
72 "OpenSSH_7.4*,"
73 "OpenSSH_7.5*,"
74 "OpenSSH_7.6*,"
75 "OpenSSH_7.7*", SSH_NEW_OPENSSH|SSH_BUG_SIGTYPE},
65 { "OpenSSH*", SSH_NEW_OPENSSH }, 76 { "OpenSSH*", SSH_NEW_OPENSSH },
66 { "*MindTerm*", 0 }, 77 { "*MindTerm*", 0 },
67 { "3.0.*", SSH_BUG_DEBUG }, 78 { "3.0.*", SSH_BUG_DEBUG },
@@ -128,6 +139,8 @@ compat_datafellows(const char *version)
128 SSH_OLD_DHGEX }, 139 SSH_OLD_DHGEX },
129 { "ConfD-*", 140 { "ConfD-*",
130 SSH_BUG_UTF8TTYMODE }, 141 SSH_BUG_UTF8TTYMODE },
142 { "Twisted_*", 0 },
143 { "Twisted*", SSH_BUG_DEBUG },
131 { NULL, 0 } 144 { NULL, 0 }
132 }; 145 };
133 146
@@ -176,8 +189,8 @@ compat_cipher_proposal(char *cipher_prop)
176 if (!(datafellows & SSH_BUG_BIGENDIANAES)) 189 if (!(datafellows & SSH_BUG_BIGENDIANAES))
177 return cipher_prop; 190 return cipher_prop;
178 debug2("%s: original cipher proposal: %s", __func__, cipher_prop); 191 debug2("%s: original cipher proposal: %s", __func__, cipher_prop);
179 if ((cipher_prop = match_filter_list(cipher_prop, "aes*")) == NULL) 192 if ((cipher_prop = match_filter_blacklist(cipher_prop, "aes*")) == NULL)
180 fatal("match_filter_list failed"); 193 fatal("match_filter_blacklist failed");
181 debug2("%s: compat cipher proposal: %s", __func__, cipher_prop); 194 debug2("%s: compat cipher proposal: %s", __func__, cipher_prop);
182 if (*cipher_prop == '\0') 195 if (*cipher_prop == '\0')
183 fatal("No supported ciphers found"); 196 fatal("No supported ciphers found");
@@ -190,8 +203,8 @@ compat_pkalg_proposal(char *pkalg_prop)
190 if (!(datafellows & SSH_BUG_RSASIGMD5)) 203 if (!(datafellows & SSH_BUG_RSASIGMD5))
191 return pkalg_prop; 204 return pkalg_prop;
192 debug2("%s: original public key proposal: %s", __func__, pkalg_prop); 205 debug2("%s: original public key proposal: %s", __func__, pkalg_prop);
193 if ((pkalg_prop = match_filter_list(pkalg_prop, "ssh-rsa")) == NULL) 206 if ((pkalg_prop = match_filter_blacklist(pkalg_prop, "ssh-rsa")) == NULL)
194 fatal("match_filter_list failed"); 207 fatal("match_filter_blacklist failed");
195 debug2("%s: compat public key proposal: %s", __func__, pkalg_prop); 208 debug2("%s: compat public key proposal: %s", __func__, pkalg_prop);
196 if (*pkalg_prop == '\0') 209 if (*pkalg_prop == '\0')
197 fatal("No supported PK algorithms found"); 210 fatal("No supported PK algorithms found");
@@ -205,14 +218,14 @@ compat_kex_proposal(char *p)
205 return p; 218 return p;
206 debug2("%s: original KEX proposal: %s", __func__, p); 219 debug2("%s: original KEX proposal: %s", __func__, p);
207 if ((datafellows & SSH_BUG_CURVE25519PAD) != 0) 220 if ((datafellows & SSH_BUG_CURVE25519PAD) != 0)
208 if ((p = match_filter_list(p, 221 if ((p = match_filter_blacklist(p,
209 "curve25519-sha256@libssh.org")) == NULL) 222 "curve25519-sha256@libssh.org")) == NULL)
210 fatal("match_filter_list failed"); 223 fatal("match_filter_blacklist failed");
211 if ((datafellows & SSH_OLD_DHGEX) != 0) { 224 if ((datafellows & SSH_OLD_DHGEX) != 0) {
212 if ((p = match_filter_list(p, 225 if ((p = match_filter_blacklist(p,
213 "diffie-hellman-group-exchange-sha256," 226 "diffie-hellman-group-exchange-sha256,"
214 "diffie-hellman-group-exchange-sha1")) == NULL) 227 "diffie-hellman-group-exchange-sha1")) == NULL)
215 fatal("match_filter_list failed"); 228 fatal("match_filter_blacklist failed");
216 } 229 }
217 debug2("%s: compat KEX proposal: %s", __func__, p); 230 debug2("%s: compat KEX proposal: %s", __func__, p);
218 if (*p == '\0') 231 if (*p == '\0')
diff --git a/compat.h b/compat.h
index 4fee3495a..d611d33e7 100644
--- a/compat.h
+++ b/compat.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.h,v 1.51 2018/02/16 04:43:11 dtucker Exp $ */ 1/* $OpenBSD: compat.h,v 1.54 2018/08/13 02:41:05 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved.
@@ -33,7 +33,7 @@
33#define SSH_PROTO_2 0x04 33#define SSH_PROTO_2 0x04
34 34
35#define SSH_BUG_UTF8TTYMODE 0x00000001 35#define SSH_BUG_UTF8TTYMODE 0x00000001
36/* #define unused 0x00000002 */ 36#define SSH_BUG_SIGTYPE 0x00000002
37/* #define unused 0x00000004 */ 37/* #define unused 0x00000004 */
38/* #define unused 0x00000008 */ 38/* #define unused 0x00000008 */
39#define SSH_OLD_SESSIONID 0x00000010 39#define SSH_OLD_SESSIONID 0x00000010
diff --git a/config.h.in b/config.h.in
index 572087407..7940b4c86 100644
--- a/config.h.in
+++ b/config.h.in
@@ -534,6 +534,9 @@
534/* Define to 1 if you have the `getlastlogxbyname' function. */ 534/* Define to 1 if you have the `getlastlogxbyname' function. */
535#undef HAVE_GETLASTLOGXBYNAME 535#undef HAVE_GETLASTLOGXBYNAME
536 536
537/* Define to 1 if you have the `getline' function. */
538#undef HAVE_GETLINE
539
537/* Define to 1 if you have the `getluid' function. */ 540/* Define to 1 if you have the `getluid' function. */
538#undef HAVE_GETLUID 541#undef HAVE_GETLUID
539 542
@@ -567,6 +570,9 @@
567/* Define to 1 if you have the `getpwanam' function. */ 570/* Define to 1 if you have the `getpwanam' function. */
568#undef HAVE_GETPWANAM 571#undef HAVE_GETPWANAM
569 572
573/* Define to 1 if you have the `getrandom' function. */
574#undef HAVE_GETRANDOM
575
570/* Define to 1 if you have the `getrlimit' function. */ 576/* Define to 1 if you have the `getrlimit' function. */
571#undef HAVE_GETRLIMIT 577#undef HAVE_GETRLIMIT
572 578
@@ -1287,6 +1293,9 @@
1287/* Define to 1 if you have the <sys/ptrace.h> header file. */ 1293/* Define to 1 if you have the <sys/ptrace.h> header file. */
1288#undef HAVE_SYS_PTRACE_H 1294#undef HAVE_SYS_PTRACE_H
1289 1295
1296/* Define to 1 if you have the <sys/random.h> header file. */
1297#undef HAVE_SYS_RANDOM_H
1298
1290/* Define to 1 if you have the <sys/select.h> header file. */ 1299/* Define to 1 if you have the <sys/select.h> header file. */
1291#undef HAVE_SYS_SELECT_H 1300#undef HAVE_SYS_SELECT_H
1292 1301
@@ -1543,7 +1552,7 @@
1543/* Need setpgrp to acquire controlling tty */ 1552/* Need setpgrp to acquire controlling tty */
1544#undef NEED_SETPGRP 1553#undef NEED_SETPGRP
1545 1554
1546/* compiler does not accept __attribute__ on protoype args */ 1555/* compiler does not accept __attribute__ on prototype args */
1547#undef NO_ATTRIBUTE_ON_PROTOTYPE_ARGS 1556#undef NO_ATTRIBUTE_ON_PROTOTYPE_ARGS
1548 1557
1549/* compiler does not accept __attribute__ on return types */ 1558/* compiler does not accept __attribute__ on return types */
@@ -1670,12 +1679,6 @@
1670/* The size of `short int', as computed by sizeof. */ 1679/* The size of `short int', as computed by sizeof. */
1671#undef SIZEOF_SHORT_INT 1680#undef SIZEOF_SHORT_INT
1672 1681
1673/* Define if you want S/Key support */
1674#undef SKEY
1675
1676/* Define if your skeychallenge() function takes 4 arguments (NetBSD) */
1677#undef SKEYCHALLENGE_4ARG
1678
1679/* Define as const if snprintf() can declare const char *fmt */ 1682/* Define as const if snprintf() can declare const char *fmt */
1680#undef SNPRINTF_CONST 1683#undef SNPRINTF_CONST
1681 1684
@@ -1776,7 +1779,7 @@
1776/* Define if you want to enable AIX4's authenticate function */ 1779/* Define if you want to enable AIX4's authenticate function */
1777#undef WITH_AIXAUTHENTICATE 1780#undef WITH_AIXAUTHENTICATE
1778 1781
1779/* Define if you have/want arrays (cluster-wide session managment, not C 1782/* Define if you have/want arrays (cluster-wide session management, not C
1780 arrays) */ 1783 arrays) */
1781#undef WITH_IRIX_ARRAY 1784#undef WITH_IRIX_ARRAY
1782 1785
diff --git a/configure b/configure
index 5f5536fa4..330fb9b1d 100755
--- a/configure
+++ b/configure
@@ -751,7 +751,6 @@ with_solaris_privs
751with_osfsia 751with_osfsia
752with_zlib 752with_zlib
753with_zlib_version_check 753with_zlib_version_check
754with_skey
755with_ldns 754with_ldns
756with_libedit 755with_libedit
757with_audit 756with_audit
@@ -1447,7 +1446,6 @@ Optional Packages:
1447 --with-osfsia Enable Digital Unix SIA 1446 --with-osfsia Enable Digital Unix SIA
1448 --with-zlib=PATH Use zlib in PATH 1447 --with-zlib=PATH Use zlib in PATH
1449 --without-zlib-version-check Disable zlib version check 1448 --without-zlib-version-check Disable zlib version check
1450 --with-skey[=PATH] Enable S/Key support (optionally in PATH)
1451 --with-ldns[=PATH] Use ldns for DNSSEC support (optionally in PATH) 1449 --with-ldns[=PATH] Use ldns for DNSSEC support (optionally in PATH)
1452 --with-libedit[=PATH] Enable libedit support for sftp 1450 --with-libedit[=PATH] Enable libedit support for sftp
1453 --with-audit=module Enable audit support (modules=debug,bsm,linux) 1451 --with-audit=module Enable audit support (modules=debug,bsm,linux)
@@ -5546,9 +5544,7 @@ _ACEOF
5546 5544
5547fi 5545fi
5548 5546
5549if test -z "$LD" ; then 5547LD="$CC"
5550 LD=$CC
5551fi
5552 5548
5553 5549
5554{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 5550{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
@@ -5727,7 +5723,7 @@ int main(int argc, char **argv) {
5727_ACEOF 5723_ACEOF
5728if ac_fn_c_try_compile "$LINENO"; then : 5724if ac_fn_c_try_compile "$LINENO"; then :
5729 5725
5730if `grep -i "unrecognized option" conftest.err >/dev/null` 5726if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
5731then 5727then
5732 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5728 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5733$as_echo "no" >&6; } 5729$as_echo "no" >&6; }
@@ -5770,7 +5766,7 @@ int main(int argc, char **argv) {
5770_ACEOF 5766_ACEOF
5771if ac_fn_c_try_compile "$LINENO"; then : 5767if ac_fn_c_try_compile "$LINENO"; then :
5772 5768
5773if `grep -i "unrecognized option" conftest.err >/dev/null` 5769if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
5774then 5770then
5775 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5771 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5776$as_echo "no" >&6; } 5772$as_echo "no" >&6; }
@@ -5813,7 +5809,7 @@ int main(int argc, char **argv) {
5813_ACEOF 5809_ACEOF
5814if ac_fn_c_try_compile "$LINENO"; then : 5810if ac_fn_c_try_compile "$LINENO"; then :
5815 5811
5816if `grep -i "unrecognized option" conftest.err >/dev/null` 5812if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
5817then 5813then
5818 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5814 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5819$as_echo "no" >&6; } 5815$as_echo "no" >&6; }
@@ -5856,7 +5852,7 @@ int main(int argc, char **argv) {
5856_ACEOF 5852_ACEOF
5857if ac_fn_c_try_compile "$LINENO"; then : 5853if ac_fn_c_try_compile "$LINENO"; then :
5858 5854
5859if `grep -i "unrecognized option" conftest.err >/dev/null` 5855if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
5860then 5856then
5861 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5857 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5862$as_echo "no" >&6; } 5858$as_echo "no" >&6; }
@@ -5899,7 +5895,7 @@ int main(int argc, char **argv) {
5899_ACEOF 5895_ACEOF
5900if ac_fn_c_try_compile "$LINENO"; then : 5896if ac_fn_c_try_compile "$LINENO"; then :
5901 5897
5902if `grep -i "unrecognized option" conftest.err >/dev/null` 5898if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
5903then 5899then
5904 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5900 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5905$as_echo "no" >&6; } 5901$as_echo "no" >&6; }
@@ -5942,7 +5938,7 @@ int main(int argc, char **argv) {
5942_ACEOF 5938_ACEOF
5943if ac_fn_c_try_compile "$LINENO"; then : 5939if ac_fn_c_try_compile "$LINENO"; then :
5944 5940
5945if `grep -i "unrecognized option" conftest.err >/dev/null` 5941if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
5946then 5942then
5947 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5943 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5948$as_echo "no" >&6; } 5944$as_echo "no" >&6; }
@@ -5985,7 +5981,7 @@ int main(int argc, char **argv) {
5985_ACEOF 5981_ACEOF
5986if ac_fn_c_try_compile "$LINENO"; then : 5982if ac_fn_c_try_compile "$LINENO"; then :
5987 5983
5988if `grep -i "unrecognized option" conftest.err >/dev/null` 5984if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
5989then 5985then
5990 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 5986 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5991$as_echo "no" >&6; } 5987$as_echo "no" >&6; }
@@ -6028,7 +6024,7 @@ int main(int argc, char **argv) {
6028_ACEOF 6024_ACEOF
6029if ac_fn_c_try_compile "$LINENO"; then : 6025if ac_fn_c_try_compile "$LINENO"; then :
6030 6026
6031if `grep -i "unrecognized option" conftest.err >/dev/null` 6027if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6032then 6028then
6033 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6029 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6034$as_echo "no" >&6; } 6030$as_echo "no" >&6; }
@@ -6071,7 +6067,7 @@ int main(int argc, char **argv) {
6071_ACEOF 6067_ACEOF
6072if ac_fn_c_try_compile "$LINENO"; then : 6068if ac_fn_c_try_compile "$LINENO"; then :
6073 6069
6074if `grep -i "unrecognized option" conftest.err >/dev/null` 6070if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6075then 6071then
6076 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6072 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6077$as_echo "no" >&6; } 6073$as_echo "no" >&6; }
@@ -6114,7 +6110,7 @@ int main(int argc, char **argv) {
6114_ACEOF 6110_ACEOF
6115if ac_fn_c_try_compile "$LINENO"; then : 6111if ac_fn_c_try_compile "$LINENO"; then :
6116 6112
6117if `grep -i "unrecognized option" conftest.err >/dev/null` 6113if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6118then 6114then
6119 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6115 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6120$as_echo "no" >&6; } 6116$as_echo "no" >&6; }
@@ -6157,7 +6153,7 @@ int main(int argc, char **argv) {
6157_ACEOF 6153_ACEOF
6158if ac_fn_c_try_compile "$LINENO"; then : 6154if ac_fn_c_try_compile "$LINENO"; then :
6159 6155
6160if `grep -i "unrecognized option" conftest.err >/dev/null` 6156if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6161then 6157then
6162 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6158 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6163$as_echo "no" >&6; } 6159$as_echo "no" >&6; }
@@ -6200,7 +6196,7 @@ int main(int argc, char **argv) {
6200_ACEOF 6196_ACEOF
6201if ac_fn_c_try_compile "$LINENO"; then : 6197if ac_fn_c_try_compile "$LINENO"; then :
6202 6198
6203if `grep -i "unrecognized option" conftest.err >/dev/null` 6199if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6204then 6200then
6205 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6201 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6206$as_echo "no" >&6; } 6202$as_echo "no" >&6; }
@@ -6219,7 +6215,12 @@ fi
6219rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6215rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6220} 6216}
6221 if test "x$use_toolchain_hardening" = "x1"; then 6217 if test "x$use_toolchain_hardening" = "x1"; then
6222 { 6218 # Cygwin GCC 7.x allows thunking on the CLI, but produces non-working
6219 # code. Unfortunately you only notice this at link time.
6220 case "$host" in
6221 *-*-cygwin*) ;;
6222 *)
6223 {
6223 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mfunction-return=thunk" >&5 6224 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mfunction-return=thunk" >&5
6224$as_echo_n "checking if $CC supports compile flag -mfunction-return=thunk... " >&6; } 6225$as_echo_n "checking if $CC supports compile flag -mfunction-return=thunk... " >&6; }
6225 saved_CFLAGS="$CFLAGS" 6226 saved_CFLAGS="$CFLAGS"
@@ -6244,7 +6245,7 @@ int main(int argc, char **argv) {
6244_ACEOF 6245_ACEOF
6245if ac_fn_c_try_compile "$LINENO"; then : 6246if ac_fn_c_try_compile "$LINENO"; then :
6246 6247
6247if `grep -i "unrecognized option" conftest.err >/dev/null` 6248if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6248then 6249then
6249 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6250 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6250$as_echo "no" >&6; } 6251$as_echo "no" >&6; }
@@ -6262,7 +6263,7 @@ $as_echo "no" >&6; }
6262fi 6263fi
6263rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6264rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6264} # gcc 6265} # gcc
6265 { 6266 {
6266 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mindirect-branch=thunk" >&5 6267 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mindirect-branch=thunk" >&5
6267$as_echo_n "checking if $CC supports compile flag -mindirect-branch=thunk... " >&6; } 6268$as_echo_n "checking if $CC supports compile flag -mindirect-branch=thunk... " >&6; }
6268 saved_CFLAGS="$CFLAGS" 6269 saved_CFLAGS="$CFLAGS"
@@ -6287,7 +6288,7 @@ int main(int argc, char **argv) {
6287_ACEOF 6288_ACEOF
6288if ac_fn_c_try_compile "$LINENO"; then : 6289if ac_fn_c_try_compile "$LINENO"; then :
6289 6290
6290if `grep -i "unrecognized option" conftest.err >/dev/null` 6291if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6291then 6292then
6292 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6293 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6293$as_echo "no" >&6; } 6294$as_echo "no" >&6; }
@@ -6305,6 +6306,8 @@ $as_echo "no" >&6; }
6305fi 6306fi
6306rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6307rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6307} # gcc 6308} # gcc
6309 ;;
6310 esac
6308 { 6311 {
6309 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mretpoline" >&5 6312 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mretpoline" >&5
6310$as_echo_n "checking if $CC supports compile flag -mretpoline... " >&6; } 6313$as_echo_n "checking if $CC supports compile flag -mretpoline... " >&6; }
@@ -6330,7 +6333,7 @@ int main(int argc, char **argv) {
6330_ACEOF 6333_ACEOF
6331if ac_fn_c_try_compile "$LINENO"; then : 6334if ac_fn_c_try_compile "$LINENO"; then :
6332 6335
6333if `grep -i "unrecognized option" conftest.err >/dev/null` 6336if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6334then 6337then
6335 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6338 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6336$as_echo "no" >&6; } 6339$as_echo "no" >&6; }
@@ -6373,9 +6376,17 @@ int main(int argc, char **argv) {
6373 6376
6374_ACEOF 6377_ACEOF
6375if ac_fn_c_try_link "$LINENO"; then : 6378if ac_fn_c_try_link "$LINENO"; then :
6376 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 6379
6380if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6381then
6382 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6383$as_echo "no" >&6; }
6384 LDFLAGS="$saved_LDFLAGS"
6385else
6386 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6377$as_echo "yes" >&6; } 6387$as_echo "yes" >&6; }
6378 LDFLAGS="$saved_LDFLAGS $_define_flag" 6388 LDFLAGS="$saved_LDFLAGS $_define_flag"
6389fi
6379else 6390else
6380 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6391 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6381$as_echo "no" >&6; } 6392$as_echo "no" >&6; }
@@ -6410,7 +6421,7 @@ int main(int argc, char **argv) {
6410_ACEOF 6421_ACEOF
6411if ac_fn_c_try_compile "$LINENO"; then : 6422if ac_fn_c_try_compile "$LINENO"; then :
6412 6423
6413if `grep -i "unrecognized option" conftest.err >/dev/null` 6424if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6414then 6425then
6415 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6426 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6416$as_echo "no" >&6; } 6427$as_echo "no" >&6; }
@@ -6453,9 +6464,17 @@ int main(int argc, char **argv) {
6453 6464
6454_ACEOF 6465_ACEOF
6455if ac_fn_c_try_link "$LINENO"; then : 6466if ac_fn_c_try_link "$LINENO"; then :
6456 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 6467
6468if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6469then
6470 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6471$as_echo "no" >&6; }
6472 LDFLAGS="$saved_LDFLAGS"
6473else
6474 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6457$as_echo "yes" >&6; } 6475$as_echo "yes" >&6; }
6458 LDFLAGS="$saved_LDFLAGS $_define_flag" 6476 LDFLAGS="$saved_LDFLAGS $_define_flag"
6477fi
6459else 6478else
6460 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6479 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6461$as_echo "no" >&6; } 6480$as_echo "no" >&6; }
@@ -6490,9 +6509,17 @@ int main(int argc, char **argv) {
6490 6509
6491_ACEOF 6510_ACEOF
6492if ac_fn_c_try_link "$LINENO"; then : 6511if ac_fn_c_try_link "$LINENO"; then :
6493 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 6512
6513if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6514then
6515 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6516$as_echo "no" >&6; }
6517 LDFLAGS="$saved_LDFLAGS"
6518else
6519 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6494$as_echo "yes" >&6; } 6520$as_echo "yes" >&6; }
6495 LDFLAGS="$saved_LDFLAGS $_define_flag" 6521 LDFLAGS="$saved_LDFLAGS $_define_flag"
6522fi
6496else 6523else
6497 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6524 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6498$as_echo "no" >&6; } 6525$as_echo "no" >&6; }
@@ -6527,9 +6554,17 @@ int main(int argc, char **argv) {
6527 6554
6528_ACEOF 6555_ACEOF
6529if ac_fn_c_try_link "$LINENO"; then : 6556if ac_fn_c_try_link "$LINENO"; then :
6530 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 6557
6558if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6559then
6560 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6561$as_echo "no" >&6; }
6562 LDFLAGS="$saved_LDFLAGS"
6563else
6564 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6531$as_echo "yes" >&6; } 6565$as_echo "yes" >&6; }
6532 LDFLAGS="$saved_LDFLAGS $_define_flag" 6566 LDFLAGS="$saved_LDFLAGS $_define_flag"
6567fi
6533else 6568else
6534 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6569 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6535$as_echo "no" >&6; } 6570$as_echo "no" >&6; }
@@ -6570,7 +6605,7 @@ int main(int argc, char **argv) {
6570_ACEOF 6605_ACEOF
6571if ac_fn_c_try_link "$LINENO"; then : 6606if ac_fn_c_try_link "$LINENO"; then :
6572 6607
6573if `grep -i "unrecognized option" conftest.err >/dev/null` 6608if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6574then 6609then
6575 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 6610 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6576$as_echo "no" >&6; } 6611$as_echo "no" >&6; }
@@ -6944,6 +6979,7 @@ for ac_header in \
6944 sys/prctl.h \ 6979 sys/prctl.h \
6945 sys/pstat.h \ 6980 sys/pstat.h \
6946 sys/ptrace.h \ 6981 sys/ptrace.h \
6982 sys/random.h \
6947 sys/select.h \ 6983 sys/select.h \
6948 sys/stat.h \ 6984 sys/stat.h \
6949 sys/stream.h \ 6985 sys/stream.h \
@@ -7154,7 +7190,7 @@ case "$host" in
7154 # Some versions of VAC won't allow macro redefinitions at 7190 # Some versions of VAC won't allow macro redefinitions at
7155 # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that 7191 # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that
7156 # particularly with older versions of vac or xlc. 7192 # particularly with older versions of vac or xlc.
7157 # It also throws errors about null macro argments, but these are 7193 # It also throws errors about null macro arguments, but these are
7158 # not fatal. 7194 # not fatal.
7159 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows macro redefinitions" >&5 7195 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows macro redefinitions" >&5
7160$as_echo_n "checking if compiler allows macro redefinitions... " >&6; } 7196$as_echo_n "checking if compiler allows macro redefinitions... " >&6; }
@@ -7178,7 +7214,6 @@ else
7178 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 7214 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7179$as_echo "no" >&6; } 7215$as_echo "no" >&6; }
7180 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`" 7216 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
7181 LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`"
7182 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`" 7217 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
7183 CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`" 7218 CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`"
7184 7219
@@ -7497,7 +7532,7 @@ int main(int argc, char **argv) {
7497_ACEOF 7532_ACEOF
7498if ac_fn_c_try_compile "$LINENO"; then : 7533if ac_fn_c_try_compile "$LINENO"; then :
7499 7534
7500if `grep -i "unrecognized option" conftest.err >/dev/null` 7535if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
7501then 7536then
7502 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 7537 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7503$as_echo "no" >&6; } 7538$as_echo "no" >&6; }
@@ -10195,7 +10230,7 @@ fi
10195{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $func_calloc_0_nonnull" >&5 10230{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $func_calloc_0_nonnull" >&5
10196$as_echo "$func_calloc_0_nonnull" >&6; } 10231$as_echo "$func_calloc_0_nonnull" >&6; }
10197 10232
10198if test "x$func_calloc_0_nonnull" == "xyes"; then 10233if test "x$func_calloc_0_nonnull" = "xyes"; then
10199 10234
10200$as_echo "#define HAVE_CALLOC 1" >>confdefs.h 10235$as_echo "#define HAVE_CALLOC 1" >>confdefs.h
10201 10236
@@ -10387,94 +10422,6 @@ else
10387$as_echo "no" >&6; } 10422$as_echo "no" >&6; }
10388fi 10423fi
10389 10424
10390# Check whether user wants S/Key support
10391SKEY_MSG="no"
10392
10393# Check whether --with-skey was given.
10394if test "${with_skey+set}" = set; then :
10395 withval=$with_skey;
10396 if test "x$withval" != "xno" ; then
10397
10398 if test "x$withval" != "xyes" ; then
10399 CPPFLAGS="$CPPFLAGS -I${withval}/include"
10400 LDFLAGS="$LDFLAGS -L${withval}/lib"
10401 fi
10402
10403
10404$as_echo "#define SKEY 1" >>confdefs.h
10405
10406 LIBS="-lskey $LIBS"
10407 SKEY_MSG="yes"
10408
10409 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for s/key support" >&5
10410$as_echo_n "checking for s/key support... " >&6; }
10411 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10412/* end confdefs.h. */
10413
10414#include <stdio.h>
10415#include <skey.h>
10416
10417int
10418main ()
10419{
10420
10421 char *ff = skey_keyinfo(""); ff="";
10422 exit(0);
10423
10424 ;
10425 return 0;
10426}
10427_ACEOF
10428if ac_fn_c_try_link "$LINENO"; then :
10429 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
10430$as_echo "yes" >&6; }
10431else
10432
10433 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
10434$as_echo "no" >&6; }
10435 as_fn_error $? "** Incomplete or missing s/key libraries." "$LINENO" 5
10436
10437fi
10438rm -f core conftest.err conftest.$ac_objext \
10439 conftest$ac_exeext conftest.$ac_ext
10440 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if skeychallenge takes 4 arguments" >&5
10441$as_echo_n "checking if skeychallenge takes 4 arguments... " >&6; }
10442 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10443/* end confdefs.h. */
10444
10445#include <stdio.h>
10446#include <skey.h>
10447
10448int
10449main ()
10450{
10451
10452 (void)skeychallenge(NULL,"name","",0);
10453
10454 ;
10455 return 0;
10456}
10457_ACEOF
10458if ac_fn_c_try_compile "$LINENO"; then :
10459
10460 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
10461$as_echo "yes" >&6; }
10462
10463$as_echo "#define SKEYCHALLENGE_4ARG 1" >>confdefs.h
10464
10465else
10466
10467 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
10468$as_echo "no" >&6; }
10469
10470fi
10471rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10472 fi
10473
10474
10475fi
10476
10477
10478# Check whether user wants to use ldns 10425# Check whether user wants to use ldns
10479LDNS_MSG="no" 10426LDNS_MSG="no"
10480 10427
@@ -11074,7 +11021,7 @@ int main(int argc, char **argv) {
11074_ACEOF 11021_ACEOF
11075if ac_fn_c_try_compile "$LINENO"; then : 11022if ac_fn_c_try_compile "$LINENO"; then :
11076 11023
11077if `grep -i "unrecognized option" conftest.err >/dev/null` 11024if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
11078then 11025then
11079 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 11026 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11080$as_echo "no" >&6; } 11027$as_echo "no" >&6; }
@@ -11117,9 +11064,17 @@ int main(int argc, char **argv) {
11117 11064
11118_ACEOF 11065_ACEOF
11119if ac_fn_c_try_link "$LINENO"; then : 11066if ac_fn_c_try_link "$LINENO"; then :
11120 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 11067
11068if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
11069then
11070 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11071$as_echo "no" >&6; }
11072 LDFLAGS="$saved_LDFLAGS"
11073else
11074 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
11121$as_echo "yes" >&6; } 11075$as_echo "yes" >&6; }
11122 LDFLAGS="$saved_LDFLAGS $_define_flag" 11076 LDFLAGS="$saved_LDFLAGS $_define_flag"
11077fi
11123else 11078else
11124 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 11079 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11125$as_echo "no" >&6; } 11080$as_echo "no" >&6; }
@@ -11178,6 +11133,7 @@ for ac_func in \
11178 getaddrinfo \ 11133 getaddrinfo \
11179 getcwd \ 11134 getcwd \
11180 getgrouplist \ 11135 getgrouplist \
11136 getline \
11181 getnameinfo \ 11137 getnameinfo \
11182 getopt \ 11138 getopt \
11183 getpagesize \ 11139 getpagesize \
@@ -11186,6 +11142,7 @@ for ac_func in \
11186 getpgid \ 11142 getpgid \
11187 _getpty \ 11143 _getpty \
11188 getrlimit \ 11144 getrlimit \
11145 getrandom \
11189 getsid \ 11146 getsid \
11190 getttyent \ 11147 getttyent \
11191 glob \ 11148 glob \
@@ -13962,7 +13919,7 @@ LIBS="$saved_LIBS"
13962 13919
13963### Configure cryptographic random number support 13920### Configure cryptographic random number support
13964 13921
13965# Check wheter OpenSSL seeds itself 13922# Check whether OpenSSL seeds itself
13966if test "x$openssl" = "xyes" ; then 13923if test "x$openssl" = "xyes" ; then
13967 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's PRNG is internally seeded" >&5 13924 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's PRNG is internally seeded" >&5
13968$as_echo_n "checking whether OpenSSL's PRNG is internally seeded... " >&6; } 13925$as_echo_n "checking whether OpenSSL's PRNG is internally seeded... " >&6; }
@@ -16072,7 +16029,7 @@ _ACEOF
16072fi 16029fi
16073 16030
16074 16031
16075# We need int64_t or else certian parts of the compile will fail. 16032# We need int64_t or else certain parts of the compile will fail.
16076if test "x$ac_cv_have_int64_t" = "xno" && \ 16033if test "x$ac_cv_have_int64_t" = "xno" && \
16077 test "x$ac_cv_sizeof_long_int" != "x8" && \ 16034 test "x$ac_cv_sizeof_long_int" != "x8" && \
16078 test "x$ac_cv_sizeof_long_long_int" = "x0" ; then 16035 test "x$ac_cv_sizeof_long_long_int" = "x0" ; then
@@ -21030,7 +20987,6 @@ echo " PAM support: $PAM_MSG"
21030echo " OSF SIA support: $SIA_MSG" 20987echo " OSF SIA support: $SIA_MSG"
21031echo " KerberosV support: $KRB5_MSG" 20988echo " KerberosV support: $KRB5_MSG"
21032echo " SELinux support: $SELINUX_MSG" 20989echo " SELinux support: $SELINUX_MSG"
21033echo " S/KEY support: $SKEY_MSG"
21034echo " MD5 password support: $MD5_MSG" 20990echo " MD5 password support: $MD5_MSG"
21035echo " libedit support: $LIBEDIT_MSG" 20991echo " libedit support: $LIBEDIT_MSG"
21036echo " libldns support: $LDNS_MSG" 20992echo " libldns support: $LDNS_MSG"
diff --git a/configure.ac b/configure.ac
index 663062bef..83e530750 100644
--- a/configure.ac
+++ b/configure.ac
@@ -83,9 +83,11 @@ if test ! -z "$PATH_PASSWD_PROG" ; then
83 [Full path of your "passwd" program]) 83 [Full path of your "passwd" program])
84fi 84fi
85 85
86if test -z "$LD" ; then 86dnl Since autoconf doesn't support it very well, we no longer allow users to
87 LD=$CC 87dnl override LD, however keeping the hook here for now in case there's a use
88fi 88dnl use case we overlooked and someone needs to re-enable it. Unless a good
89dnl reason is found we'll be removing this in future.
90LD="$CC"
89AC_SUBST([LD]) 91AC_SUBST([LD])
90 92
91AC_C_INLINE 93AC_C_INLINE
@@ -162,8 +164,15 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
162 OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result]) 164 OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result])
163 OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing]) 165 OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing])
164 if test "x$use_toolchain_hardening" = "x1"; then 166 if test "x$use_toolchain_hardening" = "x1"; then
165 OSSH_CHECK_CFLAG_COMPILE([-mfunction-return=thunk]) # gcc 167 # Cygwin GCC 7.x allows thunking on the CLI, but produces non-working
166 OSSH_CHECK_CFLAG_COMPILE([-mindirect-branch=thunk]) # gcc 168 # code. Unfortunately you only notice this at link time.
169 case "$host" in
170 *-*-cygwin*) ;;
171 *)
172 OSSH_CHECK_CFLAG_COMPILE([-mfunction-return=thunk]) # gcc
173 OSSH_CHECK_CFLAG_COMPILE([-mindirect-branch=thunk]) # gcc
174 ;;
175 esac
167 OSSH_CHECK_CFLAG_COMPILE([-mretpoline]) # clang 176 OSSH_CHECK_CFLAG_COMPILE([-mretpoline]) # clang
168 OSSH_CHECK_LDFLAG_LINK([-Wl,-z,retpolineplt]) 177 OSSH_CHECK_LDFLAG_LINK([-Wl,-z,retpolineplt])
169 OSSH_CHECK_CFLAG_COMPILE([-D_FORTIFY_SOURCE=2]) 178 OSSH_CHECK_CFLAG_COMPILE([-D_FORTIFY_SOURCE=2])
@@ -274,7 +283,7 @@ typedef void foo(const char *, ...) __attribute__((format(printf, 1, 2)));]],
274 [ AC_MSG_RESULT([yes]) ], 283 [ AC_MSG_RESULT([yes]) ],
275 [ AC_MSG_RESULT([no]) 284 [ AC_MSG_RESULT([no])
276 AC_DEFINE(NO_ATTRIBUTE_ON_PROTOTYPE_ARGS, 1, 285 AC_DEFINE(NO_ATTRIBUTE_ON_PROTOTYPE_ARGS, 1,
277 [compiler does not accept __attribute__ on protoype args]) ] 286 [compiler does not accept __attribute__ on prototype args]) ]
278) 287)
279 288
280if test "x$no_attrib_nonnull" != "x1" ; then 289if test "x$no_attrib_nonnull" != "x1" ; then
@@ -413,6 +422,7 @@ AC_CHECK_HEADERS([ \
413 sys/prctl.h \ 422 sys/prctl.h \
414 sys/pstat.h \ 423 sys/pstat.h \
415 sys/ptrace.h \ 424 sys/ptrace.h \
425 sys/random.h \
416 sys/select.h \ 426 sys/select.h \
417 sys/stat.h \ 427 sys/stat.h \
418 sys/stream.h \ 428 sys/stream.h \
@@ -514,7 +524,7 @@ case "$host" in
514 # Some versions of VAC won't allow macro redefinitions at 524 # Some versions of VAC won't allow macro redefinitions at
515 # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that 525 # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that
516 # particularly with older versions of vac or xlc. 526 # particularly with older versions of vac or xlc.
517 # It also throws errors about null macro argments, but these are 527 # It also throws errors about null macro arguments, but these are
518 # not fatal. 528 # not fatal.
519 AC_MSG_CHECKING([if compiler allows macro redefinitions]) 529 AC_MSG_CHECKING([if compiler allows macro redefinitions])
520 AC_COMPILE_IFELSE( 530 AC_COMPILE_IFELSE(
@@ -525,7 +535,6 @@ case "$host" in
525 [ AC_MSG_RESULT([yes]) ], 535 [ AC_MSG_RESULT([yes]) ],
526 [ AC_MSG_RESULT([no]) 536 [ AC_MSG_RESULT([no])
527 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`" 537 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
528 LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`"
529 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`" 538 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
530 CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`" 539 CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`"
531 ] 540 ]
@@ -753,7 +762,7 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
753 PATH="$PATH:/usr/etc" 762 PATH="$PATH:/usr/etc"
754 AC_DEFINE([WITH_IRIX_ARRAY], [1], 763 AC_DEFINE([WITH_IRIX_ARRAY], [1],
755 [Define if you have/want arrays 764 [Define if you have/want arrays
756 (cluster-wide session managment, not C arrays)]) 765 (cluster-wide session management, not C arrays)])
757 AC_DEFINE([WITH_IRIX_PROJECT], [1], 766 AC_DEFINE([WITH_IRIX_PROJECT], [1],
758 [Define if you want IRIX project management]) 767 [Define if you want IRIX project management])
759 AC_DEFINE([WITH_IRIX_AUDIT], [1], 768 AC_DEFINE([WITH_IRIX_AUDIT], [1],
@@ -1398,7 +1407,7 @@ AC_RUN_IFELSE(
1398) 1407)
1399AC_MSG_RESULT([$func_calloc_0_nonnull]) 1408AC_MSG_RESULT([$func_calloc_0_nonnull])
1400 1409
1401if test "x$func_calloc_0_nonnull" == "xyes"; then 1410if test "x$func_calloc_0_nonnull" = "xyes"; then
1402 AC_DEFINE(HAVE_CALLOC, 1, [calloc(0, x) returns non-null]) 1411 AC_DEFINE(HAVE_CALLOC, 1, [calloc(0, x) returns non-null])
1403else 1412else
1404 AC_DEFINE(HAVE_CALLOC, 0, [calloc(0, x) returns NULL]) 1413 AC_DEFINE(HAVE_CALLOC, 0, [calloc(0, x) returns NULL])
@@ -1493,55 +1502,6 @@ else
1493 AC_MSG_RESULT([no]) 1502 AC_MSG_RESULT([no])
1494fi 1503fi
1495 1504
1496# Check whether user wants S/Key support
1497SKEY_MSG="no"
1498AC_ARG_WITH([skey],
1499 [ --with-skey[[=PATH]] Enable S/Key support (optionally in PATH)],
1500 [
1501 if test "x$withval" != "xno" ; then
1502
1503 if test "x$withval" != "xyes" ; then
1504 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1505 LDFLAGS="$LDFLAGS -L${withval}/lib"
1506 fi
1507
1508 AC_DEFINE([SKEY], [1], [Define if you want S/Key support])
1509 LIBS="-lskey $LIBS"
1510 SKEY_MSG="yes"
1511
1512 AC_MSG_CHECKING([for s/key support])
1513 AC_LINK_IFELSE(
1514 [AC_LANG_PROGRAM([[
1515#include <stdio.h>
1516#include <skey.h>
1517 ]], [[
1518 char *ff = skey_keyinfo(""); ff="";
1519 exit(0);
1520 ]])],
1521 [AC_MSG_RESULT([yes])],
1522 [
1523 AC_MSG_RESULT([no])
1524 AC_MSG_ERROR([** Incomplete or missing s/key libraries.])
1525 ])
1526 AC_MSG_CHECKING([if skeychallenge takes 4 arguments])
1527 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1528#include <stdio.h>
1529#include <skey.h>
1530 ]], [[
1531 (void)skeychallenge(NULL,"name","",0);
1532 ]])],
1533 [
1534 AC_MSG_RESULT([yes])
1535 AC_DEFINE([SKEYCHALLENGE_4ARG], [1],
1536 [Define if your skeychallenge()
1537 function takes 4 arguments (NetBSD)])],
1538 [
1539 AC_MSG_RESULT([no])
1540 ])
1541 fi
1542 ]
1543)
1544
1545# Check whether user wants to use ldns 1505# Check whether user wants to use ldns
1546LDNS_MSG="no" 1506LDNS_MSG="no"
1547AC_ARG_WITH(ldns, 1507AC_ARG_WITH(ldns,
@@ -1778,6 +1738,7 @@ AC_CHECK_FUNCS([ \
1778 getaddrinfo \ 1738 getaddrinfo \
1779 getcwd \ 1739 getcwd \
1780 getgrouplist \ 1740 getgrouplist \
1741 getline \
1781 getnameinfo \ 1742 getnameinfo \
1782 getopt \ 1743 getopt \
1783 getpagesize \ 1744 getpagesize \
@@ -1786,6 +1747,7 @@ AC_CHECK_FUNCS([ \
1786 getpgid \ 1747 getpgid \
1787 _getpty \ 1748 _getpty \
1788 getrlimit \ 1749 getrlimit \
1750 getrandom \
1789 getsid \ 1751 getsid \
1790 getttyent \ 1752 getttyent \
1791 glob \ 1753 glob \
@@ -3005,7 +2967,7 @@ LIBS="$saved_LIBS"
3005 2967
3006### Configure cryptographic random number support 2968### Configure cryptographic random number support
3007 2969
3008# Check wheter OpenSSL seeds itself 2970# Check whether OpenSSL seeds itself
3009if test "x$openssl" = "xyes" ; then 2971if test "x$openssl" = "xyes" ; then
3010 AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded]) 2972 AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
3011 AC_RUN_IFELSE( 2973 AC_RUN_IFELSE(
@@ -3904,7 +3866,7 @@ fi
3904 3866
3905AC_CHECK_TYPES([struct timespec]) 3867AC_CHECK_TYPES([struct timespec])
3906 3868
3907# We need int64_t or else certian parts of the compile will fail. 3869# We need int64_t or else certain parts of the compile will fail.
3908if test "x$ac_cv_have_int64_t" = "xno" && \ 3870if test "x$ac_cv_have_int64_t" = "xno" && \
3909 test "x$ac_cv_sizeof_long_int" != "x8" && \ 3871 test "x$ac_cv_sizeof_long_int" != "x8" && \
3910 test "x$ac_cv_sizeof_long_long_int" = "x0" ; then 3872 test "x$ac_cv_sizeof_long_long_int" = "x0" ; then
@@ -5215,7 +5177,6 @@ echo " PAM support: $PAM_MSG"
5215echo " OSF SIA support: $SIA_MSG" 5177echo " OSF SIA support: $SIA_MSG"
5216echo " KerberosV support: $KRB5_MSG" 5178echo " KerberosV support: $KRB5_MSG"
5217echo " SELinux support: $SELINUX_MSG" 5179echo " SELinux support: $SELINUX_MSG"
5218echo " S/KEY support: $SKEY_MSG"
5219echo " MD5 password support: $MD5_MSG" 5180echo " MD5 password support: $MD5_MSG"
5220echo " libedit support: $LIBEDIT_MSG" 5181echo " libedit support: $LIBEDIT_MSG"
5221echo " libldns support: $LDNS_MSG" 5182echo " libldns support: $LDNS_MSG"
diff --git a/contrib/aix/buildbff.sh b/contrib/aix/buildbff.sh
index 00b384dc7..55113d9d3 100755
--- a/contrib/aix/buildbff.sh
+++ b/contrib/aix/buildbff.sh
@@ -240,21 +240,7 @@ echo
240 240
241# Generate keys unless they already exist 241# Generate keys unless they already exist
242echo Creating host keys if required. 242echo Creating host keys if required.
243if [ -f "$sysconfdir/ssh_host_key" ] ; then 243$bindir/ssh-keygen -A
244 echo "$sysconfdir/ssh_host_key already exists, skipping."
245else
246 $bindir/ssh-keygen -t rsa1 -f $sysconfdir/ssh_host_key -N ""
247fi
248if [ -f $sysconfdir/ssh_host_dsa_key ] ; then
249 echo "$sysconfdir/ssh_host_dsa_key already exists, skipping."
250else
251 $bindir/ssh-keygen -t dsa -f $sysconfdir/ssh_host_dsa_key -N ""
252fi
253if [ -f $sysconfdir/ssh_host_rsa_key ] ; then
254 echo "$sysconfdir/ssh_host_rsa_key already exists, skipping."
255else
256 $bindir/ssh-keygen -t rsa -f $sysconfdir/ssh_host_rsa_key -N ""
257fi
258echo 244echo
259 245
260# Set startup command depending on SRC support 246# Set startup command depending on SRC support
diff --git a/contrib/cygwin/ssh-host-config b/contrib/cygwin/ssh-host-config
index db6aaa08a..261020af3 100644
--- a/contrib/cygwin/ssh-host-config
+++ b/contrib/cygwin/ssh-host-config
@@ -22,7 +22,7 @@
22 22
23CSIH_SCRIPT=/usr/share/csih/cygwin-service-installation-helper.sh 23CSIH_SCRIPT=/usr/share/csih/cygwin-service-installation-helper.sh
24 24
25# List of apps used. This is checkad for existance in csih_sanity_check 25# List of apps used. This is checkad for existence in csih_sanity_check
26# Don't use *any* transient commands before sourcing the csih helper script, 26# Don't use *any* transient commands before sourcing the csih helper script,
27# otherwise the sanity checks are short-circuited. 27# otherwise the sanity checks are short-circuited.
28declare -a csih_required_commands=( 28declare -a csih_required_commands=(
diff --git a/contrib/cygwin/ssh-user-config b/contrib/cygwin/ssh-user-config
index 33dc0cbea..6fa4bb3ea 100644
--- a/contrib/cygwin/ssh-user-config
+++ b/contrib/cygwin/ssh-user-config
@@ -127,7 +127,7 @@ readonly -f check_user_homedir
127check_user_dot_ssh_dir() { 127check_user_dot_ssh_dir() {
128 if [ -e "${pwdhome}/.ssh" -a ! -d "${pwdhome}/.ssh" ] 128 if [ -e "${pwdhome}/.ssh" -a ! -d "${pwdhome}/.ssh" ]
129 then 129 then
130 csih_error "${pwdhome}/.ssh is existant but not a directory. Cannot create user identity files." 130 csih_error "${pwdhome}/.ssh is existent but not a directory. Cannot create user identity files."
131 fi 131 fi
132 132
133 if [ ! -e "${pwdhome}/.ssh" ] 133 if [ ! -e "${pwdhome}/.ssh" ]
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec
index a0d5e2071..8e9594d9c 100644
--- a/contrib/redhat/openssh.spec
+++ b/contrib/redhat/openssh.spec
@@ -1,4 +1,4 @@
1%define ver 7.7p1 1%define ver 7.8p1
2%define rel 1%{?dist} 2%define rel 1%{?dist}
3 3
4# OpenSSH privilege separation requires a user & group ID 4# OpenSSH privilege separation requires a user & group ID
diff --git a/contrib/solaris/README b/contrib/solaris/README
index fefdd4b53..cabecaa1a 100644
--- a/contrib/solaris/README
+++ b/contrib/solaris/README
@@ -5,7 +5,7 @@ SVR4 style package tools.
5 5
6The build process is called a 'dummy install'.. Which means the software does 6The build process is called a 'dummy install'.. Which means the software does
7a "make install-nokeys DESTDIR=[fakeroot]". This way all manpages should 7a "make install-nokeys DESTDIR=[fakeroot]". This way all manpages should
8be handled correctly and key are defered until the first time the sshd 8be handled correctly and key are deferred until the first time the sshd
9is started. 9is started.
10 10
11Directions: 11Directions:
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec
index d9c4298f1..9a1168f01 100644
--- a/contrib/suse/openssh.spec
+++ b/contrib/suse/openssh.spec
@@ -13,7 +13,7 @@
13 13
14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation 14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
15Name: openssh 15Name: openssh
16Version: 7.7p1 16Version: 7.8p1
17URL: https://www.openssh.com/ 17URL: https://www.openssh.com/
18Release: 1 18Release: 1
19Source0: openssh-%{version}.tar.gz 19Source0: openssh-%{version}.tar.gz
@@ -56,7 +56,7 @@ arbitrary TCP/IP ports can also be forwarded over the secure channel.
56 56
57OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it 57OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it
58up to date in terms of security and features, as well as removing all 58up to date in terms of security and features, as well as removing all
59patented algorithms to seperate libraries (OpenSSL). 59patented algorithms to separate libraries (OpenSSL).
60 60
61This package includes all files necessary for both the OpenSSH 61This package includes all files necessary for both the OpenSSH
62client and server. 62client and server.
@@ -70,7 +70,7 @@ arbitrary TCP/IP ports can also be forwarded over the secure channel.
70 70
71OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it 71OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it
72up to date in terms of security and features, as well as removing all 72up to date in terms of security and features, as well as removing all
73patented algorithms to seperate libraries (OpenSSL). 73patented algorithms to separate libraries (OpenSSL).
74 74
75This package contains an X Window System passphrase dialog for OpenSSH. 75This package contains an X Window System passphrase dialog for OpenSSH.
76 76
diff --git a/defines.h b/defines.h
index 3fa5ec5a9..8f4213062 100644
--- a/defines.h
+++ b/defines.h
@@ -660,12 +660,6 @@ struct winsize {
660# define krb5_get_err_text(context,code) error_message(code) 660# define krb5_get_err_text(context,code) error_message(code)
661#endif 661#endif
662 662
663#if defined(SKEYCHALLENGE_4ARG)
664# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c,d)
665#else
666# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c)
667#endif
668
669/* Maximum number of file descriptors available */ 663/* Maximum number of file descriptors available */
670#ifdef HAVE_SYSCONF 664#ifdef HAVE_SYSCONF
671# define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX) 665# define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX)
diff --git a/dh.c b/dh.c
index 46afba033..ac8d5a0ae 100644
--- a/dh.c
+++ b/dh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dh.c,v 1.63 2018/02/07 02:06:50 jsing Exp $ */ 1/* $OpenBSD: dh.c,v 1.66 2018/08/04 00:55:06 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * 4 *
@@ -145,9 +145,9 @@ DH *
145choose_dh(int min, int wantbits, int max) 145choose_dh(int min, int wantbits, int max)
146{ 146{
147 FILE *f; 147 FILE *f;
148 char line[4096]; 148 char *line = NULL;
149 int best, bestcount, which; 149 size_t linesize = 0;
150 int linenum; 150 int best, bestcount, which, linenum;
151 struct dhgroup dhg; 151 struct dhgroup dhg;
152 152
153 if ((f = fopen(_PATH_DH_MODULI, "r")) == NULL) { 153 if ((f = fopen(_PATH_DH_MODULI, "r")) == NULL) {
@@ -158,7 +158,7 @@ choose_dh(int min, int wantbits, int max)
158 158
159 linenum = 0; 159 linenum = 0;
160 best = bestcount = 0; 160 best = bestcount = 0;
161 while (fgets(line, sizeof(line), f)) { 161 while (getline(&line, &linesize, f) != -1) {
162 linenum++; 162 linenum++;
163 if (!parse_prime(linenum, line, &dhg)) 163 if (!parse_prime(linenum, line, &dhg))
164 continue; 164 continue;
@@ -176,6 +176,9 @@ choose_dh(int min, int wantbits, int max)
176 if (dhg.size == best) 176 if (dhg.size == best)
177 bestcount++; 177 bestcount++;
178 } 178 }
179 free(line);
180 line = NULL;
181 linesize = 0;
179 rewind(f); 182 rewind(f);
180 183
181 if (bestcount == 0) { 184 if (bestcount == 0) {
@@ -186,7 +189,7 @@ choose_dh(int min, int wantbits, int max)
186 189
187 linenum = 0; 190 linenum = 0;
188 which = arc4random_uniform(bestcount); 191 which = arc4random_uniform(bestcount);
189 while (fgets(line, sizeof(line), f)) { 192 while (getline(&line, &linesize, f) != -1) {
190 if (!parse_prime(linenum, line, &dhg)) 193 if (!parse_prime(linenum, line, &dhg))
191 continue; 194 continue;
192 if ((dhg.size > max || dhg.size < min) || 195 if ((dhg.size > max || dhg.size < min) ||
@@ -198,6 +201,8 @@ choose_dh(int min, int wantbits, int max)
198 } 201 }
199 break; 202 break;
200 } 203 }
204 free(line);
205 line = NULL;
201 fclose(f); 206 fclose(f);
202 if (linenum != which+1) { 207 if (linenum != which+1) {
203 logit("WARNING: line %d disappeared in %s, giving up", 208 logit("WARNING: line %d disappeared in %s, giving up",
@@ -274,6 +279,7 @@ dh_gen_key(DH *dh, int need)
274 if (DH_generate_key(dh) == 0 || 279 if (DH_generate_key(dh) == 0 ||
275 !dh_pub_is_valid(dh, dh->pub_key)) { 280 !dh_pub_is_valid(dh, dh->pub_key)) {
276 BN_clear_free(dh->priv_key); 281 BN_clear_free(dh->priv_key);
282 dh->priv_key = NULL;
277 return SSH_ERR_LIBCRYPTO_ERROR; 283 return SSH_ERR_LIBCRYPTO_ERROR;
278 } 284 }
279 return 0; 285 return 0;
diff --git a/entropy.c b/entropy.c
index 14b98f188..c178c00cf 100644
--- a/entropy.c
+++ b/entropy.c
@@ -53,7 +53,8 @@
53#include "atomicio.h" 53#include "atomicio.h"
54#include "pathnames.h" 54#include "pathnames.h"
55#include "log.h" 55#include "log.h"
56#include "buffer.h" 56#include "sshbuf.h"
57#include "ssherr.h"
57 58
58/* 59/*
59 * Portable OpenSSH PRNG seeding: 60 * Portable OpenSSH PRNG seeding:
@@ -181,29 +182,34 @@ seed_from_prngd(unsigned char *buf, size_t bytes)
181} 182}
182 183
183void 184void
184rexec_send_rng_seed(Buffer *m) 185rexec_send_rng_seed(struct sshbuf *m)
185{ 186{
186 u_char buf[RANDOM_SEED_SIZE]; 187 u_char buf[RANDOM_SEED_SIZE];
188 size_t len = sizeof(buf);
189 int r;
187 190
188 if (RAND_bytes(buf, sizeof(buf)) <= 0) { 191 if (RAND_bytes(buf, sizeof(buf)) <= 0) {
189 error("Couldn't obtain random bytes (error %ld)", 192 error("Couldn't obtain random bytes (error %ld)",
190 ERR_get_error()); 193 ERR_get_error());
191 buffer_put_string(m, "", 0); 194 len = 0;
192 } else 195 }
193 buffer_put_string(m, buf, sizeof(buf)); 196 if ((r = sshbuf_put_string(m, buf, len)) != 0)
197 fatal("%s: buffer error: %s", __func__, ssh_err(r));
198 explicit_bzero(buf, sizeof(buf));
194} 199}
195 200
196void 201void
197rexec_recv_rng_seed(Buffer *m) 202rexec_recv_rng_seed(struct sshbuf *m)
198{ 203{
199 u_char *buf; 204 u_char *buf = NULL;
200 u_int len; 205 size_t len = 0;
206 int r;
201 207
202 buf = buffer_get_string_ret(m, &len); 208 if ((r = sshbuf_get_string_direct(m, &buf, &len)) != 0
203 if (buf != NULL) { 209 fatal("%s: buffer error: %s", __func__, ssh_err(r));
204 debug3("rexec_recv_rng_seed: seeding rng with %u bytes", len); 210
205 RAND_add(buf, len, len); 211 debug3("rexec_recv_rng_seed: seeding rng with %u bytes", len);
206 } 212 RAND_add(buf, len, len);
207} 213}
208#endif /* OPENSSL_PRNG_ONLY */ 214#endif /* OPENSSL_PRNG_ONLY */
209 215
diff --git a/entropy.h b/entropy.h
index 9d5285b29..870164d30 100644
--- a/entropy.h
+++ b/entropy.h
@@ -25,11 +25,10 @@
25#ifndef _RANDOMS_H 25#ifndef _RANDOMS_H
26#define _RANDOMS_H 26#define _RANDOMS_H
27 27
28#include "buffer.h" 28struct sshbuf;
29 29
30void seed_rng(void); 30void seed_rng(void);
31 31void rexec_send_rng_seed(struct sshbuf *);
32void rexec_send_rng_seed(Buffer *); 32void rexec_recv_rng_seed(struct sshbuf *);
33void rexec_recv_rng_seed(Buffer *);
34 33
35#endif /* _RANDOMS_H */ 34#endif /* _RANDOMS_H */
diff --git a/gss-genr.c b/gss-genr.c
index 62559ed9e..d56257b4a 100644
--- a/gss-genr.c
+++ b/gss-genr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gss-genr.c,v 1.24 2016/09/12 01:22:38 deraadt Exp $ */ 1/* $OpenBSD: gss-genr.c,v 1.26 2018/07/10 09:13:30 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved. 4 * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved.
@@ -37,7 +37,8 @@
37#include <unistd.h> 37#include <unistd.h>
38 38
39#include "xmalloc.h" 39#include "xmalloc.h"
40#include "buffer.h" 40#include "ssherr.h"
41#include "sshbuf.h"
41#include "log.h" 42#include "log.h"
42#include "ssh2.h" 43#include "ssh2.h"
43 44
@@ -46,6 +47,21 @@
46extern u_char *session_id2; 47extern u_char *session_id2;
47extern u_int session_id2_len; 48extern u_int session_id2_len;
48 49
50/* sshbuf_get for gss_buffer_desc */
51int
52ssh_gssapi_get_buffer_desc(struct sshbuf *b, gss_buffer_desc *g)
53{
54 int r;
55 u_char *p;
56 size_t len;
57
58 if ((r = sshbuf_get_string(b, &p, &len)) != 0)
59 return r;
60 g->value = p;
61 g->length = len;
62 return 0;
63}
64
49/* Check that the OID in a data stream matches that in the context */ 65/* Check that the OID in a data stream matches that in the context */
50int 66int
51ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len) 67ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len)
@@ -94,10 +110,12 @@ ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status,
94 OM_uint32 lmin; 110 OM_uint32 lmin;
95 gss_buffer_desc msg = GSS_C_EMPTY_BUFFER; 111 gss_buffer_desc msg = GSS_C_EMPTY_BUFFER;
96 OM_uint32 ctx; 112 OM_uint32 ctx;
97 Buffer b; 113 struct sshbuf *b;
98 char *ret; 114 char *ret;
115 int r;
99 116
100 buffer_init(&b); 117 if ((b = sshbuf_new()) == NULL)
118 fatal("%s: sshbuf_new failed", __func__);
101 119
102 if (major_status != NULL) 120 if (major_status != NULL)
103 *major_status = ctxt->major; 121 *major_status = ctxt->major;
@@ -110,8 +128,9 @@ ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status,
110 gss_display_status(&lmin, ctxt->major, 128 gss_display_status(&lmin, ctxt->major,
111 GSS_C_GSS_CODE, ctxt->oid, &ctx, &msg); 129 GSS_C_GSS_CODE, ctxt->oid, &ctx, &msg);
112 130
113 buffer_append(&b, msg.value, msg.length); 131 if ((r = sshbuf_put(b, msg.value, msg.length)) != 0 ||
114 buffer_put_char(&b, '\n'); 132 (r = sshbuf_put_u8(b, '\n')) != 0)
133 fatal("%s: buffer error: %s", __func__, ssh_err(r));
115 134
116 gss_release_buffer(&lmin, &msg); 135 gss_release_buffer(&lmin, &msg);
117 } while (ctx != 0); 136 } while (ctx != 0);
@@ -121,16 +140,17 @@ ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status,
121 gss_display_status(&lmin, ctxt->minor, 140 gss_display_status(&lmin, ctxt->minor,
122 GSS_C_MECH_CODE, ctxt->oid, &ctx, &msg); 141 GSS_C_MECH_CODE, ctxt->oid, &ctx, &msg);
123 142
124 buffer_append(&b, msg.value, msg.length); 143 if ((r = sshbuf_put(b, msg.value, msg.length)) != 0 ||
125 buffer_put_char(&b, '\n'); 144 (r = sshbuf_put_u8(b, '\n')) != 0)
145 fatal("%s: buffer error: %s", __func__, ssh_err(r));
126 146
127 gss_release_buffer(&lmin, &msg); 147 gss_release_buffer(&lmin, &msg);
128 } while (ctx != 0); 148 } while (ctx != 0);
129 149
130 buffer_put_char(&b, '\0'); 150 if ((r = sshbuf_put_u8(b, '\n')) != 0)
131 ret = xmalloc(buffer_len(&b)); 151 fatal("%s: buffer error: %s", __func__, ssh_err(r));
132 buffer_get(&b, ret, buffer_len(&b)); 152 ret = xstrdup((const char *)sshbuf_ptr(b));
133 buffer_free(&b); 153 sshbuf_free(b);
134 return (ret); 154 return (ret);
135} 155}
136 156
@@ -238,15 +258,18 @@ ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash)
238} 258}
239 259
240void 260void
241ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service, 261ssh_gssapi_buildmic(struct sshbuf *b, const char *user, const char *service,
242 const char *context) 262 const char *context)
243{ 263{
244 buffer_init(b); 264 int r;
245 buffer_put_string(b, session_id2, session_id2_len); 265
246 buffer_put_char(b, SSH2_MSG_USERAUTH_REQUEST); 266 sshbuf_reset(b);
247 buffer_put_cstring(b, user); 267 if ((r = sshbuf_put_string(b, session_id2, session_id2_len)) != 0 ||
248 buffer_put_cstring(b, service); 268 (r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
249 buffer_put_cstring(b, context); 269 (r = sshbuf_put_cstring(b, user)) != 0 ||
270 (r = sshbuf_put_cstring(b, service)) != 0 ||
271 (r = sshbuf_put_cstring(b, context)) != 0)
272 fatal("%s: buffer error: %s", __func__, ssh_err(r));
250} 273}
251 274
252int 275int
diff --git a/gss-serv-krb5.c b/gss-serv-krb5.c
index 795992d9f..a151bc1e4 100644
--- a/gss-serv-krb5.c
+++ b/gss-serv-krb5.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gss-serv-krb5.c,v 1.8 2013/07/20 01:55:13 djm Exp $ */ 1/* $OpenBSD: gss-serv-krb5.c,v 1.9 2018/07/09 21:37:55 markus Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. 4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -35,14 +35,13 @@
35#include <string.h> 35#include <string.h>
36 36
37#include "xmalloc.h" 37#include "xmalloc.h"
38#include "key.h" 38#include "sshkey.h"
39#include "hostfile.h" 39#include "hostfile.h"
40#include "auth.h" 40#include "auth.h"
41#include "log.h" 41#include "log.h"
42#include "misc.h" 42#include "misc.h"
43#include "servconf.h" 43#include "servconf.h"
44 44
45#include "buffer.h"
46#include "ssh-gss.h" 45#include "ssh-gss.h"
47 46
48extern ServerOptions options; 47extern ServerOptions options;
diff --git a/gss-serv.c b/gss-serv.c
index 6cae720e5..ab3a15f0f 100644
--- a/gss-serv.c
+++ b/gss-serv.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gss-serv.c,v 1.30 2017/06/24 06:34:38 djm Exp $ */ 1/* $OpenBSD: gss-serv.c,v 1.31 2018/07/09 21:37:55 markus Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. 4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -36,8 +36,7 @@
36 36
37#include "openbsd-compat/sys-queue.h" 37#include "openbsd-compat/sys-queue.h"
38#include "xmalloc.h" 38#include "xmalloc.h"
39#include "buffer.h" 39#include "sshkey.h"
40#include "key.h"
41#include "hostfile.h" 40#include "hostfile.h"
42#include "auth.h" 41#include "auth.h"
43#include "log.h" 42#include "log.h"
diff --git a/hostfile.c b/hostfile.c
index 12f174ff9..e1f826bdd 100644
--- a/hostfile.c
+++ b/hostfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: hostfile.c,v 1.71 2017/05/31 09:15:42 deraadt Exp $ */ 1/* $OpenBSD: hostfile.c,v 1.73 2018/07/16 03:09:13 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -663,14 +663,14 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx,
663 const char *host, const char *ip, u_int options) 663 const char *host, const char *ip, u_int options)
664{ 664{
665 FILE *f; 665 FILE *f;
666 char line[8192], oline[8192], ktype[128]; 666 char *line = NULL, ktype[128];
667 u_long linenum = 0; 667 u_long linenum = 0;
668 char *cp, *cp2; 668 char *cp, *cp2;
669 u_int kbits; 669 u_int kbits;
670 int hashed; 670 int hashed;
671 int s, r = 0; 671 int s, r = 0;
672 struct hostkey_foreach_line lineinfo; 672 struct hostkey_foreach_line lineinfo;
673 size_t l; 673 size_t linesize = 0, l;
674 674
675 memset(&lineinfo, 0, sizeof(lineinfo)); 675 memset(&lineinfo, 0, sizeof(lineinfo));
676 if (host == NULL && (options & HKF_WANT_MATCH) != 0) 676 if (host == NULL && (options & HKF_WANT_MATCH) != 0)
@@ -679,15 +679,16 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx,
679 return SSH_ERR_SYSTEM_ERROR; 679 return SSH_ERR_SYSTEM_ERROR;
680 680
681 debug3("%s: reading file \"%s\"", __func__, path); 681 debug3("%s: reading file \"%s\"", __func__, path);
682 while (read_keyfile_line(f, path, line, sizeof(line), &linenum) == 0) { 682 while (getline(&line, &linesize, f) != -1) {
683 linenum++;
683 line[strcspn(line, "\n")] = '\0'; 684 line[strcspn(line, "\n")] = '\0';
684 strlcpy(oline, line, sizeof(oline));
685 685
686 free(lineinfo.line);
686 sshkey_free(lineinfo.key); 687 sshkey_free(lineinfo.key);
687 memset(&lineinfo, 0, sizeof(lineinfo)); 688 memset(&lineinfo, 0, sizeof(lineinfo));
688 lineinfo.path = path; 689 lineinfo.path = path;
689 lineinfo.linenum = linenum; 690 lineinfo.linenum = linenum;
690 lineinfo.line = oline; 691 lineinfo.line = xstrdup(line);
691 lineinfo.marker = MRK_NONE; 692 lineinfo.marker = MRK_NONE;
692 lineinfo.status = HKF_STATUS_OK; 693 lineinfo.status = HKF_STATUS_OK;
693 lineinfo.keytype = KEY_UNSPEC; 694 lineinfo.keytype = KEY_UNSPEC;
@@ -826,6 +827,8 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx,
826 break; 827 break;
827 } 828 }
828 sshkey_free(lineinfo.key); 829 sshkey_free(lineinfo.key);
830 free(lineinfo.line);
831 free(line);
829 fclose(f); 832 fclose(f);
830 return r; 833 return r;
831} 834}
diff --git a/kex.c b/kex.c
index 15ea28b07..25f9f66f6 100644
--- a/kex.c
+++ b/kex.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kex.c,v 1.136 2018/02/07 02:06:50 jsing Exp $ */ 1/* $OpenBSD: kex.c,v 1.141 2018/07/09 13:37:10 sf Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -174,7 +174,7 @@ kex_names_cat(const char *a, const char *b)
174 size_t len; 174 size_t len;
175 175
176 if (a == NULL || *a == '\0') 176 if (a == NULL || *a == '\0')
177 return NULL; 177 return strdup(b);
178 if (b == NULL || *b == '\0') 178 if (b == NULL || *b == '\0')
179 return strdup(a); 179 return strdup(a);
180 if (strlen(b) > 1024*1024) 180 if (strlen(b) > 1024*1024)
@@ -209,27 +209,88 @@ kex_names_cat(const char *a, const char *b)
209 * specified names should be removed. 209 * specified names should be removed.
210 */ 210 */
211int 211int
212kex_assemble_names(const char *def, char **list) 212kex_assemble_names(char **listp, const char *def, const char *all)
213{ 213{
214 char *ret; 214 char *cp, *tmp, *patterns;
215 char *list = NULL, *ret = NULL, *matching = NULL, *opatterns = NULL;
216 int r = SSH_ERR_INTERNAL_ERROR;
215 217
216 if (list == NULL || *list == NULL || **list == '\0') { 218 if (listp == NULL || *listp == NULL || **listp == '\0') {
217 *list = strdup(def); 219 if ((*listp = strdup(def)) == NULL)
220 return SSH_ERR_ALLOC_FAIL;
218 return 0; 221 return 0;
219 } 222 }
220 if (**list == '+') { 223
221 if ((ret = kex_names_cat(def, *list + 1)) == NULL) 224 list = *listp;
222 return SSH_ERR_ALLOC_FAIL; 225 *listp = NULL;
223 free(*list); 226 if (*list == '+') {
224 *list = ret; 227 /* Append names to default list */
225 } else if (**list == '-') { 228 if ((tmp = kex_names_cat(def, list + 1)) == NULL) {
226 if ((ret = match_filter_list(def, *list + 1)) == NULL) 229 r = SSH_ERR_ALLOC_FAIL;
227 return SSH_ERR_ALLOC_FAIL; 230 goto fail;
228 free(*list); 231 }
229 *list = ret; 232 free(list);
233 list = tmp;
234 } else if (*list == '-') {
235 /* Remove names from default list */
236 if ((*listp = match_filter_blacklist(def, list + 1)) == NULL) {
237 r = SSH_ERR_ALLOC_FAIL;
238 goto fail;
239 }
240 free(list);
241 /* filtering has already been done */
242 return 0;
243 } else {
244 /* Explicit list, overrides default - just use "list" as is */
230 } 245 }
231 246
232 return 0; 247 /*
248 * The supplied names may be a pattern-list. For the -list case,
249 * the patterns are applied above. For the +list and explicit list
250 * cases we need to do it now.
251 */
252 ret = NULL;
253 if ((patterns = opatterns = strdup(list)) == NULL) {
254 r = SSH_ERR_ALLOC_FAIL;
255 goto fail;
256 }
257 /* Apply positive (i.e. non-negated) patterns from the list */
258 while ((cp = strsep(&patterns, ",")) != NULL) {
259 if (*cp == '!') {
260 /* negated matches are not supported here */
261 r = SSH_ERR_INVALID_ARGUMENT;
262 goto fail;
263 }
264 free(matching);
265 if ((matching = match_filter_whitelist(all, cp)) == NULL) {
266 r = SSH_ERR_ALLOC_FAIL;
267 goto fail;
268 }
269 if ((tmp = kex_names_cat(ret, matching)) == NULL) {
270 r = SSH_ERR_ALLOC_FAIL;
271 goto fail;
272 }
273 free(ret);
274 ret = tmp;
275 }
276 if (ret == NULL || *ret == '\0') {
277 /* An empty name-list is an error */
278 /* XXX better error code? */
279 r = SSH_ERR_INVALID_ARGUMENT;
280 goto fail;
281 }
282
283 /* success */
284 *listp = ret;
285 ret = NULL;
286 r = 0;
287
288 fail:
289 free(matching);
290 free(opatterns);
291 free(list);
292 free(ret);
293 return r;
233} 294}
234 295
235/* put algorithm proposal into buffer */ 296/* put algorithm proposal into buffer */
@@ -342,6 +403,7 @@ kex_send_ext_info(struct ssh *ssh)
342 403
343 if ((algs = sshkey_alg_list(0, 1, 1, ',')) == NULL) 404 if ((algs = sshkey_alg_list(0, 1, 1, ',')) == NULL)
344 return SSH_ERR_ALLOC_FAIL; 405 return SSH_ERR_ALLOC_FAIL;
406 /* XXX filter algs list by allowed pubkey/hostbased types */
345 if ((r = sshpkt_start(ssh, SSH2_MSG_EXT_INFO)) != 0 || 407 if ((r = sshpkt_start(ssh, SSH2_MSG_EXT_INFO)) != 0 ||
346 (r = sshpkt_put_u32(ssh, 1)) != 0 || 408 (r = sshpkt_put_u32(ssh, 1)) != 0 ||
347 (r = sshpkt_put_cstring(ssh, "server-sig-algs")) != 0 || 409 (r = sshpkt_put_cstring(ssh, "server-sig-algs")) != 0 ||
@@ -378,7 +440,7 @@ kex_input_ext_info(int type, u_int32_t seq, struct ssh *ssh)
378{ 440{
379 struct kex *kex = ssh->kex; 441 struct kex *kex = ssh->kex;
380 u_int32_t i, ninfo; 442 u_int32_t i, ninfo;
381 char *name, *found; 443 char *name;
382 u_char *val; 444 u_char *val;
383 size_t vlen; 445 size_t vlen;
384 int r; 446 int r;
@@ -401,16 +463,8 @@ kex_input_ext_info(int type, u_int32_t seq, struct ssh *ssh)
401 return SSH_ERR_INVALID_FORMAT; 463 return SSH_ERR_INVALID_FORMAT;
402 } 464 }
403 debug("%s: %s=<%s>", __func__, name, val); 465 debug("%s: %s=<%s>", __func__, name, val);
404 found = match_list("rsa-sha2-256", val, NULL); 466 kex->server_sig_algs = val;
405 if (found) { 467 val = NULL;
406 kex->rsa_sha2 = 256;
407 free(found);
408 }
409 found = match_list("rsa-sha2-512", val, NULL);
410 if (found) {
411 kex->rsa_sha2 = 512;
412 free(found);
413 }
414 } else 468 } else
415 debug("%s: %s (unrecognised)", __func__, name); 469 debug("%s: %s (unrecognised)", __func__, name);
416 free(name); 470 free(name);
diff --git a/kex.h b/kex.h
index 01bb3986a..593de1208 100644
--- a/kex.h
+++ b/kex.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: kex.h,v 1.83 2017/05/30 14:23:52 markus Exp $ */ 1/* $OpenBSD: kex.h,v 1.91 2018/07/11 18:53:29 markus Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -27,8 +27,6 @@
27#define KEX_H 27#define KEX_H
28 28
29#include "mac.h" 29#include "mac.h"
30#include "buffer.h" /* XXX for typedef */
31#include "key.h" /* XXX for typedef */
32 30
33#ifdef WITH_LEAKMALLOC 31#ifdef WITH_LEAKMALLOC
34#include "leakmalloc.h" 32#include "leakmalloc.h"
@@ -43,6 +41,8 @@
43# define EC_POINT void 41# define EC_POINT void
44# endif /* OPENSSL_HAS_ECC */ 42# endif /* OPENSSL_HAS_ECC */
45#else /* WITH_OPENSSL */ 43#else /* WITH_OPENSSL */
44# define DH void
45# define BIGNUM void
46# define EC_KEY void 46# define EC_KEY void
47# define EC_GROUP void 47# define EC_GROUP void
48# define EC_POINT void 48# define EC_POINT void
@@ -64,6 +64,7 @@
64#define KEX_CURVE25519_SHA256_OLD "curve25519-sha256@libssh.org" 64#define KEX_CURVE25519_SHA256_OLD "curve25519-sha256@libssh.org"
65 65
66#define COMP_NONE 0 66#define COMP_NONE 0
67/* pre-auth compression (COMP_ZLIB) is only supported in the client */
67#define COMP_ZLIB 1 68#define COMP_ZLIB 1
68#define COMP_DELAYED 2 69#define COMP_DELAYED 2
69 70
@@ -139,7 +140,7 @@ struct kex {
139 int hostkey_type; 140 int hostkey_type;
140 int hostkey_nid; 141 int hostkey_nid;
141 u_int kex_type; 142 u_int kex_type;
142 int rsa_sha2; 143 char *server_sig_algs;
143 int ext_info_c; 144 int ext_info_c;
144 struct sshbuf *my; 145 struct sshbuf *my;
145 struct sshbuf *peer; 146 struct sshbuf *peer;
@@ -169,7 +170,7 @@ struct kex {
169int kex_names_valid(const char *); 170int kex_names_valid(const char *);
170char *kex_alg_list(char); 171char *kex_alg_list(char);
171char *kex_names_cat(const char *, const char *); 172char *kex_names_cat(const char *, const char *);
172int kex_assemble_names(const char *, char **); 173int kex_assemble_names(char **, const char *, const char *);
173 174
174int kex_new(struct ssh *, char *[PROPOSAL_MAX], struct kex **); 175int kex_new(struct ssh *, char *[PROPOSAL_MAX], struct kex **);
175int kex_setup(struct ssh *, char *[PROPOSAL_MAX]); 176int kex_setup(struct ssh *, char *[PROPOSAL_MAX]);
diff --git a/kexdhs.c b/kexdhs.c
index da8f4c439..5dfca0a24 100644
--- a/kexdhs.c
+++ b/kexdhs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexdhs.c,v 1.26 2018/02/07 02:06:51 jsing Exp $ */ 1/* $OpenBSD: kexdhs.c,v 1.27 2018/04/10 00:10:49 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -194,7 +194,7 @@ input_kex_dh_init(int type, u_int32_t seq, struct ssh *ssh)
194 194
195 /* destroy_sensitive_data(); */ 195 /* destroy_sensitive_data(); */
196 196
197 /* send server hostkey, DH pubkey 'f' and singed H */ 197 /* send server hostkey, DH pubkey 'f' and signed H */
198 if ((r = sshpkt_start(ssh, SSH2_MSG_KEXDH_REPLY)) != 0 || 198 if ((r = sshpkt_start(ssh, SSH2_MSG_KEXDH_REPLY)) != 0 ||
199 (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || 199 (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 ||
200 (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ 200 (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */
diff --git a/kexgexs.c b/kexgexs.c
index d7b48ea88..f6983fd69 100644
--- a/kexgexs.c
+++ b/kexgexs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexgexs.c,v 1.32 2018/02/07 02:06:51 jsing Exp $ */ 1/* $OpenBSD: kexgexs.c,v 1.33 2018/04/10 00:10:49 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * Copyright (c) 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -224,7 +224,7 @@ input_kex_dh_gex_init(int type, u_int32_t seq, struct ssh *ssh)
224 224
225 /* destroy_sensitive_data(); */ 225 /* destroy_sensitive_data(); */
226 226
227 /* send server hostkey, DH pubkey 'f' and singed H */ 227 /* send server hostkey, DH pubkey 'f' and signed H */
228 if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REPLY)) != 0 || 228 if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REPLY)) != 0 ||
229 (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 || 229 (r = sshpkt_put_string(ssh, server_host_key_blob, sbloblen)) != 0 ||
230 (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */ 230 (r = sshpkt_put_bignum2(ssh, kex->dh->pub_key)) != 0 || /* f */
diff --git a/key.c b/key.c
deleted file mode 100644
index a05fdd3c0..000000000
--- a/key.c
+++ /dev/null
@@ -1,236 +0,0 @@
1/* $OpenBSD: key.c,v 1.132 2017/12/18 02:25:15 djm Exp $ */
2/*
3 * placed in the public domain
4 */
5
6#include "includes.h"
7
8#include <sys/types.h>
9#include <errno.h>
10#include <stdarg.h>
11#include <stdio.h>
12#include <limits.h>
13
14#define SSH_KEY_NO_DEFINE
15#include "key.h"
16
17#include "compat.h"
18#include "sshkey.h"
19#include "ssherr.h"
20#include "log.h"
21#include "authfile.h"
22
23static void
24fatal_on_fatal_errors(int r, const char *func, int extra_fatal)
25{
26 if (r == SSH_ERR_INTERNAL_ERROR ||
27 r == SSH_ERR_ALLOC_FAIL ||
28 (extra_fatal != 0 && r == extra_fatal))
29 fatal("%s: %s", func, ssh_err(r));
30}
31
32Key *
33key_from_blob(const u_char *blob, u_int blen)
34{
35 int r;
36 Key *ret = NULL;
37
38 if ((r = sshkey_from_blob(blob, blen, &ret)) != 0) {
39 fatal_on_fatal_errors(r, __func__, 0);
40 error("%s: %s", __func__, ssh_err(r));
41 return NULL;
42 }
43 return ret;
44}
45
46int
47key_to_blob(const Key *key, u_char **blobp, u_int *lenp)
48{
49 u_char *blob;
50 size_t blen;
51 int r;
52
53 if (blobp != NULL)
54 *blobp = NULL;
55 if (lenp != NULL)
56 *lenp = 0;
57 if ((r = sshkey_to_blob(key, &blob, &blen)) != 0) {
58 fatal_on_fatal_errors(r, __func__, 0);
59 error("%s: %s", __func__, ssh_err(r));
60 return 0;
61 }
62 if (blen > INT_MAX)
63 fatal("%s: giant len %zu", __func__, blen);
64 if (blobp != NULL)
65 *blobp = blob;
66 if (lenp != NULL)
67 *lenp = blen;
68 return blen;
69}
70
71int
72key_sign(const Key *key, u_char **sigp, u_int *lenp,
73 const u_char *data, u_int datalen, const char *alg)
74{
75 int r;
76 u_char *sig;
77 size_t siglen;
78
79 if (sigp != NULL)
80 *sigp = NULL;
81 if (lenp != NULL)
82 *lenp = 0;
83 if ((r = sshkey_sign(key, &sig, &siglen,
84 data, datalen, alg, datafellows)) != 0) {
85 fatal_on_fatal_errors(r, __func__, 0);
86 error("%s: %s", __func__, ssh_err(r));
87 return -1;
88 }
89 if (siglen > INT_MAX)
90 fatal("%s: giant len %zu", __func__, siglen);
91 if (sigp != NULL)
92 *sigp = sig;
93 if (lenp != NULL)
94 *lenp = siglen;
95 return 0;
96}
97
98Key *
99key_demote(const Key *k)
100{
101 int r;
102 Key *ret = NULL;
103
104 if ((r = sshkey_demote(k, &ret)) != 0)
105 fatal("%s: %s", __func__, ssh_err(r));
106 return ret;
107}
108
109int
110key_drop_cert(Key *k)
111{
112 int r;
113
114 if ((r = sshkey_drop_cert(k)) != 0) {
115 fatal_on_fatal_errors(r, __func__, 0);
116 error("%s: %s", __func__, ssh_err(r));
117 return -1;
118 }
119 return 0;
120}
121
122int
123key_cert_check_authority(const Key *k, int want_host, int require_principal,
124 const char *name, const char **reason)
125{
126 int r;
127
128 if ((r = sshkey_cert_check_authority(k, want_host, require_principal,
129 name, reason)) != 0) {
130 fatal_on_fatal_errors(r, __func__, 0);
131 error("%s: %s", __func__, ssh_err(r));
132 return -1;
133 }
134 return 0;
135}
136
137/* authfile.c */
138
139Key *
140key_load_cert(const char *filename)
141{
142 int r;
143 Key *ret = NULL;
144
145 if ((r = sshkey_load_cert(filename, &ret)) != 0) {
146 fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR);
147 /* Old authfile.c ignored all file errors. */
148 if (r == SSH_ERR_SYSTEM_ERROR)
149 debug("%s: %s", __func__, ssh_err(r));
150 else
151 error("%s: %s", __func__, ssh_err(r));
152 return NULL;
153 }
154 return ret;
155
156}
157
158Key *
159key_load_public(const char *filename, char **commentp)
160{
161 int r;
162 Key *ret = NULL;
163
164 if ((r = sshkey_load_public(filename, &ret, commentp)) != 0) {
165 fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR);
166 /* Old authfile.c ignored all file errors. */
167 if (r == SSH_ERR_SYSTEM_ERROR)
168 debug("%s: %s", __func__, ssh_err(r));
169 else
170 error("%s: %s", __func__, ssh_err(r));
171 return NULL;
172 }
173 return ret;
174}
175
176Key *
177key_load_private(const char *path, const char *passphrase,
178 char **commentp)
179{
180 int r;
181 Key *ret = NULL;
182
183 if ((r = sshkey_load_private(path, passphrase, &ret, commentp)) != 0) {
184 fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR);
185 /* Old authfile.c ignored all file errors. */
186 if (r == SSH_ERR_SYSTEM_ERROR ||
187 r == SSH_ERR_KEY_WRONG_PASSPHRASE)
188 debug("%s: %s", __func__, ssh_err(r));
189 else
190 error("%s: %s", __func__, ssh_err(r));
191 return NULL;
192 }
193 return ret;
194}
195
196Key *
197key_load_private_cert(int type, const char *filename, const char *passphrase,
198 int *perm_ok)
199{
200 int r;
201 Key *ret = NULL;
202
203 if ((r = sshkey_load_private_cert(type, filename, passphrase,
204 &ret, perm_ok)) != 0) {
205 fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR);
206 /* Old authfile.c ignored all file errors. */
207 if (r == SSH_ERR_SYSTEM_ERROR ||
208 r == SSH_ERR_KEY_WRONG_PASSPHRASE)
209 debug("%s: %s", __func__, ssh_err(r));
210 else
211 error("%s: %s", __func__, ssh_err(r));
212 return NULL;
213 }
214 return ret;
215}
216
217Key *
218key_load_private_type(int type, const char *filename, const char *passphrase,
219 char **commentp, int *perm_ok)
220{
221 int r;
222 Key *ret = NULL;
223
224 if ((r = sshkey_load_private_type(type, filename, passphrase,
225 &ret, commentp, perm_ok)) != 0) {
226 fatal_on_fatal_errors(r, __func__, SSH_ERR_LIBCRYPTO_ERROR);
227 /* Old authfile.c ignored all file errors. */
228 if (r == SSH_ERR_SYSTEM_ERROR ||
229 (r == SSH_ERR_KEY_WRONG_PASSPHRASE))
230 debug("%s: %s", __func__, ssh_err(r));
231 else
232 error("%s: %s", __func__, ssh_err(r));
233 return NULL;
234 }
235 return ret;
236}
diff --git a/key.h b/key.h
deleted file mode 100644
index fd59cbf54..000000000
--- a/key.h
+++ /dev/null
@@ -1,69 +0,0 @@
1/* $OpenBSD: key.h,v 1.52 2017/12/18 02:25:15 djm Exp $ */
2
3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26#ifndef KEY_H
27#define KEY_H
28
29#include "sshkey.h"
30
31typedef struct sshkey Key;
32
33#define types sshkey_types
34#define fp_type sshkey_fp_type
35#define fp_rep sshkey_fp_rep
36
37#ifndef SSH_KEY_NO_DEFINE
38#define key_free sshkey_free
39#define key_equal_public sshkey_equal_public
40#define key_equal sshkey_equal
41#define key_type sshkey_type
42#define key_ssh_name sshkey_ssh_name
43#define key_ssh_name_plain sshkey_ssh_name_plain
44#define key_type_from_name sshkey_type_from_name
45#define key_is_cert sshkey_is_cert
46#define key_type_plain sshkey_type_plain
47#endif
48
49void key_free(Key *);
50Key *key_demote(const Key *);
51
52int key_drop_cert(Key *);
53int key_cert_check_authority(const Key *, int, int, const char *,
54 const char **);
55
56Key *key_from_blob(const u_char *, u_int);
57int key_to_blob(const Key *, u_char **, u_int *);
58
59int key_sign(const Key *, u_char **, u_int *, const u_char *, u_int,
60 const char *);
61
62/* authfile.c */
63Key *key_load_cert(const char *);
64Key *key_load_public(const char *, char **);
65Key *key_load_private(const char *, const char *, char **);
66Key *key_load_private_cert(int, const char *, const char *, int *);
67Key *key_load_private_type(int, const char *, const char *, char **, int *);
68
69#endif
diff --git a/log.c b/log.c
index 99450dd12..d9c2d136c 100644
--- a/log.c
+++ b/log.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: log.c,v 1.50 2017/05/17 01:24:17 djm Exp $ */ 1/* $OpenBSD: log.c,v 1.51 2018/07/27 12:03:17 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -105,6 +105,12 @@ static struct {
105 { NULL, SYSLOG_LEVEL_NOT_SET } 105 { NULL, SYSLOG_LEVEL_NOT_SET }
106}; 106};
107 107
108LogLevel
109log_level_get(void)
110{
111 return log_level;
112}
113
108SyslogFacility 114SyslogFacility
109log_facility_number(char *name) 115log_facility_number(char *name)
110{ 116{
diff --git a/log.h b/log.h
index 78221046c..ef7bea7e1 100644
--- a/log.h
+++ b/log.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: log.h,v 1.22 2017/05/17 01:24:17 djm Exp $ */ 1/* $OpenBSD: log.h,v 1.23 2018/07/27 12:03:17 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -49,6 +49,7 @@ typedef enum {
49typedef void (log_handler_fn)(LogLevel, const char *, void *); 49typedef void (log_handler_fn)(LogLevel, const char *, void *);
50 50
51void log_init(char *, LogLevel, SyslogFacility, int); 51void log_init(char *, LogLevel, SyslogFacility, int);
52LogLevel log_level_get(void);
52int log_change_level(LogLevel); 53int log_change_level(LogLevel);
53int log_is_on_stderr(void); 54int log_is_on_stderr(void);
54void log_redirect_stderr_to(const char *); 55void log_redirect_stderr_to(const char *);
diff --git a/loginrec.c b/loginrec.c
index bdbc9bbf4..9a427dec4 100644
--- a/loginrec.c
+++ b/loginrec.c
@@ -168,7 +168,7 @@
168#include <unistd.h> 168#include <unistd.h>
169 169
170#include "xmalloc.h" 170#include "xmalloc.h"
171#include "key.h" 171#include "sshkey.h"
172#include "hostfile.h" 172#include "hostfile.h"
173#include "ssh.h" 173#include "ssh.h"
174#include "loginrec.h" 174#include "loginrec.h"
@@ -177,7 +177,8 @@
177#include "packet.h" 177#include "packet.h"
178#include "canohost.h" 178#include "canohost.h"
179#include "auth.h" 179#include "auth.h"
180#include "buffer.h" 180#include "sshbuf.h"
181#include "ssherr.h"
181 182
182#ifdef HAVE_UTIL_H 183#ifdef HAVE_UTIL_H
183# include <util.h> 184# include <util.h>
@@ -210,7 +211,7 @@ int utmpx_get_entry(struct logininfo *li);
210int wtmp_get_entry(struct logininfo *li); 211int wtmp_get_entry(struct logininfo *li);
211int wtmpx_get_entry(struct logininfo *li); 212int wtmpx_get_entry(struct logininfo *li);
212 213
213extern Buffer loginmsg; 214extern struct sshbuf *loginmsg;
214 215
215/* pick the shortest string */ 216/* pick the shortest string */
216#define MIN_SIZEOF(s1,s2) (sizeof(s1) < sizeof(s2) ? sizeof(s1) : sizeof(s2)) 217#define MIN_SIZEOF(s1,s2) (sizeof(s1) < sizeof(s2) ? sizeof(s1) : sizeof(s2))
diff --git a/match.c b/match.c
index 3cf40306b..bb3e95f67 100644
--- a/match.c
+++ b/match.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: match.c,v 1.37 2017/03/10 04:24:55 djm Exp $ */ 1/* $OpenBSD: match.c,v 1.38 2018/07/04 13:49:31 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -294,16 +294,20 @@ match_list(const char *client, const char *server, u_int *next)
294} 294}
295 295
296/* 296/*
297 * Filters a comma-separated list of strings, excluding any entry matching 297 * Filter proposal using pattern-list filter.
298 * the 'filter' pattern list. Caller must free returned string. 298 * "blacklist" determines sense of filter:
299 * non-zero indicates that items matching filter should be excluded.
300 * zero indicates that only items matching filter should be included.
301 * returns NULL on allocation error, otherwise caller must free result.
299 */ 302 */
300char * 303static char *
301match_filter_list(const char *proposal, const char *filter) 304filter_list(const char *proposal, const char *filter, int blacklist)
302{ 305{
303 size_t len = strlen(proposal) + 1; 306 size_t len = strlen(proposal) + 1;
304 char *fix_prop = malloc(len); 307 char *fix_prop = malloc(len);
305 char *orig_prop = strdup(proposal); 308 char *orig_prop = strdup(proposal);
306 char *cp, *tmp; 309 char *cp, *tmp;
310 int r;
307 311
308 if (fix_prop == NULL || orig_prop == NULL) { 312 if (fix_prop == NULL || orig_prop == NULL) {
309 free(orig_prop); 313 free(orig_prop);
@@ -314,7 +318,8 @@ match_filter_list(const char *proposal, const char *filter)
314 tmp = orig_prop; 318 tmp = orig_prop;
315 *fix_prop = '\0'; 319 *fix_prop = '\0';
316 while ((cp = strsep(&tmp, ",")) != NULL) { 320 while ((cp = strsep(&tmp, ",")) != NULL) {
317 if (match_pattern_list(cp, filter, 0) != 1) { 321 r = match_pattern_list(cp, filter, 0);
322 if ((blacklist && r != 1) || (!blacklist && r == 1)) {
318 if (*fix_prop != '\0') 323 if (*fix_prop != '\0')
319 strlcat(fix_prop, ",", len); 324 strlcat(fix_prop, ",", len);
320 strlcat(fix_prop, cp, len); 325 strlcat(fix_prop, cp, len);
@@ -324,3 +329,22 @@ match_filter_list(const char *proposal, const char *filter)
324 return fix_prop; 329 return fix_prop;
325} 330}
326 331
332/*
333 * Filters a comma-separated list of strings, excluding any entry matching
334 * the 'filter' pattern list. Caller must free returned string.
335 */
336char *
337match_filter_blacklist(const char *proposal, const char *filter)
338{
339 return filter_list(proposal, filter, 1);
340}
341
342/*
343 * Filters a comma-separated list of strings, including only entries matching
344 * the 'filter' pattern list. Caller must free returned string.
345 */
346char *
347match_filter_whitelist(const char *proposal, const char *filter)
348{
349 return filter_list(proposal, filter, 0);
350}
diff --git a/match.h b/match.h
index 937ba0412..852b1a5cb 100644
--- a/match.h
+++ b/match.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: match.h,v 1.17 2017/02/03 23:01:19 djm Exp $ */ 1/* $OpenBSD: match.h,v 1.18 2018/07/04 13:49:31 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -20,7 +20,8 @@ int match_hostname(const char *, const char *);
20int match_host_and_ip(const char *, const char *, const char *); 20int match_host_and_ip(const char *, const char *, const char *);
21int match_user(const char *, const char *, const char *, const char *); 21int match_user(const char *, const char *, const char *, const char *);
22char *match_list(const char *, const char *, u_int *); 22char *match_list(const char *, const char *, u_int *);
23char *match_filter_list(const char *, const char *); 23char *match_filter_blacklist(const char *, const char *);
24char *match_filter_whitelist(const char *, const char *);
24 25
25/* addrmatch.c */ 26/* addrmatch.c */
26int addr_match_list(const char *, const char *); 27int addr_match_list(const char *, const char *);
diff --git a/misc.c b/misc.c
index 874dcc8a2..ae4d29b84 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.c,v 1.127 2018/03/12 00:52:01 djm Exp $ */ 1/* $OpenBSD: misc.c,v 1.131 2018/07/27 05:13:02 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved. 4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved.
@@ -69,7 +69,6 @@
69#include "ssh.h" 69#include "ssh.h"
70#include "sshbuf.h" 70#include "sshbuf.h"
71#include "ssherr.h" 71#include "ssherr.h"
72#include "uidswap.h"
73#include "platform.h" 72#include "platform.h"
74 73
75/* remove newline at end of string */ 74/* remove newline at end of string */
@@ -239,8 +238,8 @@ set_rdomain(int fd, const char *name)
239#define QUOTE "\"" 238#define QUOTE "\""
240 239
241/* return next token in configuration line */ 240/* return next token in configuration line */
242char * 241static char *
243strdelim(char **s) 242strdelim_internal(char **s, int split_equals)
244{ 243{
245 char *old; 244 char *old;
246 int wspace = 0; 245 int wspace = 0;
@@ -250,7 +249,8 @@ strdelim(char **s)
250 249
251 old = *s; 250 old = *s;
252 251
253 *s = strpbrk(*s, WHITESPACE QUOTE "="); 252 *s = strpbrk(*s,
253 split_equals ? WHITESPACE QUOTE "=" : WHITESPACE QUOTE);
254 if (*s == NULL) 254 if (*s == NULL)
255 return (old); 255 return (old);
256 256
@@ -267,18 +267,37 @@ strdelim(char **s)
267 } 267 }
268 268
269 /* Allow only one '=' to be skipped */ 269 /* Allow only one '=' to be skipped */
270 if (*s[0] == '=') 270 if (split_equals && *s[0] == '=')
271 wspace = 1; 271 wspace = 1;
272 *s[0] = '\0'; 272 *s[0] = '\0';
273 273
274 /* Skip any extra whitespace after first token */ 274 /* Skip any extra whitespace after first token */
275 *s += strspn(*s + 1, WHITESPACE) + 1; 275 *s += strspn(*s + 1, WHITESPACE) + 1;
276 if (*s[0] == '=' && !wspace) 276 if (split_equals && *s[0] == '=' && !wspace)
277 *s += strspn(*s + 1, WHITESPACE) + 1; 277 *s += strspn(*s + 1, WHITESPACE) + 1;
278 278
279 return (old); 279 return (old);
280} 280}
281 281
282/*
283 * Return next token in configuration line; splts on whitespace or a
284 * single '=' character.
285 */
286char *
287strdelim(char **s)
288{
289 return strdelim_internal(s, 1);
290}
291
292/*
293 * Return next token in configuration line; splts on whitespace only.
294 */
295char *
296strdelimw(char **s)
297{
298 return strdelim_internal(s, 0);
299}
300
282struct passwd * 301struct passwd *
283pwcopy(struct passwd *pw) 302pwcopy(struct passwd *pw)
284{ 303{
@@ -1005,31 +1024,6 @@ percent_expand(const char *string, ...)
1005#undef EXPAND_MAX_KEYS 1024#undef EXPAND_MAX_KEYS
1006} 1025}
1007 1026
1008/*
1009 * Read an entire line from a public key file into a static buffer, discarding
1010 * lines that exceed the buffer size. Returns 0 on success, -1 on failure.
1011 */
1012int
1013read_keyfile_line(FILE *f, const char *filename, char *buf, size_t bufsz,
1014 u_long *lineno)
1015{
1016 while (fgets(buf, bufsz, f) != NULL) {
1017 if (buf[0] == '\0')
1018 continue;
1019 (*lineno)++;
1020 if (buf[strlen(buf) - 1] == '\n' || feof(f)) {
1021 return 0;
1022 } else {
1023 debug("%s: %s line %lu exceeds size limit", __func__,
1024 filename, *lineno);
1025 /* discard remainder of line */
1026 while (fgetc(f) != '\n' && !feof(f))
1027 ; /* nothing */
1028 }
1029 }
1030 return -1;
1031}
1032
1033int 1027int
1034tun_open(int tun, int mode, char **ifname) 1028tun_open(int tun, int mode, char **ifname)
1035{ 1029{
@@ -1582,15 +1576,6 @@ forward_equals(const struct Forward *a, const struct Forward *b)
1582 return 1; 1576 return 1;
1583} 1577}
1584 1578
1585/* returns 1 if bind to specified port by specified user is permitted */
1586int
1587bind_permitted(int port, uid_t uid)
1588{
1589 if (port < IPPORT_RESERVED && uid != 0)
1590 return 0;
1591 return 1;
1592}
1593
1594/* returns 1 if process is already daemonized, 0 otherwise */ 1579/* returns 1 if process is already daemonized, 0 otherwise */
1595int 1580int
1596daemonized(void) 1581daemonized(void)
diff --git a/misc.h b/misc.h
index cdafea735..6be289fd2 100644
--- a/misc.h
+++ b/misc.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.h,v 1.71 2018/03/12 00:52:01 djm Exp $ */ 1/* $OpenBSD: misc.h,v 1.74 2018/07/27 05:13:02 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -31,7 +31,6 @@ struct Forward {
31}; 31};
32 32
33int forward_equals(const struct Forward *, const struct Forward *); 33int forward_equals(const struct Forward *, const struct Forward *);
34int bind_permitted(int, uid_t);
35int daemonized(void); 34int daemonized(void);
36 35
37/* Common server and client forwarding options. */ 36/* Common server and client forwarding options. */
@@ -45,6 +44,7 @@ struct ForwardOptions {
45 44
46char *chop(char *); 45char *chop(char *);
47char *strdelim(char **); 46char *strdelim(char **);
47char *strdelimw(char **);
48int set_nonblock(int); 48int set_nonblock(int);
49int unset_nonblock(int); 49int unset_nonblock(int);
50void set_nodelay(int); 50void set_nodelay(int);
@@ -166,7 +166,6 @@ int safe_path_fd(int, const char *, struct passwd *,
166 166
167char *read_passphrase(const char *, int); 167char *read_passphrase(const char *, int);
168int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2))); 168int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2)));
169int read_keyfile_line(FILE *, const char *, char *, size_t, u_long *);
170 169
171#define MINIMUM(a, b) (((a) < (b)) ? (a) : (b)) 170#define MINIMUM(a, b) (((a) < (b)) ? (a) : (b))
172#define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b)) 171#define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b))
diff --git a/moduli b/moduli
index cf28bd36b..780b2b975 100644
--- a/moduli
+++ b/moduli
@@ -1,407 +1,438 @@
1# $OpenBSD: moduli,v 1.20 2017/11/29 05:49:54 dtucker Exp $ 1# $OpenBSD: moduli,v 1.21 2018/04/03 02:14:08 dtucker Exp $
2# Time Type Tests Tries Size Generator Modulus 2# Time Type Tests Tries Size Generator Modulus
320170623034823 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAE4E76CB 320171129060817 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210B1E863
420170623034906 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEB63283 420171129060830 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210C3D8AF
520170623034928 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEE49C27 520171129060835 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210C56383
620170623034936 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEF2BE1B 620171129060853 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65210E2A407
720170623034957 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF22F2D7 720171129060928 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652112864BB
820170623035029 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF68D3A7 820171129060940 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652113A4B2F
920170623035052 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF9A9793 920171129061019 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652118756EB
1020170623035228 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB085C01B 1020171129061110 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65211ECF08B
1120170623035326 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1140217 1120171129061125 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521205BFC7
1220170623035332 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB11ACBD7 1220171129061139 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652121B156B
1320170623035408 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB16AD187 1320171129061144 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652121DB6C7
1420170623035414 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1737B53 1420171129061155 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652122E3A4B
1520170623035442 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1B1C483 1520171129061219 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521258E75B
1620170623035454 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1C8B93B 1620171129061248 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652128E21EB
1720170623035510 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1EAD06B 1720171129061255 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521294FDC3
1820170623035525 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB208DA8B 1820171129061331 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65212DB195B
1920170623035553 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB2498F17 1920171129061336 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65212DD4653
2020170623035604 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB25D82D3 2020171129061427 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521341B5DF
2120170623035609 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB262420F 2120171129061437 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652134DD68B
2220170623035735 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB3376DEF 2220171129061446 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652135A0283
2320170623035801 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB370E193 2320171129061500 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652136FF967
2420170623035916 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB426D9CF 2420171129061601 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65213E379AF
2520170623035935 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB44E559B 2520171129061606 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65213E53213
2620170623035955 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4777177 2620171129061704 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521459419B
2720170623040012 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4995E77 2720171129061720 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521471A4D7
2820170623040023 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4ACAF8B 2820171129061822 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65214F0057F
2920170623040032 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4BB1ADB 2920171129061829 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65214F60057
3020170623040120 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB52D4F1F 3020171129061843 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652150D5E63
3120170623040131 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB542306B 3120171129061855 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215200027
3220170623040202 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5899CB7 3220171129061901 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521525622F
3320170623040216 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5A317FB 3320171129061942 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521578C59F
3420170623040224 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5AEBE43 3420171129061951 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521582692B
3520170623040246 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5E190BF 3520171129062008 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652159DB0EF
3620170623040254 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5EBE533 3620171129062015 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215A1F453
3720170623040334 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB649ECAF 3720171129062045 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215DD99B7
3820170623040448 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4B50D13 3820171129062054 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65215E9E31F
3920170623040459 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4C9F477 3920171129062130 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652162FE18F
4020170623040510 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4DDC50B 4020171129062138 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521639C1E7
4120170623040603 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C55E2BE7 4120171129062159 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652165F37BB
4220170623040614 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5715757 4220171129062221 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65216873C97
4320170623040626 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C58A0617 4320171129062228 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652168EBECB
4420170623040632 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5910FF7 4420171129062350 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521738FF13
4520170623040709 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5E85ABB 4520171129062433 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652178ED13F
4620170623040729 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C61714B7 4620171129062446 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65217A15C2F
4720170623040745 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C6362DF7 4720171129062541 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652181044FB
4820170623040759 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C64F9EEB 4820171129062603 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC6521837D78F
4920170623040829 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C6949627 4920171129062624 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652185C9EDF
5020170623040836 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C69F6763 5020171129062634 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC652186C3473
5120170623040925 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C712B23B 5120171129062650 2 6 100 2047 5 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65218888AC7
5220170623040941 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7336C6F 5220171129062658 2 6 100 2047 2 F6A83AA30FCC5A1FED886CF60BFAD561F8558C07EC39F7972F8BD034F16AE485A25E223E609D18CBA60DFB74F85637DC6A55E38BA145746B5C2EFC007E1B36B0B179A7756B160A90E6C7AA8D42DC5EF9F96EB654D37EAA3BC2A96CA6F9F60A47E340873B6131B9013ACDB75EBB189B671B8D48BD60D36D2BD4B9D2F5FC828F9989F2E9FEDE3AF8E10343C458CAEC77EBCDD113C75D4F190EFA489835725FD7A0CB3E3A9C30DE03BC5D3991D53A86A25A3F3601171130DBE5F2E6F844F6AE9565261F9110A264A1C61EA0CDDF6DB06F28F9E3B70A482C849E5523932B4F2343E90AC140AC06AB027E293CE2B81BA61021B1B15DDCA48B721AED9AC65218915923
5320170623041004 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C76418FB 5320171129062719 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADAB68F23
5420170623041040 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7B6A153 5420171129062852 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB8020BB
5520170623041049 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7C6F12F 5520171129062857 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB83D6A7
5620170623041059 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7D798EF 5620171129062904 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB8A117B
5720170623041129 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C81D54F3 5720171129062913 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADB95C4A7
5820170623041311 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C919987F 5820171129063020 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADC1E13B7
5920170623041314 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C91A831B 5920171129063054 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADC606493
6020170623041341 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C95422FF 6020171129063136 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADCB2F54F
6120170623041350 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C9646B7F 6120171129063229 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADD20E077
6220170623041354 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C9662E87 6220171129063237 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADD2BAEB3
6320170623041503 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA105123 6320171129063257 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADD51762F
6420170623041522 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA3BE707 6420171129063345 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADDB29C0B
6520170623041541 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA620DAB 6520171129063402 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADDD1340F
6620170623041546 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA66FFC3 6620171129063440 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE1D2F13
6720170623041620 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CAB69493 6720171129063453 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE32DC9B
6820170623041704 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB1C2B4B 6820171129063513 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE56C75F
6920170623041709 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB1FD10B 6920171129063518 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE5898EF
7020170623041747 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB7550DB 7020171129063545 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADE8E3FC7
7120170623041822 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CBC63D2B 7120171129063559 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEA2F2AB
7220170623041830 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CBD499AB 7220171129063613 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEB8D03F
7320170623043901 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5508B03E93 7320171129063626 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADECF0D4F
7420170623044452 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5509C5C937 7420171129063639 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEE3F9DB
7520170623044600 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5509F436FB 7520171129063648 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADEECDD2B
7620170623044825 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550A640733 7620171129063728 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADF3B2B1F
7720170623045050 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550AD6755B 7720171129063831 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3ADFB933CB
7820170623045124 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550AE93B43 7820171129063954 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE05FFACF
7920170623045420 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550B6F1ED3 7920171129064044 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE0C83FEB
8020170623045805 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550C20298F 8020171129064109 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE0F81483
8120170623045930 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550C5914BF 8120171129064127 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE1194DFB
8220170623050341 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550D1A1773 8220171129064141 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE12EBF3B
8320170623050720 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550DC219FB 8320171129064157 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE14B8657
8420170623051801 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550FBDD1AF 8420171129064308 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE1DFF6A3
8520170623052216 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5510842093 8520171129064313 2 6 100 2047 5 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE1E37B6F
8620170623052416 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5510DBFCD7 8620171129064345 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE21EA40B
8720170623052526 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55110BB843 8720171129064404 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE23F19DB
8820170623052831 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551196B36B 8820171129064429 2 6 100 2047 2 FB10C8B63DDACEB1654E9B1BF39D2E5A65A310270D19FA63F4520A3B76AF3FB32C535647E803A830B96E950AAE9539547D53CA1373E7C059B5E8FC81A00E193B547C8F490B1428A4692EF9B4248E69498595D579D93CE2D867709AE84F6558381A51673E2BC55FC04B8655EDF3743980319C875C7B733996FE318A3EC6DBFEE79D596AF1A4AA7497575D8A2E378D86CC368073E9E11FFC83F85886D1FC8F1D32CC0021259D040063526D8ABF2F7E00D4B627AED022D63B84F7DB55EE10550FA9562A067EAAEE021D1893DC6DADCCADAE1C0AD8F350A20CB33DAD32035FE12CF7DD29A0BF35DD87228B512DF58C7A3DD5187E2E58FC39AC835F847A3AE26AA1A3
8920170623053119 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551217A237 8920171129070339 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8656503B
9020170623053458 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5512C20307 9020171129070431 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8673A5D7
9120170623053734 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55133990CB 9120171129070444 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8674FE3B
9220170623054412 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5514721AB3 9220171129070802 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D86F9B0D3
9320170623054517 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55149F4D0B 9320171129071143 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8790794F
9420170623055017 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551583DD9B 9420171129072038 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D890948AB
9520170623055422 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55163A7903 9520171129072201 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D893CA93B
9620170623055449 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516475E5F 9620171129072633 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D89FA04BB
9720170623055516 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516556F37 9720171129072704 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8A081C83
9820170623055539 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55165F8F67 9820171129073026 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8A94313F
9920170623055716 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516A5CA13 9920171129073736 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8BBF2F57
10020170623055812 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516C8A4A3 10020171129073811 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8BD07FFB
10120170623055846 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516DBF96B 10120171129074006 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8C1A2AAF
10220170623060438 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5517E20F03 10220171129074244 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8C85024B
10320170623060534 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551803F1D7 10320171129074339 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8CA238BB
10420170623060551 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55180824C7 10420171129074739 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8D485DB3
10520170623060759 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5518622977 10520171129074856 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8D771FB3
10620170623061152 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55190DD957 10620171129075003 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8D9E294F
10720170623061950 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EBBB813F 10720171129075124 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D8DCE88FB
10820170623062054 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EBE73A63 10820171129080839 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D90AB02AB
10920170623062250 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EC3B7BBB 10920171129080910 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D90B81087
11020170623062850 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21ED5538D7 11020171129081213 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D91332803
11120170623063051 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDADBD87 11120171129081802 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9223D76B
11220170623063106 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDB14127 11220171129082038 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D928D0B97
11320170623063228 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDEBD58B 11320171129082101 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D92957057
11420170623063242 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDEE14B3 11420171129082300 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D92DF3C23
11520170623063301 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDF542E7 11520171129082841 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D93CA39BB
11620170623063538 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EE64F8A3 11620171129083100 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D94254653
11720170623063759 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EEC9D597 11720171129083144 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D943C67CF
11820170623064815 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F0A8EB1F 11820171129083314 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9472895F
11920170623065609 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F21F5CB7 11920171129083902 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D955FDEA3
12020170623070150 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F32604CB 12020171129084024 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9591B8D3
12120170623070933 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F48C5ED3 12120171129084309 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D96010007
12220170623071215 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5044ECB 12220171129084528 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D9659DC3B
12320170623071504 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5815613 12320171129084819 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D96CA1933
12420170623071625 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5B8F8AB 12420171129084937 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D96F8F0FF
12520170623071723 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5DE3F7B 12520171129085037 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D971A1D57
12620170623071945 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F645009B 12620171129085105 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D97264D63
12720170623072445 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F721A837 12720171129085212 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D974AC317
12820170623072516 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F731AF17 12820171129085529 2 6 100 3071 2 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D97CB27FB
12920170623073343 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F8B6F58F 12920171129085643 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D97F5D31F
13020170623073442 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F8DA7A47 13020171129085754 2 6 100 3071 5 FE72CDD6784FBAB0F7AA00E2F31A76435F8A02AC8B14A52C64CF4998EFEDADF9272FF9ADCF5AEDB6EEAE34A36C64833C8D63398A4906979A6B785139D9E7FE72FE8E3502B71B7780E8F4D74A520D3C8E5706EA428CCB746B673EC7472704203315FFDA7F3D5FCE56F6F441AA575B77748D6CB69DC1D7DB8531902CCB0E4D4817FBF4BCFE05120B60B7B99C62C578E6BDADE8E45B44DD67448F25F9118DA92DE375421E131781ED0895CACACB30C2D94D994B16215284CDE857A6C677C0E04A9B81E9D88076167EF3CB8041B65A1756850C2C667F2C6F5D6700F868A1518FD192B3C1915F19D119B2CF4588BD043ED3443982768B641FED8E2BF8E85BAC97A82808450DCCD35B5ED09E089AA04226A7710E20D5C00AED1CBAA176D93E1FEA308B4763F0FE9456E11F645A06D22A33EEA1931104605F280C7C5630548F3D35F6DBEDC8133FDC184F95D43B7D865EEF1E78A952BE3F098328A863447E2EBB726F3AB543F686CBD8BF8F9E780166758B495B7B75066E4B1987002422692D981F137F
13120170623073826 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F983F783 13120171129085925 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948CD513EF
13220170623074239 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA40B7CF 13220171129090650 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948E0DB457
13320170623074307 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA4F193B 13320171129090703 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948E0E411B
13420170623074345 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA61D323 13420171129091339 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851948F218A93
13520170623074648 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FAEB991B 13520171129092140 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519490711E0F
13620170623074919 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB5876F7 13620171129092229 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194908BB287
13720170623075011 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB79557F 13720171129092532 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519491098743
13820170623075040 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB88E5F7 13820171129092609 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194911B52CF
13920170623075211 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBC86DF3 13920171129092912 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519491979D17
14020170623075233 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBD19D1B 14020171129093038 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519491CBE28B
14120170623075313 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBE8A97F 14120171129093318 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519492326CF7
14220170623080026 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FD35417B 14220171129093513 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194927B907B
14320170623082844 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069919E3F0A3 14320171129093638 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519492B0BBB7
14420170623084111 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906991AE37AEB 14420171129094059 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493646CBB
14520170623091322 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906991D857A5F 14520171129094240 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194939F7823
14620170623095654 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699210172E7 14620171129094307 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493AB8EBB
14720170623095828 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069921188C6B 14720171129094439 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493E34B3F
14820170623095901 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699211B667F 14820171129094532 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519493FF8E7F
14920170623100423 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069921818383 14920171129094653 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519494307873
15020170623101338 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699223C1F3B 15020171129094922 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519494921E2F
15120170623101757 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699228B3683 15120171129094940 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949496EE1B
15220170623104910 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699250221BB 15220171129095758 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519495F23CAF
15320170623110231 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699260AC373 15320171129100214 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194969CC5B7
15420170623110814 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992672C113 15420171129101245 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519498540453
15520170623113826 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069928D90D4F 15520171129101539 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519498C81ACB
15620170623120249 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992AC1BA3F 15620171129101618 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519498DC4FEB
15720170623121815 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992BFC1B7B 15720171129101802 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194991CB3FB
15820170623122456 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992C7EB0CF 15820171129102023 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194997603BB
15920170623123432 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992D3D886B 15920171129102105 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD606275579785194998A9683
16020170623125910 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992F34AA0B 16020171129102314 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD60627557978519499DEC1C7
16120170623130350 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992F8B1CFF 16120171129102700 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949A7663FF
16220170623131900 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069930BE28FB 16220171129102831 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949AADA95B
16320170623132006 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069930CCBBC3 16320171129103048 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949B0592FB
16420170623134400 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069932B40887 16420171129103239 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949B4D9C73
16520170623134659 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069932E77127 16520171129103850 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949C57B5F7
16620170623140059 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069934031953 16620171129104512 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949D60C7AB
16720170623140936 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069934AC3B0F 16720171129105020 2 6 100 3071 2 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949E393D6B
16820170623142309 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069935BCCF33 16820171129105252 2 6 100 3071 5 E5B2496BAE5BB80230B69F3FCDC4E4D64BEFCD390B3D2F4A774F3ED4CBDB333B81930CBAF737164C13615CC0BE2EC320E34B8312ADCAA5D9644C0F054DD446C6299262BC184374B516DE3613628A8FB2606ECBCCE08BEE2ABE5D4B7B4CED22910635B723FFDC9381C8F87D0A471F935B62AF4CBEA3C329DF758BEE99F07C33AD6499CDCDDD64E3105F689C831D566296C978F27F0DB2F44389D9E0256790A0E4976FE38192C4BCB20FAF5853ED8AB04B16FFA478AB5945A3E98B12D014509039AB2F05629C48CA9E2272F71AE6AF07E7FBD92CD944A656731FB783E8EB38DF15630CA074D8CB41ECE91AA8A0D756690813C1DDFBE58CCCE7A50F4C83479C85B11908F80768F76F2FB8870B70F498F3235A044A80F32CE9AA9C613CD611D8CDD3CFD3F6A033F1764CD3029AD5435525D8BDD1B45100D61986BF8DBD8290AEC82FE15DBBBF00850AE58137383EEAFF9C9EDEDF8CCD42840E5D57C006F37AA3493FBA1E1719C7BDFC5EE22275A4D0415FD0DAB28E5CD6062755797851949E9CF297
16920170623142743 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906993611A26B 16920171129114245 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980424F9ADB
17020170623150027 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069938A6965B 17020171129114850 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98042BB88F3
17120170623150107 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069938AB78CB 17120171129121702 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98044D9C36B
17220170623150738 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699392AA267 17220171129124238 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98046CAF153
17320170623152234 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DA657F33 17320171129125253 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980478C8AA3
17420170623152823 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DAD58DFF 17420171129130704 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980489794E7
17520170623153243 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DB1F719B 17520171129133140 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9804A64C06B
17620170623153719 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DB76316F 17620171129140253 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9804C68CB3F
17720170623154606 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DC289BA3 17720171129144402 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9804F74F3CB
17820170623155435 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DCCFF757 17820171129145354 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980502DC987
17920170623161905 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DEC7BD43 17920171129150624 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805112DBB3
18020170623163928 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E064A38B 18020171129150654 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805113FE53
18120170623164410 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E0BD160B 18120171129151512 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98051AA1CA7
18220170623172908 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E467E87B 18220171129153640 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805342345F
18320170623174045 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E54CE16F 18320171129160526 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980555FD073
18420170623175902 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E6CA185F 18420171129163211 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980575A8F7B
18520170623180229 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E706D14B 18520171129165338 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98058EDA363
18620170623180811 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E76F7CD3 18620171129171055 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC98059F788C7
18720170623180923 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E77E8123 18720171129171346 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805A15681B
18820170623182724 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E8D82A2B 18820171129171648 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805A3C890F
18920170623185420 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EAF9DAE7 18920171129173802 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805B983947
19020170623195226 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EFA2202B 19020171129174541 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805C1B745B
19120170623195633 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EFEED5BF 19120171129182644 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805EF8CFA7
19220170623201051 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F10F59CB 19220171129183105 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805F423DD7
19320170623202959 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F2921927 19320171129183151 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805F48127B
19420170623203734 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F32287EB 19420171129183501 2 6 100 4095 2 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC9805F7A0D7B
19520170623204218 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F37F8B03 19520171129184425 2 6 100 4095 5 FADF655A8C18F13858C1C774D0060DD6FF25EAC29084E6A0A1E0D1218FD17F8800F697434FF377BC9ACB86AB48BDC139C51630956017D96CB0CC5C2D22604CABCBA881260B3A1F00A9F328DE35AC41638728AE65A1829F90AEE08237C971608AB5A7F3B50C53B3313FD68C774AAE29BCC1DA02BE0766D62DDE586169BAACB485CADC4F16EA0648E67D4D0F8DEFD9CCA4CC2B4000CD0C6372205F97C78F270F7E75A18DE0D3C8A3A1C1C606337BF6BEC94DD93D2646462E5F23AA4C292C00761D06FE220616A50C042A39351EBB2373EF21A35D5279D82E78B016A538B99CC166A148BABD91BCBE318A7987A5DA51B8B72D038F2D77668D48150A25ADC84018ADC7F36563E82D9DAA3B04593A989F9F05BBC0183DCE1BF6D6E2F9E4EFD5B52DF56B20AC035E36D57DFE521E9B3D256DE7F55C78837C0F5036DEC0581DF76CE7990A87F25113148BA1FF3502D82FC127B8134D3573BB8711B7891EF0C56B5C95037C9FBA6698219D63F5244A2E5D3479D0887CF5296900A23B344F3D804DF82712ABBD8A42218943957FA29966DBDB3A829959D08588FB670EEA4BF17605F928391B6BD36239CBE217CE278D2068D845F0B619CE726F2E9CA46ECA76180A90FFFFFA400D8F2956F3801FAADC49D9B05A786CA5D860A9B3AF3521842AB2C8C67CF7C9D966863B61AB2AA02970BD03F828980FEADEE067C4E7448FADC980601F06C7
19620170623204329 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F38F411F 19620171129190009 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907E91691F
19720170623204840 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F3EE7B13 19720171129190047 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907E94D7B3
19820170623205709 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F493374B 19820171129191357 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907F80F827
19920170623205814 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F4A24813 19920171129191536 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED907F970063
20020170623210627 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F53F787B 20020171129201007 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9083AC9B87
20120170623210958 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F57EC8EB 20120171129202520 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9084C8A5FF
20220170623211248 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F5B1A9D7 20220171129202732 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9084EB4BAF
20320170623213826 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F7B2A7AF 20320171129203556 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9085801D57
20420170623213924 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F7BDBA73 20420171129204816 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908664D7C3
20520170623214723 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F8513E37 20520171129205307 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9086BA916B
20620170623233949 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D915376BC3 20620171129211738 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9088852733
20720170624020214 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D918FF036F 20720171129212245 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9088DFD4A3
20820170624030028 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91A80668F 20820171129212444 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9088FEF233
20920170624033630 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91B697BC3 20920171129213520 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9089C4756B
21020170624052652 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91E5556DB 21020171129214659 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908A9732EF
21120170624075515 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D922262F73 21120171129215106 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908ADCE773
21220170624103157 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92638CCD7 21220171129215630 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908B3A5BEF
21320170624120558 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92895C273 21320171129220756 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908C0BB263
21420170624130210 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A0429E7 21420171129221730 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908CB5663B
21520170624131317 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A441063 21520171129223322 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908DDCC3A3
21620170624132538 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A8E794F 21620171129224236 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908E85C73B
21720170624133715 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92AD26E07 21720171129224324 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908E8D9E2F
21820170624145051 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92CB7412F 21820171129225233 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908F379CB3
21920170624163751 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92F668E7B 21920171129225757 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED908F98DCDB
22020170624172739 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D930A8FC4B 22020171129231535 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9090E1233F
22120170624174055 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D930F6B80B 22120171129232541 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909198027B
22220170624185924 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D932ED85B7 22220171129233438 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90923CF07B
22320170624220917 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D937BF2B3B 22320171129233904 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90928C0D7B
22420170624222456 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9381B839B 22420171129235019 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90935B1963
22520170625033902 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94007305B 22520171130000155 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90942FB1FB
22620170625053719 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D942F8C1E7 22620171130000803 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90949B573B
22720170625062259 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D944178FAB 22720171130003235 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED90966596E7
22820170625072908 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D945B1B3DF 22820171130005040 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9097B63323
22920170625075138 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9463A10C3 22920171130005620 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909818E76F
23020170625080610 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94691AE5B 23020171130012144 2 6 100 4095 5 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED9099F4FB5F
23120170625112146 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94B5B8CDB 23120171130014001 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909B4379EB
23220170625113648 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94BB43777 23220171130014931 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909BF25ABB
23320170625131459 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94E2020A7 23320171130015813 2 6 100 4095 2 D693DF66A6AA48BBECF942D3453355A19560938DE0A34C3E1158E5B9ECD70272CAE9686FAC4B6F64149C85607C158A67DB1C9B7FABD46379269492CB6B7E484D8AD4EA76D75EAD74F6A1E64D29206EC7BFF0630F3663C338039F8D10751AB8A177EEBB41E68434EAE03F7CA3761DE111900DC75F03209D8F6A92E178D94ADC7791D1BA55E7B6943A70D19957E348CA4B2407F89427D3B90979868732C69C221A3747ABCC7A9116D92237A1FDBE81E1ADDDA92F7FC0C15E7436B7C222E7759589919788B718B1F9F48356230B8F061F01FF21CD2DFEB2A1C744F8CBA3765364F1F417E105EDA7EB0ADBF1FD4CF4415B41CDA9BEF3CF6607A097EA2CFE32FA5376C01D1DF3B003FDEAE7571D0C54B5DED4DBBA2C753FB5ED889DD832085D75661CC762BBA28567CD080FB738B61C58ABF9962935C44322F1B96BEBEB594681CD2F20CA9F4D71C23D48E69725D37A4718924C4F145FBE0D841BE7C410A29C45810E240C319BADC04F990C4A84592FF925A73B6FE898F861B0E84D1146EB6856ADF066B11A0AE6915230F8A8E8234B33B5BAC1F3D1C3C05C8562DB51ACCAE2890C937F412D6E963C96965AA36350E8AB2901EE705B25407BC60711D9FC17E7885E5ED413ABBE2C207D55647F82C44367C13F489AD520A2A8FFA64C4F6EAF7AA816717F3019C6D240A4B9D788AFB73EA403523222D1E5940C47CAF304ED909C91146B
23420170625141110 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94F7F2B87 23420171130055239 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431DB8C972F
23520170625144415 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9504A46D3 23520171130062757 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431DC5AB557
23620170625145639 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9508CDF97 23620171130090503 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E0222F57
23720170625203254 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D958CDC1DB 23720171130104830 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E2966E47
23820170625215049 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D95AA6BE13 23820171130131919 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E65A304B
23920170625220255 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D95AE8D4FF 23920171130151632 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E9314BFB
24020170626000351 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A06777EB 24020171130154516 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431E9DF731F
24120170626010044 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A1E685DB 24120171130170406 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431EBBC2FF3
24220170626011405 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A237A0AB 24220171130200258 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431EFD0ED9B
24320170626020723 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A39C76DB 24320171130222515 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431F32CBD03
24420170626021405 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A3C0D837 24420171130230654 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431F4224A5B
24520170626025354 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A4CB1E73 24520171130235630 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431F549CCE3
24620170626025848 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A4E33427 24620171203125416 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431FC1A85BF
24720170626034407 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A60D840F 24720171203150512 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480431FF1C415F
24820170626042648 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A7271AD3 24820171203162042 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043200E63AC7
24920170626063327 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AA7A8227 24920171203162245 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043200EA5A8B
25020170626073301 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AC001F7B 25020171203172127 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320235B727
25120170626073912 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AC204247 25120171203181636 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320364E433
25220170626083935 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973ADB29CEF 25220171203183124 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043203B31AB7
25320170626085130 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973ADFA675B 25320171203185109 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043204236403
25420170626103016 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B0702723 25420171203190034 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320453C2BF
25520170626110918 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B1648BFF 25520171203192853 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043204F5D0C3
25620170626113343 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B1F924B3 25620171203234953 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320B184C73
25720170626150922 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B78B107B 25720171204012939 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320D6A5B1F
25820170626162428 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B972EB6B 25820171204015042 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804320DDD6F5B
25920170626171558 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973BAC16547 25920171204040850 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480432110E46BF
26020170626231518 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C3C4E533 26020171204060221 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF480432139A662F
26120170627001636 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C53DC917 26120171204093759 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF48043218861E53
26220170627023229 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C8A24E33 26220171204110909 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321AA18B6B
26320170627055348 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973CDB0A037 26320171204112744 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321B0A25B3
26420170627085558 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D234059B 26420171204113618 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321B357127
26520170627111046 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D57B1B3B 26520171204120614 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321BE218DB
26620170627114331 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D63E6527 26620171204122520 2 6 100 6143 2 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321C47FCD3
26720170627143549 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DA76351B 26720171204125750 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321CFEB977
26820170627150713 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DB2FF40B 26820171204133934 2 6 100 6143 5 F2F9DF4571769305CF3128D1F3B27E0B51064C0D70472B4B834907A11B6C76DAA091DDD058F56E7E5A1A144CBAD246C592ADB38DB36673E636E06043CF3776DE42B2A3C52B29A5378A538205F863CBCE489A9D26209B2679B7C10179193C7B50CC806D8FEA57F761D54F010EDBDCBC7624B989AD0C894E9ABA77744E164CB92A615919DA4E66C41F0D7DE03C2C8C89077E8E712CB867993110D1DAC8F8CC87AEC5F98E0A46D2DA94727D432D4406AE31F8FB2B9DAD9E882994E41FA2B46D364B416F05BE0D579DC31D0ABD89EBA6789835C4B4CE6B8F0E9C19E2B99BBB55211D9392F18A210686F487C38F6ED33CAFA7F2468B423CC7F36DE73655CE7B94D681409616C94E55B31AB6DC3422956DB8F00490A539D95F1BF4965340CB90B5BA03104F643F96B9ABDCB5D34920E4E675DBAB81C038C11AB28459E1F10F15EBE9C21BA47427C72C2960DD8763BFCE27D47C4A06B24EBD911DED8A0ADE710930F87132830B1B8E0675447A48E519FB18FD66D4012DE35E03533CB9C13B7D19823092F7F0D9C0E5C0EF7BCF9017817CEBB550168BB846E91AA5FFF1E44B7F42215890A26157EFA5647AF412924BFC0F6CD278261BA1F959AE90F165DB11AD56CEB5223AF8BCCD5760AAB2ED5F11C56B517FFBC96B178E46EF11E7A4E8209C1CA887218600B8B20FAA80AA0B00816969A0AE25807374C24566AC03F8DFB417D0C3E43AC9BDA056AD0562A28C9F7C5EEC7AC847699170668113DF07F22A875C40D570B8CCF09EE00D91B9841A7D10F1763EE48C0BABA0F76EAD940AB5FB376C685E2EF4A81717F8ACDA8ED205FB819E62598FB343451EE47D73B9541D9F8FB6DF4029FC8FCEC0F5B94258DB49B39717B0FEB5DB3BA8FB1D28F4FE0319F84111BE08E9D251791A0A1809B55C307B0D337923EDB8CA4F2018DE38A3B7AADDFB938D93C4F3F287DBFDD542D11C747A319AAA9CA8446EA4D5A3B8B91B48B850009A9353596F2352839D55FD45F442272123402D58C80411E5113C50E35D28EDAD3C7271E9ABB4E7152C70B306571433323661D4D12B2FAB10304F721B07FF4804321DF18F77
26920170627151417 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DB566CC3 26920171204174709 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7517467E2B
27020170627162358 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DD096627 27020171204175707 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75177CF673
27120170627175138 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DF2B3477 27120171204201457 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE751ADCB617
27220170627180034 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DF5CD463 27220171205043550 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752748419B
27320170627192816 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973E16B337B 27320171205051645 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7528400323
27420170627194138 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973E1B23A4B 27420171205062021 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7529BA43F7
27520170627235654 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CE22848CB 27520171205073410 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752B7A9EB3
27620170628025708 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CE4C7FC03 27620171205074444 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752BB3FF13
27720170628090844 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEA316C0F 27720171205101150 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE752F440E8B
27820170628104935 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEB9D111B 27820171205115054 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7531576573
27920170628114328 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEC57837B 27920171205121540 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7531E8F173
28020170628155547 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEFEB085F 28020171205130945 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75332BD36B
28120170628161354 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF024A37B 28120171205141051 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE753499FF7B
28220170629103301 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF75BD46F 28220171205144900 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75357B36FB
28320170629121023 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF8B74F97 28320171205154530 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7536CFC643
28420170630003105 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D0331EC63 28420171205175129 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75398C8CC3
28520170630052003 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D04F2C61B 28520171205180055 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7539B7B69B
28620170630145450 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D0CF7BF93 28620171205191334 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE753B4A4AD3
28720170701010810 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1578081F 28720171205223915 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754018391B
28820170701015400 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D161119BF 28820171206002554 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75429F0B5F
28920170701082405 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1B5FB48B 28920171206024048 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7545C299D7
29020170701092427 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1C2B0E47 29020171206032820 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7546E1FE43
29120170701161137 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D21ABD21B 29120171206033917 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE75471CD4D7
29220170702022204 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D29CF7033 29220171206045008 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7548C1EC97
29320170702023811 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D29FB9AAF 29320171206052722 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7549823083
29420170702062241 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D2CED4213 29420171206065709 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754B6C9C7F
29520170702082528 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D2E88DA5F 29520171206083216 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754D96E15F
29620170702151719 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D33FAA757 29620171206085625 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE754E17B6B7
29720170702175101 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D360021F3 29720171206134251 2 6 100 6143 2 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7554BF8FF3
29820170702200102 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D37A9C6C7 29820171206161018 2 6 100 6143 5 EF730E8C844746DF23D55A6C9508EF59F158850FF4A3A24B3E29C95547FE16E3C3F7269D4096406935222EDC51BFDFE89B454D8C02F868FB297A1FBFEB61A5392779A6C51AF8F9068CC579276D045FF317D9B7540D9A39FA936004991CB06BA169012F75BAF0B8D6203470AF1BE5569341E462DF72FF4AFD9C24BCB7584C71C1766DFDD74FE13D98C176DC64979F4720C0A996226948C9DE5E1890C2E703168AB3B33D50C395F13CDE094300C4BB0ED86352950C238DDEB1A8412A2409B6C487F9CBBB110A754A7B4985CF55DE4FC5137CDF13F9B0E10768DF0A28D6628DFEC684A25439E5C943718E4E4CFC89A3DCE1B747F77A0CE08B98AC92705E8DD3A6EDD18FAEA2FBB4988C3CC947C8206DD67CF44BEF69B617E781E93501877F81E4CC2263DB0B5EEEFFF3FCFCD2AB6E34B724D755A9D5025C978AA679D806318EF9F81787D3C69FB2D25B0382A3A96F44216791D41CCC3DF04EBD19B84858F0935C1C774F4685C8114EBCA8C71946C35CB42B82AD56541E3B4AB0A47E0AD8FCF9073BCFB801EA84DDF5DF4426578561BC737C2469B34F275502BC0BD7AB018506FD8DD6A9477F1588C2F76FD82B2AD3740E7F161632C66B961737EB70E9B44F362F73C1F874F7C06C5370297E975D25E004D6090BD119915694AFB57427DDE7F50C81B9A1812E10FA39A01E2F2FF18C96FADEA62BF08FAB027A31D84E4C0267AF7E880B5A0608683542E9895DB15FA1ADA9F1D28569C8E27662CE912CD1869227F542C1F228C6A2226D4AC24673994AA453BF21A1961D17C7E29B297E8AF7A71C4E2957A603900A3B4947B7B59A70767EB9106C043A48EEFAC3CCDC0F78F559CDBE64328E3C21D33D30E6AAFF638761F988CD99C59ECBAC4276ACE22062F6903B4B78B45917829AAA0CF11D04272EB44385A3479AD7B6E3E94126CC35AE082A73AAE991670C5145576789B43055B5F9D457523B16032CC65B679BD5AA08657D719EAC3D0345812BFA599249E4719AA2DF1507916FA735535781F053C4CB92D28007CC8D621E571E957AED705C2D11724E6D4A3BE268FDCCA230A1BE9EDE7558211DF7
29920170703011731 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D3BCD4977 29920171206195122 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634801E6B61B
30020170703155054 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D431F42D3 30020171206235707 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348054D6277
30120170704184253 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936A2722BB3 30120171207033003 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634808323A27
30220170704204537 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936A4446CCB 30220171207054441 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634809E6C2F7
30320170705051520 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936ABC7F083 30320171207104116 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63480D5E19B3
30420170705084652 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936AED1CC73 30420171207110410 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63480DA1758F
30520170705094007 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936AF8A26FF 30520171207170628 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634812866F03
30620170705115139 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B15913CF 30620171207183951 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634813B1BBCF
30720170705123819 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B1FD105B 30720171207212011 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634815D9070F
30820170705150548 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B411305B 30820171208005123 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348189250C7
30920170705152103 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B43D87FB 30920171208011303 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634818D35CE3
31020170705174143 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B637D557 31020171208021235 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63481996D303
31120170706120313 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C5C0BE63 31120171208133603 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634822901357
31220170706131942 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C6CA2F0F 31220171208151649 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634823DEBFBB
31320170706141404 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C781A68B 31320171208175501 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634825D190FB
31420170706153843 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C8A1C2AB 31420171208193058 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634826F30FB7
31520170706173242 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CA322EEF 31520171209011341 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63482B5BD51B
31620170706183451 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CB02939B 31620171209030814 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63482CD52277
31720170706184330 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CB163C7B 31720171209040411 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63482D874DDB
31820170706195815 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CC15613B 31820171209121718 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634833C845DB
31920170707002909 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CFBE39B3 31920171209182655 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348386E2CD7
32020170707012259 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D06F0ADF 32020171209190603 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634838DD3487
32120170707064939 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D4E0A703 32120171209234111 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63483C59DD8B
32220170707065604 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D4EE0BAF 32220171210084529 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348432B34CB
32320170707120623 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D9082CA3 32320171210100748 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63484426B89F
32420170707121752 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D928FC67 32420171211113225 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634856D74BDF
32520170707164931 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936DCD75823 32520171211183528 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63485BE7C88F
32620170707220455 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E0F28243 32620171211220143 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63485E59F1D3
32720170707233018 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E20BF7B3 32720171212002701 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A634860299B67
32820170708014205 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E3C89587 32820171212043247 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A6348632526BF
32920170708023140 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E469C123 32920171212143825 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63486A53EDEF
33020170708053646 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E6DBCAE7 33020171212144749 2 6 100 7679 2 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63486A6818FB
33120170708071735 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E8297A7F 33120171212180038 2 6 100 7679 5 CF96EF3064F3389AC4D7DA6813F67988F77979BB89C86E3A82B8FBE165D96646B6665C28FE7F5D1742E288AF6A47CEAD57277CF7B7902B8B7F899CB512DDF0EDEC293B152ABA4085290AE8BF93AF988437B549319AF0E18E39805C80A4714E4108DC29DDF708365B8FAC1F220784A8AA89F4C04176DFCEFC652988A6F878937AF8FEFF6A45672DB27EC215CDCBB9C530BDC2F1F357DC69073AA6B3670B988F271386E1B2F72635AA83420CF2A393338D1C4E2B502C11CA2098481EA292ACD7A7BFF84945E9CC04B47B1967F09CC7A4BE5AAA749583318E561E5504F28472B0AEF60B854142AACFE6017786E8B5FB674C79D68B7B44842F18E2075B8679A99D43892847B09A0CADFBED479942F599A1666D96EEED85A222431F8637D6FB73F5E08465417DAAA47BD31BDCE2262E06E0B7E5BF6FA9703890997C275CE11CA52A92D0F4889F370164D4EFA8C461E2F3BBABA54F8A1DD165C3D5344DF572B67EF92DC3E8EF66926B673AD59FB5CE5FF5ECED31535CC347374D846F0373EDD82DEFAF4DEEF238A1ABFF44FDC2D9511E8AE69349B69749DD6D2AD5A2A95F579B3A0D232FAB4A915568409150F184F1F58114354235084F9B104F9DA8EC13D34AB93BD61620CC0B93118FF2299B80856CE2A40792F58E37990677E1C4A662D619F835DA5537873CDF05DCDB369AEB2E6159E351E9140DDD5E4FB57EAAD9CB5A41EAC61CD1E95D983832D0E8D35EEFF88E699A33A4AB0FC82B8A1B38F527933108FCC6533C9DE3AFCAE396246399DB878A9D500905A707B3C1F3F490E327A5C219151E7077C9E456F3DD046F6FAC8C3F98CC90FC558E87A7CB654320DA2B48F41BE0D8498A98DF562EE0A33FF61AF92E90DABA5323CF416C7E3B5E0A5190A36442F08AEE80B4886C407A689A81293D7CF6D7F88C112F7D166D4AE27147BCDC4C91E2880F5A4065B0AC7480BCDB9A0BCB790FDDF0370DF819986DA21FE700E15D449F5C0849B70C8A84569F205D74141F87B73D2EE3BB4D7A88F2DC90272219E39B5456F5CE8F0DA1E40E98C1B968112DC3664663B3C2A2B1402657CC0529AD6CED5BD2A177F9ED6FDA41378C8ADA6F33615516CFE0077E9426424F06DF517A5117F2882FFE3144245623DF8DDEF9869E5F6D328884018885209EA24F7F617837E7751D56EF3201D3FD607706B889728591E7C822ED97FF0B9DC111D5D0142387D88CB799345EF48235922632D6610F9E1C7AAAB6368EC0D4A76185686FCDA99499DC1B7F08C8A1BDDEF3F803CF168D818CEAC1F8B79E70C49E37B3E19B0096D1B6C2D4BF73DBF503401AE4EFCF9DEB8AC4A9C39E140CA9086E9927274E2A63486CA4B787
33220170708072409 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E836D247 33220171213010731 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5561319BBF
33320170708102649 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EA984FCF 33320171213020125 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5561E7621B
33420170708144918 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EE06AB6B 33420171213022044 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F556220C81B
33520170708163647 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EF6DD803 33520171213024903 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55627C3CE7
33620170708181531 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F0B07D83 33620171213030139 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5562A0B013
33720170708234000 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F4E4D5BF 33720171213055041 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5564BC168F
33820170709023719 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F727B0C3 33820171213060909 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5564E9CBA3
33920170709063946 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936FA3DA1B3 33920171213072312 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5565D64617
34020170709093311 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936FC71EB57 34020171214093125 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F557B083E83
34120170709151341 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593700D34957 34120171214095927 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F557B5C6367
34220170709162318 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593701B3041F 34220171214222602 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F5585408053
34320170709184215 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D1459370374B3A3 34320171214233609 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55862A758B
34420170709215933 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593705ED75E7 34420171215214134 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559742D26B
34520170710000252 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145937077174C3 34520171216043116 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559C858AD7
34620170710052851 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D1459370B975DE3 34620171216061211 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559DBA299F
34720170710074510 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C8898200FD23 34720171216061646 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F559DBFD57B
34820170710114649 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88984F315BB 34820171216094255 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A0524813
34920170711033842 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88990A1C3A7 34920171216110833 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A15D5D1F
35020170711064933 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88992F18383 35020171216171002 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A5EC1993
35120170711070835 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C8899321BE1B 35120171216211154 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55A8EA2ED7
35220170712081942 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889A5694573 35220171217022713 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55ACD2DE8F
35320170712175235 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889AC1C9503 35320171217032242 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55AD80002F
35420170712184856 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889ACBA643B 35420171217074522 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B0B564D7
35520170712224446 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889AF76B1E3 35520171217095738 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B254E7FB
35620170713034208 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B2F38EEF 35620171217120716 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B3EDC9EB
35720170713034622 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B2F6567F 35720171217153508 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B680123B
35820170713071216 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B55B411B 35820171217162942 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55B727103B
35920170713222010 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889BFD2C803 35920171218014406 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55BDE7E6A3
36020170714013005 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889C1EF6397 36020171218033011 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55BF2DBDBB
36120170714094721 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889C7A27293 36120171218052822 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C08EEBC7
36220170714141853 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CAA42B27 36220171218071736 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C1D36F8B
36320170714204505 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CEF31E77 36320171218072625 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C1E549DB
36420170714205139 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CEFD860B 36420171218081603 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C2747B77
36520170714214942 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CF9B7253 36520171218163834 2 6 100 7679 5 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C883ECE7
36620170714230801 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889D071D153 36620171218165317 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55C8AA3DD3
36720170715054028 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889D4C6B33F 36720171218195505 2 6 100 7679 2 DC810DED621062F0CB271F50E716119CBA30A56C758377BD69D70043B8C9ACA2E7EFA9896D324B18FB1A550BDB994533A67258C7EB28B23D1AFB6D3FE0C5C8AD961F2BFAE67E57978F749D3F33A0D9AEAFD817FD663E60298D0DF73E4B27A85B6799D929240EC6C4C59E0D98E0A7875F3FCC3E29394083D1344F78DC70B5E23C108A03B7B81121BEDD2093262B7E32C7AB695AD545D3A99F410199DDD9759FE1EE8502180206841B3C74CB6A939B38707309B421A75FFEC30C977F91A9F9F3C9F65EF2EA6251E72F8A65C7753815C188320E91B079EDFB9F1D480F529B67075B57523C44895DE2427D32D3935EAC5F46659C5F723C9BB006862EF143A77C384560EB5474F8D034FC8059F6D7BCD9EBD17D2740741FB4025CF87FFE3DAAFF72C8D9D10E1F779AEC56D3C6340426E2D980EAA07C46F2E720D1B8206D2A29162C6CA877FA89C0876DA70FF3A773BDEE1BB5831EFB58A9191430B0DE46EA4F484642F257AC176B74A91A02594D00D2FD30BE4927DED30C4389245EC5ECA93B1B08AFBB86B8012394F8CB874DC092498A2F9B44E27804C039632A192C8329F0DF25B196E6AB5E07FB3732B94990A2F0490FB07D9E33B0AA2830EDB572D7C7968A193B83FF869F65ABEDEC65EB03EA6DF0CD6C077DE627FD3583AFDA1754E655BE7ECF7A2BEAA422E516B26194FAEFEE6F535439B413325E1263E7E797DE9D717540A96AF360F8EE1FD4B190A513E83AEF6BCAB5A245F4A4F129F5F8AED11A558FE968A0CF2E254438384D0EE91BEE99A39696821DBA585144FA65484897CFC517FCE1D1512F792C6996063585F640AC9480220ED1FF3EDC1D7E55344977F71692D6F5DB091821A3F9612B65138848B874A93A71A74039337BF291938B0A8ACA2141BE969DCE4322A276C86C5A8E369EF6717158B46EBE48F8F9BC4F2E46203AC21CDD9F0ED1989F7D964D46D7DA63444C9CADA82AF53E38873A5D3F68868CA4F65748210716658F2A841B3890E773A2623A59073F14A0F2F1B0893FDBE5BA72FC9609DB8E8A56A322E2B4178CE7B2022D741BD256303D926B48D5239B354F611C52B475C62351854D6E27C89231E7E7972C19C7D6F5BEB07D1A1FF827348DA862F422047A2DB7B591AE497578A4BA95CBECFB503F5DC04C0C6A946FFB515F2F0BDC4332F2674706F7C1908B681D8EE3667777092C06DC9CF00F98143F4A1350FCBAEBB5157A5473D33F51778987B35B1D48249A491EE8F8778DE6DC29131F708642884BED0B0D159E1EFE428D18D3631F13A593323F1659FE9E1A708115D2F131DCC3808CE016036FF1D0D9193CBEB2CD1C49F9973E0BCB09A2A9394E2F55CABFB253
36820170715152910 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889DB4248D3 36820171219124324 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203ABF9DA753
36920170715213011 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889DF38680B 36920171220012557 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AC87B0257
37020170716095854 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889E75F9737 37020171220113159 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203ACF6BF797
37120170716115603 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889E896321F 37120171220172848 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AD382D913
37220170717072754 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889F528B29F 37220171220184955 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AD4620FCF
37320170718103850 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889FB304F4F 37320171220232754 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AD788C3AF
37420170718123146 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889FC58729F 37420171221050933 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203ADADA05AF
37520170718203220 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88A012AA89B 37520171221135413 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AE091EA4F
37620170718211015 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88A0186FF33 37620171221220649 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AE5EFB017
37720170719070720 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FA20B88F 37720171223020323 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203AF8256AAB
37820170719080355 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FABF2F5B 37820171223193520 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B035D92A3
37920170719081323 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FAD37237 37920171223214753 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B04C1A663
38020170719083433 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FB0C1BEB 38020171224021554 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B078E9D33
38120170719124018 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FDE8D93F 38120171224034823 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B087DB16B
38220170720083815 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253790C2785C7 38220171224121415 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B0DB70677
38320170720203303 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379147CF99B 38320171224130232 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B0E3090C7
38420170721064950 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253791BAF7AFB 38420171224135245 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B0EAF8073
38520170721151849 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379217C124F 38520171224212046 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B133C2B4F
38620170721220636 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379260D3263 38620171224212702 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B13441743
38720170722033935 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537929DAE9CB 38720171225003349 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B152CE5AB
38820170722155118 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379320A3B27 38820171225004348 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B153F6807
38920170722181755 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537933A7A623 38920171225041057 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B176011EF
39020170722212038 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379359D2C63 39020171225091911 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B1A71C743
39120170722230812 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537936C5DA37 39120171225162026 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B1EB91123
39220170723005838 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537937F9469F 39220171225192243 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B20715EBB
39320170723041453 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793A1DBF1B 39320171225215524 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B21F31B1B
39420170723051250 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793AB9FC9B 39420171226063458 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B272E398F
39520170723112206 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793EBF09F7 39520171226064036 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B27337437
39620170723140224 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794072005B 39620171226213456 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B302C487F
39720170723170945 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379427689A7 39720171227055343 2 6 100 8191 5 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B35235327
39820170724050156 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794A23E407 39820171227125423 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B393B67F3
39920170724065019 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794B47E553 39920171227150248 2 6 100 8191 2 EE490FB8716A6562BB33AA7C81BBFDCF2BC4C7257F68FC888B014D4D06FF9501EDEC5B4B462DBA35A9C6E541F218CB4A44F6F9FC88F4B4CC522803FA78E320467D89DC594A89B9718278C390023E9A367EDC39614216835EC52511F0ABAD50A37B742603D8ECA51491AC9A0F61B8A0AE8C09831869F2BF140277A0DA761C57856191FB3D6BCA46D51AC32A52FA6012B8AF5531F1E361751EC530B502B9001CAD88C0E921D4F809CA97C06278C0503B17BAE6B082168C34AB558BAC649EC3A69D2D136804E89B4FC952AF03C5056A6CA50D130934CBA7FA852BB950328E6BA2BFCF86C7319C96E5AC7172B03A000D678E4734BF756645816DCFA5710D65F77B994C1D12000502CC31478258694CFEE378707F7111E7337A0EBBD8EA3E91459AEB73B310DEE37464DF317FB6BBBD6A4DB32B505F7F6D0D5A6C8BE439514BAA032CB41864647F64F18B414BA2A2BF7AEF787D1F84B2EFDF5935857C9A6167CA426109FEBA69EE58FEF126F3F98FBC46570EF50DD3F502044DBD580E5DCFD214DA8788B7104D4A77C4006AC153E704B395F061118D5898155A7BC758C13D6D9B381F40B1998FFBB520D78110956D7E01EB07F2AA4CE132C3CDE594E3FEF45F2FD2C6B8B2C75B8C232DEC3C82BDF494E846D8AD466F8F234FE2698C90B203C989F9EBE77DF2126CE4C765E19BCBC628F6B70FFEE9214B88E27CF989939EF396D513BDD2CA737EDB8C6845E5883D283445F3FB8F662F0CFC29F405A592C8C0D68575361B09BA4D1398D61B552D239F897D84B8D46A6E1B113D76AE9BABA8D5617B3ACC1A8F4AFBA8597BA96CF872A5AE48BE79A44771937D01D0EF76C99C1C99C7EE94DBDFE3FBA41B69DEC9F4B1858E3D4F488CAEA52692C9334ADB39A8FEDC815A1E4D7057AE7CF4BD2A67B02141F98306D4A67C759414F03AE3A9D2C0F1090B29C8833E3500ED05FF6175D29408D8DB6D0651AFC77142FA7F44114274C0575B4F2EAF27714B56F450DE6F02423B4BEDC090E91ECD92F5DF5B9D053E095149B069FB60D51BB700A188EABD493773B7BEBA99CA21E981BF14188926E5F2DB6348B8E85AE4E2D498F116C9A240567F71B9D86B8173A42BA29100F02322DE24241DF8333F7A7A2A8C71513B734BC7E35D25F469B27F9B0883E1B62E1C4FC60FC6EB4A1E9B1AD1DD26A8D64D27944577E8ABE51EA225B0FFE27B5592D6EA5FBAA81BE6E3657FBBE67D359D0D18622545E8C1093D542F31FEBD00E0C687BB66D6F4E8F3FA0AD435F303F1108CE3604FF199E5DBF7E7309EBECA4ADB0F2AED26B87E7B50C23F0AA8370EEABFEEF273B64EFAD3167D78689907C500FAB9AC160968BA738AC40B23F50BEAD01C6343D7B7190034C79FFDD250938A84E499D5583F5213287F495DF9008DB8A9A51DFEA454A8215683A53A6A5CE5BFDA0D827704203B3A81A89B
40020170725032628 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379588A6BE3 40020171227165129 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C3FF14E17B
40120170725142722 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253795F8CFE9B 40120171227193939 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C400F55F3F
40220170725192821 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537962B35BAB 40220171228032103 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4065CE64B
40320170726032919 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537967BE1D7F 40320171228115824 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C40C43BAB7
40420170726062511 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537969930233 40420171228124603 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C40CCD6483
40520170726073958 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796A4B8B7B 40520171228164850 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C40F99437B
40620170726144150 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796EA9D3DF 40620171228210323 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4126F1FDB
40720170726150548 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796EE14A73 40720171229030717 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4169A7847
40820171229061209 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4189CEBF3
40920171229071940 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C419560A6F
41020171229082351 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C41A003293
41120171229091948 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C41A97B0B3
41220171229152509 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C41EA78513
41320171229193934 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4216FDF1B
41420171230082815 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C429E6D743
41520171230095722 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C42ADAFEC3
41620171231000503 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4341E820B
41720171231123324 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C43C20726B
41820171231133810 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C43CC9B38F
41920180101034650 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C445D1D6AF
42020180102021859 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C453E3A923
42120180102095212 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4589223B3
42220180102194603 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C45EA32E73
42320180102224522 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4606F2AEB
42420180103002357 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4617220D3
42520180103011455 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C461EEC227
42620180103044126 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4640ADAFF
42720180103102958 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C4678F8743
42820180103153131 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46AA4F9DF
42920180103175311 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46C14249B
43020180103210214 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46DF36E37
43120180103214256 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46E5524BB
43220180103224847 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C46EF5AD73
43320180104072036 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C473F7759B
43420180104112937 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47658C257
43520180104122132 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C476D82313
43620180104192013 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47AEEE017
43720180104234458 2 6 100 8191 2 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47D812CC3
43820180105001530 2 6 100 8191 5 F461D7B72CCE12BB489DFEBB0D3252492FB894ADE7EEFCA4FCEAE71B2078652882837E3DDE311BA08D03316DDE3C3C844C34F37E7536601A57C95E1D191CC3B603E15D0E27D99ECC6B7781424F1D40E39FFF25D3F99C207359AD00CB7A68DC0937FDC38F24EF6C095DA60D92F977FBE8674D9885C4F147D6B6114F1CAF9F56327EF2A9CF30C5A26F46E19FAFACF357EC4E9119FB4AC34FF97FE5CDA2D578E00DF294AC88305AA8C9CFA074F35A211DD176486BBFDF04269B47C1EECAA0FAD95F6A5D829770F73DE8AF9D45928E4BF4C71412821419E2AFB2DA29FAA42557CB595B75433FDF015E42853C784AC8A15857D494900319D36B3A6672B885B686D6498D50A7843D381D240A77C053853FBFC670687678EA7AA909F9D82D2363ABD4851E3D20CE16632E0B1522AAB5DB8BB53AA1EE8CDFE86A494D1C2405C5AAE058D1990C91607D8043A74453AFB650110CA784BA307E531B153537B2C0A888D75229CC1D3CD27B0D7A6BEE20E82B7EB912D9F36BC8630990003DE2494DE017CB9D0EDBA7F0785927E79A76DA00707ADA18B9EBC57930E36E76737A7BA31F8F36F11D8CEDDCE28A411EEB34CE5D5235E88F66089F59CD921A84789512947DFDC8247A68353D05BEAFA6E450D7211D8BABE3C4C63685E9FA7742BD6309F3D72B9BE5E1B84E534596A81DAF1F5483C001FED71A9C7E432A28E52E43D9A0D4D4607B5E3459C7D424925C34311958344EBB86AF4E02675F8701BD55AACE3DDF48980E1977EE44275BEEE341C090820A63FD317595D7A0CCD00609B49E4AAF8C744F2FEA35A806B9B79C519CCDCE59F225FA243FD1AD0C8DBAFA17291CCA0C0C4DAB68060205F72978A5879093A132BE80C061D33348D94A8C79AE86F637701FC44E795B0F15D4610E0B269DEC7B24F717A7284A521759894AE475E7E35472ABC8C82DADE518628FF0DD37B48D94D48C18BF686F509AE5A5C35CC7BC33861673166B743FE10EB6508D36B29D1C798210E3D1840418A67214F9DB6FAF60BB42329226517C202436F735C1D326B49E1A37FF80BA4599A55898A48A2967647EA5E48B88F8034C7BBE9AFC1CD8DCC986495AB7070346E83479BC23925D418A68C7D72B4BCC106FEE74532F70F3CA019C68D419E944C34A69DAC2CDA1155F4FCDEC53CFB3AED1FE07C58FD20D673CE274AC89AEB3D72C36C2D81B42A5F9A61A83FB748749FDA5598C5A519A3026B1475F61CA5DE7A77BE86C2DC6EBAA6F756D5C15AF0F0844C05F233A0468148956C0BA80ACDCB7850FE0CBE75DB675AB712ADBF0934765919A697F4C4345E2AD63B159664FE0DB201683C8DFBBDB1EFE3B580C11809AC815C1863929E60B7A0819D255C8EE7AA582C33E0153EB685E830627829C141DF8B5C599D9DDD25CB3EFAD7C4369A470D3AE3CF4CD0CDCB185A402F7C3E395C47DC6C2E7
diff --git a/moduli.0 b/moduli.0
index e319015b2..59767da38 100644
--- a/moduli.0
+++ b/moduli.0
@@ -71,4 +71,4 @@ STANDARDS
71 the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006, 71 the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006,
72 2006. 72 2006.
73 73
74OpenBSD 6.2 September 26, 2012 OpenBSD 6.2 74OpenBSD 6.4 September 26, 2012 OpenBSD 6.4
diff --git a/monitor.c b/monitor.c
index c68e1b0d9..d4b4b0471 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor.c,v 1.180 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: monitor.c,v 1.186 2018/07/20 03:46:34 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -56,10 +56,6 @@
56# endif 56# endif
57#endif 57#endif
58 58
59#ifdef SKEY
60#include <skey.h>
61#endif
62
63#ifdef WITH_OPENSSL 59#ifdef WITH_OPENSSL
64#include <openssl/dh.h> 60#include <openssl/dh.h>
65#endif 61#endif
@@ -68,21 +64,14 @@
68#include "atomicio.h" 64#include "atomicio.h"
69#include "xmalloc.h" 65#include "xmalloc.h"
70#include "ssh.h" 66#include "ssh.h"
71#include "key.h" 67#include "sshkey.h"
72#include "buffer.h" 68#include "sshbuf.h"
73#include "hostfile.h" 69#include "hostfile.h"
74#include "auth.h" 70#include "auth.h"
75#include "cipher.h" 71#include "cipher.h"
76#include "kex.h" 72#include "kex.h"
77#include "dh.h" 73#include "dh.h"
78#include "auth-pam.h" 74#include "auth-pam.h"
79#ifdef TARGET_OS_MAC /* XXX Broken krb5 headers on Mac */
80#undef TARGET_OS_MAC
81#include "zlib.h"
82#define TARGET_OS_MAC 1
83#else
84#include "zlib.h"
85#endif
86#include "packet.h" 75#include "packet.h"
87#include "auth-options.h" 76#include "auth-options.h"
88#include "sshpty.h" 77#include "sshpty.h"
@@ -113,9 +102,7 @@ static Gssctxt *gsscontext = NULL;
113extern ServerOptions options; 102extern ServerOptions options;
114extern u_int utmp_len; 103extern u_int utmp_len;
115extern u_char session_id[]; 104extern u_char session_id[];
116extern Buffer auth_debug; 105extern struct sshbuf *loginmsg;
117extern int auth_debug_init;
118extern Buffer loginmsg;
119extern struct sshauthopt *auth_opts; /* XXX move to permanent ssh->authctxt? */ 106extern struct sshauthopt *auth_opts; /* XXX move to permanent ssh->authctxt? */
120 107
121/* State exported from the child */ 108/* State exported from the child */
@@ -123,46 +110,44 @@ static struct sshbuf *child_state;
123 110
124/* Functions on the monitor that answer unprivileged requests */ 111/* Functions on the monitor that answer unprivileged requests */
125 112
126int mm_answer_moduli(int, Buffer *); 113int mm_answer_moduli(int, struct sshbuf *);
127int mm_answer_sign(int, Buffer *); 114int mm_answer_sign(int, struct sshbuf *);
128int mm_answer_pwnamallow(int, Buffer *); 115int mm_answer_pwnamallow(int, struct sshbuf *);
129int mm_answer_auth2_read_banner(int, Buffer *); 116int mm_answer_auth2_read_banner(int, struct sshbuf *);
130int mm_answer_authserv(int, Buffer *); 117int mm_answer_authserv(int, struct sshbuf *);
131int mm_answer_authpassword(int, Buffer *); 118int mm_answer_authpassword(int, struct sshbuf *);
132int mm_answer_bsdauthquery(int, Buffer *); 119int mm_answer_bsdauthquery(int, struct sshbuf *);
133int mm_answer_bsdauthrespond(int, Buffer *); 120int mm_answer_bsdauthrespond(int, struct sshbuf *);
134int mm_answer_skeyquery(int, Buffer *); 121int mm_answer_keyallowed(int, struct sshbuf *);
135int mm_answer_skeyrespond(int, Buffer *); 122int mm_answer_keyverify(int, struct sshbuf *);
136int mm_answer_keyallowed(int, Buffer *); 123int mm_answer_pty(int, struct sshbuf *);
137int mm_answer_keyverify(int, Buffer *); 124int mm_answer_pty_cleanup(int, struct sshbuf *);
138int mm_answer_pty(int, Buffer *); 125int mm_answer_term(int, struct sshbuf *);
139int mm_answer_pty_cleanup(int, Buffer *); 126int mm_answer_rsa_keyallowed(int, struct sshbuf *);
140int mm_answer_term(int, Buffer *); 127int mm_answer_rsa_challenge(int, struct sshbuf *);
141int mm_answer_rsa_keyallowed(int, Buffer *); 128int mm_answer_rsa_response(int, struct sshbuf *);
142int mm_answer_rsa_challenge(int, Buffer *); 129int mm_answer_sesskey(int, struct sshbuf *);
143int mm_answer_rsa_response(int, Buffer *); 130int mm_answer_sessid(int, struct sshbuf *);
144int mm_answer_sesskey(int, Buffer *);
145int mm_answer_sessid(int, Buffer *);
146 131
147#ifdef USE_PAM 132#ifdef USE_PAM
148int mm_answer_pam_start(int, Buffer *); 133int mm_answer_pam_start(int, struct sshbuf *);
149int mm_answer_pam_account(int, Buffer *); 134int mm_answer_pam_account(int, struct sshbuf *);
150int mm_answer_pam_init_ctx(int, Buffer *); 135int mm_answer_pam_init_ctx(int, struct sshbuf *);
151int mm_answer_pam_query(int, Buffer *); 136int mm_answer_pam_query(int, struct sshbuf *);
152int mm_answer_pam_respond(int, Buffer *); 137int mm_answer_pam_respond(int, struct sshbuf *);
153int mm_answer_pam_free_ctx(int, Buffer *); 138int mm_answer_pam_free_ctx(int, struct sshbuf *);
154#endif 139#endif
155 140
156#ifdef GSSAPI 141#ifdef GSSAPI
157int mm_answer_gss_setup_ctx(int, Buffer *); 142int mm_answer_gss_setup_ctx(int, struct sshbuf *);
158int mm_answer_gss_accept_ctx(int, Buffer *); 143int mm_answer_gss_accept_ctx(int, struct sshbuf *);
159int mm_answer_gss_userok(int, Buffer *); 144int mm_answer_gss_userok(int, struct sshbuf *);
160int mm_answer_gss_checkmic(int, Buffer *); 145int mm_answer_gss_checkmic(int, struct sshbuf *);
161#endif 146#endif
162 147
163#ifdef SSH_AUDIT_EVENTS 148#ifdef SSH_AUDIT_EVENTS
164int mm_answer_audit_event(int, Buffer *); 149int mm_answer_audit_event(int, struct sshbuf *);
165int mm_answer_audit_command(int, Buffer *); 150int mm_answer_audit_command(int, struct sshbuf *);
166#endif 151#endif
167 152
168static int monitor_read_log(struct monitor *); 153static int monitor_read_log(struct monitor *);
@@ -171,7 +156,7 @@ static Authctxt *authctxt;
171 156
172/* local state for key verify */ 157/* local state for key verify */
173static u_char *key_blob = NULL; 158static u_char *key_blob = NULL;
174static u_int key_bloblen = 0; 159static size_t key_bloblen = 0;
175static int key_blobtype = MM_NOKEY; 160static int key_blobtype = MM_NOKEY;
176static struct sshauthopt *key_opts = NULL; 161static struct sshauthopt *key_opts = NULL;
177static char *hostbased_cuser = NULL; 162static char *hostbased_cuser = NULL;
@@ -185,7 +170,7 @@ static pid_t monitor_child_pid;
185struct mon_table { 170struct mon_table {
186 enum monitor_reqtype type; 171 enum monitor_reqtype type;
187 int flags; 172 int flags;
188 int (*f)(int, Buffer *); 173 int (*f)(int, struct sshbuf *);
189}; 174};
190 175
191#define MON_ISAUTH 0x0004 /* Required for Authentication */ 176#define MON_ISAUTH 0x0004 /* Required for Authentication */
@@ -221,10 +206,6 @@ struct mon_table mon_dispatch_proto20[] = {
221 {MONITOR_REQ_BSDAUTHQUERY, MON_ISAUTH, mm_answer_bsdauthquery}, 206 {MONITOR_REQ_BSDAUTHQUERY, MON_ISAUTH, mm_answer_bsdauthquery},
222 {MONITOR_REQ_BSDAUTHRESPOND, MON_AUTH, mm_answer_bsdauthrespond}, 207 {MONITOR_REQ_BSDAUTHRESPOND, MON_AUTH, mm_answer_bsdauthrespond},
223#endif 208#endif
224#ifdef SKEY
225 {MONITOR_REQ_SKEYQUERY, MON_ISAUTH, mm_answer_skeyquery},
226 {MONITOR_REQ_SKEYRESPOND, MON_AUTH, mm_answer_skeyrespond},
227#endif
228 {MONITOR_REQ_KEYALLOWED, MON_ISAUTH, mm_answer_keyallowed}, 209 {MONITOR_REQ_KEYALLOWED, MON_ISAUTH, mm_answer_keyallowed},
229 {MONITOR_REQ_KEYVERIFY, MON_AUTH, mm_answer_keyverify}, 210 {MONITOR_REQ_KEYVERIFY, MON_AUTH, mm_answer_keyverify},
230#ifdef GSSAPI 211#ifdef GSSAPI
@@ -300,7 +281,7 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
300 memset(authctxt, 0, sizeof(*authctxt)); 281 memset(authctxt, 0, sizeof(*authctxt));
301 ssh->authctxt = authctxt; 282 ssh->authctxt = authctxt;
302 283
303 authctxt->loginmsg = &loginmsg; 284 authctxt->loginmsg = loginmsg;
304 285
305 mon_dispatch = mon_dispatch_proto20; 286 mon_dispatch = mon_dispatch_proto20;
306 /* Permit requests for moduli and signatures */ 287 /* Permit requests for moduli and signatures */
@@ -338,13 +319,16 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
338#ifdef USE_PAM 319#ifdef USE_PAM
339 /* PAM needs to perform account checks after auth */ 320 /* PAM needs to perform account checks after auth */
340 if (options.use_pam && authenticated) { 321 if (options.use_pam && authenticated) {
341 Buffer m; 322 struct sshbuf *m;
342 323
343 buffer_init(&m); 324 if ((m = sshbuf_new()) == NULL)
325 fatal("%s: sshbuf_new failed",
326 __func__);
344 mm_request_receive_expect(pmonitor->m_sendfd, 327 mm_request_receive_expect(pmonitor->m_sendfd,
345 MONITOR_REQ_PAM_ACCOUNT, &m); 328 MONITOR_REQ_PAM_ACCOUNT, m);
346 authenticated = mm_answer_pam_account(pmonitor->m_sendfd, &m); 329 authenticated = mm_answer_pam_account(
347 buffer_free(&m); 330 pmonitor->m_sendfd, m);
331 sshbuf_free(m);
348 } 332 }
349#endif 333#endif
350 } 334 }
@@ -428,18 +412,21 @@ monitor_child_postauth(struct monitor *pmonitor)
428static int 412static int
429monitor_read_log(struct monitor *pmonitor) 413monitor_read_log(struct monitor *pmonitor)
430{ 414{
431 Buffer logmsg; 415 struct sshbuf *logmsg;
432 u_int len, level; 416 u_int len, level;
433 char *msg; 417 char *msg;
418 u_char *p;
419 int r;
434 420
435 buffer_init(&logmsg); 421 if ((logmsg = sshbuf_new()) == NULL)
422 fatal("%s: sshbuf_new", __func__);
436 423
437 /* Read length */ 424 /* Read length */
438 buffer_append_space(&logmsg, 4); 425 if ((r = sshbuf_reserve(logmsg, 4, &p)) != 0)
439 if (atomicio(read, pmonitor->m_log_recvfd, 426 fatal("%s: reserve: %s", __func__, ssh_err(r));
440 buffer_ptr(&logmsg), buffer_len(&logmsg)) != buffer_len(&logmsg)) { 427 if (atomicio(read, pmonitor->m_log_recvfd, p, 4) != 4) {
441 if (errno == EPIPE) { 428 if (errno == EPIPE) {
442 buffer_free(&logmsg); 429 sshbuf_free(logmsg);
443 debug("%s: child log fd closed", __func__); 430 debug("%s: child log fd closed", __func__);
444 close(pmonitor->m_log_recvfd); 431 close(pmonitor->m_log_recvfd);
445 pmonitor->m_log_recvfd = -1; 432 pmonitor->m_log_recvfd = -1;
@@ -447,26 +434,28 @@ monitor_read_log(struct monitor *pmonitor)
447 } 434 }
448 fatal("%s: log fd read: %s", __func__, strerror(errno)); 435 fatal("%s: log fd read: %s", __func__, strerror(errno));
449 } 436 }
450 len = buffer_get_int(&logmsg); 437 if ((r = sshbuf_get_u32(logmsg, &len)) != 0)
438 fatal("%s: get len: %s", __func__, ssh_err(r));
451 if (len <= 4 || len > 8192) 439 if (len <= 4 || len > 8192)
452 fatal("%s: invalid log message length %u", __func__, len); 440 fatal("%s: invalid log message length %u", __func__, len);
453 441
454 /* Read severity, message */ 442 /* Read severity, message */
455 buffer_clear(&logmsg); 443 sshbuf_reset(logmsg);
456 buffer_append_space(&logmsg, len); 444 if ((r = sshbuf_reserve(logmsg, len, &p)) != 0)
457 if (atomicio(read, pmonitor->m_log_recvfd, 445 fatal("%s: reserve: %s", __func__, ssh_err(r));
458 buffer_ptr(&logmsg), buffer_len(&logmsg)) != buffer_len(&logmsg)) 446 if (atomicio(read, pmonitor->m_log_recvfd, p, len) != len)
459 fatal("%s: log fd read: %s", __func__, strerror(errno)); 447 fatal("%s: log fd read: %s", __func__, strerror(errno));
448 if ((r = sshbuf_get_u32(logmsg, &level)) != 0 ||
449 (r = sshbuf_get_cstring(logmsg, &msg, NULL)) != 0)
450 fatal("%s: decode: %s", __func__, ssh_err(r));
460 451
461 /* Log it */ 452 /* Log it */
462 level = buffer_get_int(&logmsg);
463 msg = buffer_get_string(&logmsg, NULL);
464 if (log_level_name(level) == NULL) 453 if (log_level_name(level) == NULL)
465 fatal("%s: invalid log level %u (corrupted message?)", 454 fatal("%s: invalid log level %u (corrupted message?)",
466 __func__, level); 455 __func__, level);
467 do_log2(level, "%s [preauth]", msg); 456 do_log2(level, "%s [preauth]", msg);
468 457
469 buffer_free(&logmsg); 458 sshbuf_free(logmsg);
470 free(msg); 459 free(msg);
471 460
472 return 0; 461 return 0;
@@ -476,8 +465,8 @@ int
476monitor_read(struct monitor *pmonitor, struct mon_table *ent, 465monitor_read(struct monitor *pmonitor, struct mon_table *ent,
477 struct mon_table **pent) 466 struct mon_table **pent)
478{ 467{
479 Buffer m; 468 struct sshbuf *m;
480 int ret; 469 int r, ret;
481 u_char type; 470 u_char type;
482 struct pollfd pfd[2]; 471 struct pollfd pfd[2];
483 472
@@ -504,10 +493,12 @@ monitor_read(struct monitor *pmonitor, struct mon_table *ent,
504 break; /* Continues below */ 493 break; /* Continues below */
505 } 494 }
506 495
507 buffer_init(&m); 496 if ((m = sshbuf_new()) == NULL)
497 fatal("%s: sshbuf_new", __func__);
508 498
509 mm_request_receive(pmonitor->m_sendfd, &m); 499 mm_request_receive(pmonitor->m_sendfd, m);
510 type = buffer_get_char(&m); 500 if ((r = sshbuf_get_u8(m, &type)) != 0)
501 fatal("%s: decode: %s", __func__, ssh_err(r));
511 502
512 debug3("%s: checking request %d", __func__, type); 503 debug3("%s: checking request %d", __func__, type);
513 504
@@ -521,8 +512,8 @@ monitor_read(struct monitor *pmonitor, struct mon_table *ent,
521 if (!(ent->flags & MON_PERMIT)) 512 if (!(ent->flags & MON_PERMIT))
522 fatal("%s: unpermitted request %d", __func__, 513 fatal("%s: unpermitted request %d", __func__,
523 type); 514 type);
524 ret = (*ent->f)(pmonitor->m_sendfd, &m); 515 ret = (*ent->f)(pmonitor->m_sendfd, m);
525 buffer_free(&m); 516 sshbuf_free(m);
526 517
527 /* The child may use this request only once, disable it */ 518 /* The child may use this request only once, disable it */
528 if (ent->flags & MON_ONCE) { 519 if (ent->flags & MON_ONCE) {
@@ -572,14 +563,16 @@ monitor_reset_key_state(void)
572 563
573#ifdef WITH_OPENSSL 564#ifdef WITH_OPENSSL
574int 565int
575mm_answer_moduli(int sock, Buffer *m) 566mm_answer_moduli(int sock, struct sshbuf *m)
576{ 567{
577 DH *dh; 568 DH *dh;
578 int min, want, max; 569 int r;
570 u_int min, want, max;
579 571
580 min = buffer_get_int(m); 572 if ((r = sshbuf_get_u32(m, &min)) != 0 ||
581 want = buffer_get_int(m); 573 (r = sshbuf_get_u32(m, &want)) != 0 ||
582 max = buffer_get_int(m); 574 (r = sshbuf_get_u32(m, &max)) != 0)
575 fatal("%s: buffer error: %s", __func__, ssh_err(r));
583 576
584 debug3("%s: got parameters: %d %d %d", 577 debug3("%s: got parameters: %d %d %d",
585 __func__, min, want, max); 578 __func__, min, want, max);
@@ -588,17 +581,19 @@ mm_answer_moduli(int sock, Buffer *m)
588 fatal("%s: bad parameters: %d %d %d", 581 fatal("%s: bad parameters: %d %d %d",
589 __func__, min, want, max); 582 __func__, min, want, max);
590 583
591 buffer_clear(m); 584 sshbuf_reset(m);
592 585
593 dh = choose_dh(min, want, max); 586 dh = choose_dh(min, want, max);
594 if (dh == NULL) { 587 if (dh == NULL) {
595 buffer_put_char(m, 0); 588 if ((r = sshbuf_put_u8(m, 0)) != 0)
589 fatal("%s: buffer error: %s", __func__, ssh_err(r));
596 return (0); 590 return (0);
597 } else { 591 } else {
598 /* Send first bignum */ 592 /* Send first bignum */
599 buffer_put_char(m, 1); 593 if ((r = sshbuf_put_u8(m, 1)) != 0 ||
600 buffer_put_bignum2(m, dh->p); 594 (r = sshbuf_put_bignum2(m, dh->p)) != 0 ||
601 buffer_put_bignum2(m, dh->g); 595 (r = sshbuf_put_bignum2(m, dh->g)) != 0)
596 fatal("%s: buffer error: %s", __func__, ssh_err(r));
602 597
603 DH_free(dh); 598 DH_free(dh);
604 } 599 }
@@ -608,7 +603,7 @@ mm_answer_moduli(int sock, Buffer *m)
608#endif 603#endif
609 604
610int 605int
611mm_answer_sign(int sock, Buffer *m) 606mm_answer_sign(int sock, struct sshbuf *m)
612{ 607{
613 struct ssh *ssh = active_state; /* XXX */ 608 struct ssh *ssh = active_state; /* XXX */
614 extern int auth_sock; /* XXX move to state struct? */ 609 extern int auth_sock; /* XXX move to state struct? */
@@ -618,14 +613,15 @@ mm_answer_sign(int sock, Buffer *m)
618 char *alg = NULL; 613 char *alg = NULL;
619 size_t datlen, siglen, alglen; 614 size_t datlen, siglen, alglen;
620 int r, is_proof = 0; 615 int r, is_proof = 0;
621 u_int keyid; 616 u_int keyid, compat;
622 const char proof_req[] = "hostkeys-prove-00@openssh.com"; 617 const char proof_req[] = "hostkeys-prove-00@openssh.com";
623 618
624 debug3("%s", __func__); 619 debug3("%s", __func__);
625 620
626 if ((r = sshbuf_get_u32(m, &keyid)) != 0 || 621 if ((r = sshbuf_get_u32(m, &keyid)) != 0 ||
627 (r = sshbuf_get_string(m, &p, &datlen)) != 0 || 622 (r = sshbuf_get_string(m, &p, &datlen)) != 0 ||
628 (r = sshbuf_get_cstring(m, &alg, &alglen)) != 0) 623 (r = sshbuf_get_cstring(m, &alg, &alglen)) != 0 ||
624 (r = sshbuf_get_u32(m, &compat)) != 0)
629 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 625 fatal("%s: buffer error: %s", __func__, ssh_err(r));
630 if (keyid > INT_MAX) 626 if (keyid > INT_MAX)
631 fatal("%s: invalid key ID", __func__); 627 fatal("%s: invalid key ID", __func__);
@@ -675,13 +671,13 @@ mm_answer_sign(int sock, Buffer *m)
675 671
676 if ((key = get_hostkey_by_index(keyid)) != NULL) { 672 if ((key = get_hostkey_by_index(keyid)) != NULL) {
677 if ((r = sshkey_sign(key, &signature, &siglen, p, datlen, alg, 673 if ((r = sshkey_sign(key, &signature, &siglen, p, datlen, alg,
678 datafellows)) != 0) 674 compat)) != 0)
679 fatal("%s: sshkey_sign failed: %s", 675 fatal("%s: sshkey_sign failed: %s",
680 __func__, ssh_err(r)); 676 __func__, ssh_err(r));
681 } else if ((key = get_hostkey_public_by_index(keyid, ssh)) != NULL && 677 } else if ((key = get_hostkey_public_by_index(keyid, ssh)) != NULL &&
682 auth_sock > 0) { 678 auth_sock > 0) {
683 if ((r = ssh_agent_sign(auth_sock, key, &signature, &siglen, 679 if ((r = ssh_agent_sign(auth_sock, key, &signature, &siglen,
684 p, datlen, alg, datafellows)) != 0) { 680 p, datlen, alg, compat)) != 0) {
685 fatal("%s: ssh_agent_sign failed: %s", 681 fatal("%s: ssh_agent_sign failed: %s",
686 __func__, ssh_err(r)); 682 __func__, ssh_err(r));
687 } 683 }
@@ -710,12 +706,12 @@ mm_answer_sign(int sock, Buffer *m)
710/* Retrieves the password entry and also checks if the user is permitted */ 706/* Retrieves the password entry and also checks if the user is permitted */
711 707
712int 708int
713mm_answer_pwnamallow(int sock, Buffer *m) 709mm_answer_pwnamallow(int sock, struct sshbuf *m)
714{ 710{
715 struct ssh *ssh = active_state; /* XXX */ 711 struct ssh *ssh = active_state; /* XXX */
716 char *username; 712 char *username;
717 struct passwd *pwent; 713 struct passwd *pwent;
718 int allowed = 0; 714 int r, allowed = 0;
719 u_int i; 715 u_int i;
720 716
721 debug3("%s", __func__); 717 debug3("%s", __func__);
@@ -723,7 +719,8 @@ mm_answer_pwnamallow(int sock, Buffer *m)
723 if (authctxt->attempt++ != 0) 719 if (authctxt->attempt++ != 0)
724 fatal("%s: multiple attempts for getpwnam", __func__); 720 fatal("%s: multiple attempts for getpwnam", __func__);
725 721
726 username = buffer_get_string(m, NULL); 722 if ((r = sshbuf_get_cstring(m, &username, NULL)) != 0)
723 fatal("%s: buffer error: %s", __func__, ssh_err(r));
727 724
728 pwent = getpwnamallow(username); 725 pwent = getpwnamallow(username);
729 726
@@ -731,10 +728,11 @@ mm_answer_pwnamallow(int sock, Buffer *m)
731 setproctitle("%s [priv]", pwent ? username : "unknown"); 728 setproctitle("%s [priv]", pwent ? username : "unknown");
732 free(username); 729 free(username);
733 730
734 buffer_clear(m); 731 sshbuf_reset(m);
735 732
736 if (pwent == NULL) { 733 if (pwent == NULL) {
737 buffer_put_char(m, 0); 734 if ((r = sshbuf_put_u8(m, 0)) != 0)
735 fatal("%s: buffer error: %s", __func__, ssh_err(r));
738 authctxt->pw = fakepw(); 736 authctxt->pw = fakepw();
739 goto out; 737 goto out;
740 } 738 }
@@ -743,31 +741,40 @@ mm_answer_pwnamallow(int sock, Buffer *m)
743 authctxt->pw = pwent; 741 authctxt->pw = pwent;
744 authctxt->valid = 1; 742 authctxt->valid = 1;
745 743
746 buffer_put_char(m, 1); 744 /* XXX don't sent pwent to unpriv; send fake class/dir/shell too */
747 buffer_put_string(m, pwent, sizeof(struct passwd)); 745 if ((r = sshbuf_put_u8(m, 1)) != 0 ||
748 buffer_put_cstring(m, pwent->pw_name); 746 (r = sshbuf_put_string(m, pwent, sizeof(*pwent))) != 0 ||
749 buffer_put_cstring(m, "*"); 747 (r = sshbuf_put_cstring(m, pwent->pw_name)) != 0 ||
748 (r = sshbuf_put_cstring(m, "*")) != 0 ||
750#ifdef HAVE_STRUCT_PASSWD_PW_GECOS 749#ifdef HAVE_STRUCT_PASSWD_PW_GECOS
751 buffer_put_cstring(m, pwent->pw_gecos); 750 (r = sshbuf_put_cstring(m, pwent->pw_gecos)) != 0 ||
752#endif 751#endif
753#ifdef HAVE_STRUCT_PASSWD_PW_CLASS 752#ifdef HAVE_STRUCT_PASSWD_PW_CLASS
754 buffer_put_cstring(m, pwent->pw_class); 753 (r = sshbuf_put_cstring(m, pwent->pw_class)) != 0 ||
755#endif 754#endif
756 buffer_put_cstring(m, pwent->pw_dir); 755 (r = sshbuf_put_cstring(m, pwent->pw_dir)) != 0 ||
757 buffer_put_cstring(m, pwent->pw_shell); 756 (r = sshbuf_put_cstring(m, pwent->pw_shell)) != 0)
757 fatal("%s: buffer error: %s", __func__, ssh_err(r));
758 758
759 out: 759 out:
760 ssh_packet_set_log_preamble(ssh, "%suser %s", 760 ssh_packet_set_log_preamble(ssh, "%suser %s",
761 authctxt->valid ? "authenticating" : "invalid ", authctxt->user); 761 authctxt->valid ? "authenticating" : "invalid ", authctxt->user);
762 buffer_put_string(m, &options, sizeof(options)); 762 if ((r = sshbuf_put_string(m, &options, sizeof(options))) != 0)
763 fatal("%s: buffer error: %s", __func__, ssh_err(r));
763 764
764#define M_CP_STROPT(x) do { \ 765#define M_CP_STROPT(x) do { \
765 if (options.x != NULL) \ 766 if (options.x != NULL) { \
766 buffer_put_cstring(m, options.x); \ 767 if ((r = sshbuf_put_cstring(m, options.x)) != 0) \
768 fatal("%s: buffer error: %s", \
769 __func__, ssh_err(r)); \
770 } \
767 } while (0) 771 } while (0)
768#define M_CP_STRARRAYOPT(x, nx) do { \ 772#define M_CP_STRARRAYOPT(x, nx) do { \
769 for (i = 0; i < options.nx; i++) \ 773 for (i = 0; i < options.nx; i++) { \
770 buffer_put_cstring(m, options.x[i]); \ 774 if ((r = sshbuf_put_cstring(m, options.x[i])) != 0) \
775 fatal("%s: buffer error: %s", \
776 __func__, ssh_err(r)); \
777 } \
771 } while (0) 778 } while (0)
772 /* See comment in servconf.h */ 779 /* See comment in servconf.h */
773 COPY_MATCH_STRING_OPTS(); 780 COPY_MATCH_STRING_OPTS();
@@ -799,13 +806,15 @@ mm_answer_pwnamallow(int sock, Buffer *m)
799 return (0); 806 return (0);
800} 807}
801 808
802int mm_answer_auth2_read_banner(int sock, Buffer *m) 809int mm_answer_auth2_read_banner(int sock, struct sshbuf *m)
803{ 810{
804 char *banner; 811 char *banner;
812 int r;
805 813
806 buffer_clear(m); 814 sshbuf_reset(m);
807 banner = auth2_read_banner(); 815 banner = auth2_read_banner();
808 buffer_put_cstring(m, banner != NULL ? banner : ""); 816 if ((r = sshbuf_put_cstring(m, banner != NULL ? banner : "")) != 0)
817 fatal("%s: buffer error: %s", __func__, ssh_err(r));
809 mm_request_send(sock, MONITOR_ANS_AUTH2_READ_BANNER, m); 818 mm_request_send(sock, MONITOR_ANS_AUTH2_READ_BANNER, m);
810 free(banner); 819 free(banner);
811 820
@@ -813,12 +822,15 @@ int mm_answer_auth2_read_banner(int sock, Buffer *m)
813} 822}
814 823
815int 824int
816mm_answer_authserv(int sock, Buffer *m) 825mm_answer_authserv(int sock, struct sshbuf *m)
817{ 826{
827 int r;
828
818 monitor_permit_authentications(1); 829 monitor_permit_authentications(1);
819 830
820 authctxt->service = buffer_get_string(m, NULL); 831 if ((r = sshbuf_get_cstring(m, &authctxt->service, NULL)) != 0 ||
821 authctxt->style = buffer_get_string(m, NULL); 832 (r = sshbuf_get_cstring(m, &authctxt->style, NULL)) != 0)
833 fatal("%s: buffer error: %s", __func__, ssh_err(r));
822 debug3("%s: service=%s, style=%s", 834 debug3("%s: service=%s, style=%s",
823 __func__, authctxt->service, authctxt->style); 835 __func__, authctxt->service, authctxt->style);
824 836
@@ -831,27 +843,30 @@ mm_answer_authserv(int sock, Buffer *m)
831} 843}
832 844
833int 845int
834mm_answer_authpassword(int sock, Buffer *m) 846mm_answer_authpassword(int sock, struct sshbuf *m)
835{ 847{
836 struct ssh *ssh = active_state; /* XXX */ 848 struct ssh *ssh = active_state; /* XXX */
837 static int call_count; 849 static int call_count;
838 char *passwd; 850 char *passwd;
839 int authenticated; 851 int r, authenticated;
840 u_int plen; 852 size_t plen;
841 853
842 if (!options.password_authentication) 854 if (!options.password_authentication)
843 fatal("%s: password authentication not enabled", __func__); 855 fatal("%s: password authentication not enabled", __func__);
844 passwd = buffer_get_string(m, &plen); 856 if ((r = sshbuf_get_cstring(m, &passwd, &plen)) != 0)
857 fatal("%s: buffer error: %s", __func__, ssh_err(r));
845 /* Only authenticate if the context is valid */ 858 /* Only authenticate if the context is valid */
846 authenticated = options.password_authentication && 859 authenticated = options.password_authentication &&
847 auth_password(ssh, passwd); 860 auth_password(ssh, passwd);
848 explicit_bzero(passwd, strlen(passwd)); 861 explicit_bzero(passwd, plen);
849 free(passwd); 862 free(passwd);
850 863
851 buffer_clear(m); 864 sshbuf_reset(m);
852 buffer_put_int(m, authenticated); 865 if ((r = sshbuf_put_u32(m, authenticated)) != 0)
866 fatal("%s: buffer error: %s", __func__, ssh_err(r));
853#ifdef USE_PAM 867#ifdef USE_PAM
854 buffer_put_int(m, sshpam_get_maxtries_reached()); 868 if ((r = sshbuf_put_u32(m, sshpam_get_maxtries_reached())) != 0)
869 fatal("%s: buffer error: %s", __func__, ssh_err(r));
855#endif 870#endif
856 871
857 debug3("%s: sending result %d", __func__, authenticated); 872 debug3("%s: sending result %d", __func__, authenticated);
@@ -869,23 +884,25 @@ mm_answer_authpassword(int sock, Buffer *m)
869 884
870#ifdef BSD_AUTH 885#ifdef BSD_AUTH
871int 886int
872mm_answer_bsdauthquery(int sock, Buffer *m) 887mm_answer_bsdauthquery(int sock, struct sshbuf *m)
873{ 888{
874 char *name, *infotxt; 889 char *name, *infotxt;
875 u_int numprompts; 890 u_int numprompts, *echo_on, success;
876 u_int *echo_on;
877 char **prompts; 891 char **prompts;
878 u_int success; 892 int r;
879 893
880 if (!options.kbd_interactive_authentication) 894 if (!options.kbd_interactive_authentication)
881 fatal("%s: kbd-int authentication not enabled", __func__); 895 fatal("%s: kbd-int authentication not enabled", __func__);
882 success = bsdauth_query(authctxt, &name, &infotxt, &numprompts, 896 success = bsdauth_query(authctxt, &name, &infotxt, &numprompts,
883 &prompts, &echo_on) < 0 ? 0 : 1; 897 &prompts, &echo_on) < 0 ? 0 : 1;
884 898
885 buffer_clear(m); 899 sshbuf_reset(m);
886 buffer_put_int(m, success); 900 if ((r = sshbuf_put_u32(m, success)) != 0)
887 if (success) 901 fatal("%s: buffer error: %s", __func__, ssh_err(r));
888 buffer_put_cstring(m, prompts[0]); 902 if (success) {
903 if ((r = sshbuf_put_cstring(m, prompts[0])) != 0)
904 fatal("%s: buffer error: %s", __func__, ssh_err(r));
905 }
889 906
890 debug3("%s: sending challenge success: %u", __func__, success); 907 debug3("%s: sending challenge success: %u", __func__, success);
891 mm_request_send(sock, MONITOR_ANS_BSDAUTHQUERY, m); 908 mm_request_send(sock, MONITOR_ANS_BSDAUTHQUERY, m);
@@ -901,25 +918,27 @@ mm_answer_bsdauthquery(int sock, Buffer *m)
901} 918}
902 919
903int 920int
904mm_answer_bsdauthrespond(int sock, Buffer *m) 921mm_answer_bsdauthrespond(int sock, struct sshbuf *m)
905{ 922{
906 char *response; 923 char *response;
907 int authok; 924 int r, authok;
908 925
909 if (!options.kbd_interactive_authentication) 926 if (!options.kbd_interactive_authentication)
910 fatal("%s: kbd-int authentication not enabled", __func__); 927 fatal("%s: kbd-int authentication not enabled", __func__);
911 if (authctxt->as == NULL) 928 if (authctxt->as == NULL)
912 fatal("%s: no bsd auth session", __func__); 929 fatal("%s: no bsd auth session", __func__);
913 930
914 response = buffer_get_string(m, NULL); 931 if ((r = sshbuf_get_cstring(m, &response, NULL)) != 0)
932 fatal("%s: buffer error: %s", __func__, ssh_err(r));
915 authok = options.challenge_response_authentication && 933 authok = options.challenge_response_authentication &&
916 auth_userresponse(authctxt->as, response, 0); 934 auth_userresponse(authctxt->as, response, 0);
917 authctxt->as = NULL; 935 authctxt->as = NULL;
918 debug3("%s: <%s> = <%d>", __func__, response, authok); 936 debug3("%s: <%s> = <%d>", __func__, response, authok);
919 free(response); 937 free(response);
920 938
921 buffer_clear(m); 939 sshbuf_reset(m);
922 buffer_put_int(m, authok); 940 if ((r = sshbuf_put_u32(m, authok)) != 0)
941 fatal("%s: buffer error: %s", __func__, ssh_err(r));
923 942
924 debug3("%s: sending authenticated: %d", __func__, authok); 943 debug3("%s: sending authenticated: %d", __func__, authok);
925 mm_request_send(sock, MONITOR_ANS_BSDAUTHRESPOND, m); 944 mm_request_send(sock, MONITOR_ANS_BSDAUTHRESPOND, m);
@@ -931,59 +950,9 @@ mm_answer_bsdauthrespond(int sock, Buffer *m)
931} 950}
932#endif 951#endif
933 952
934#ifdef SKEY
935int
936mm_answer_skeyquery(int sock, Buffer *m)
937{
938 struct skey skey;
939 char challenge[1024];
940 u_int success;
941
942 success = _compat_skeychallenge(&skey, authctxt->user, challenge,
943 sizeof(challenge)) < 0 ? 0 : 1;
944
945 buffer_clear(m);
946 buffer_put_int(m, success);
947 if (success)
948 buffer_put_cstring(m, challenge);
949
950 debug3("%s: sending challenge success: %u", __func__, success);
951 mm_request_send(sock, MONITOR_ANS_SKEYQUERY, m);
952
953 return (0);
954}
955
956int
957mm_answer_skeyrespond(int sock, Buffer *m)
958{
959 char *response;
960 int authok;
961
962 response = buffer_get_string(m, NULL);
963
964 authok = (options.challenge_response_authentication &&
965 authctxt->valid &&
966 skey_haskey(authctxt->pw->pw_name) == 0 &&
967 skey_passcheck(authctxt->pw->pw_name, response) != -1);
968
969 free(response);
970
971 buffer_clear(m);
972 buffer_put_int(m, authok);
973
974 debug3("%s: sending authenticated: %d", __func__, authok);
975 mm_request_send(sock, MONITOR_ANS_SKEYRESPOND, m);
976
977 auth_method = "keyboard-interactive";
978 auth_submethod = "skey";
979
980 return (authok != 0);
981}
982#endif
983
984#ifdef USE_PAM 953#ifdef USE_PAM
985int 954int
986mm_answer_pam_start(int sock, Buffer *m) 955mm_answer_pam_start(int sock, struct sshbuf *m)
987{ 956{
988 if (!options.use_pam) 957 if (!options.use_pam)
989 fatal("UsePAM not set, but ended up in %s anyway", __func__); 958 fatal("UsePAM not set, but ended up in %s anyway", __func__);
@@ -998,17 +967,19 @@ mm_answer_pam_start(int sock, Buffer *m)
998} 967}
999 968
1000int 969int
1001mm_answer_pam_account(int sock, Buffer *m) 970mm_answer_pam_account(int sock, struct sshbuf *m)
1002{ 971{
1003 u_int ret; 972 u_int ret;
973 int r;
1004 974
1005 if (!options.use_pam) 975 if (!options.use_pam)
1006 fatal("%s: PAM not enabled", __func__); 976 fatal("%s: PAM not enabled", __func__);
1007 977
1008 ret = do_pam_account(); 978 ret = do_pam_account();
1009 979
1010 buffer_put_int(m, ret); 980 if ((r = sshbuf_put_u32(m, ret)) != 0 ||
1011 buffer_put_string(m, buffer_ptr(&loginmsg), buffer_len(&loginmsg)); 981 (r = sshbuf_put_stringb(m, loginmsg)) != 0)
982 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1012 983
1013 mm_request_send(sock, MONITOR_ANS_PAM_ACCOUNT, m); 984 mm_request_send(sock, MONITOR_ANS_PAM_ACCOUNT, m);
1014 985
@@ -1019,8 +990,11 @@ static void *sshpam_ctxt, *sshpam_authok;
1019extern KbdintDevice sshpam_device; 990extern KbdintDevice sshpam_device;
1020 991
1021int 992int
1022mm_answer_pam_init_ctx(int sock, Buffer *m) 993mm_answer_pam_init_ctx(int sock, struct sshbuf *m)
1023{ 994{
995 u_int ok = 0;
996 int r;
997
1024 debug3("%s", __func__); 998 debug3("%s", __func__);
1025 if (!options.kbd_interactive_authentication) 999 if (!options.kbd_interactive_authentication)
1026 fatal("%s: kbd-int authentication not enabled", __func__); 1000 fatal("%s: kbd-int authentication not enabled", __func__);
@@ -1028,24 +1002,24 @@ mm_answer_pam_init_ctx(int sock, Buffer *m)
1028 fatal("%s: already called", __func__); 1002 fatal("%s: already called", __func__);
1029 sshpam_ctxt = (sshpam_device.init_ctx)(authctxt); 1003 sshpam_ctxt = (sshpam_device.init_ctx)(authctxt);
1030 sshpam_authok = NULL; 1004 sshpam_authok = NULL;
1031 buffer_clear(m); 1005 sshbuf_reset(m);
1032 if (sshpam_ctxt != NULL) { 1006 if (sshpam_ctxt != NULL) {
1033 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_FREE_CTX, 1); 1007 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_FREE_CTX, 1);
1034 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_QUERY, 1); 1008 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_QUERY, 1);
1035 buffer_put_int(m, 1); 1009 ok = 1;
1036 } else {
1037 buffer_put_int(m, 0);
1038 } 1010 }
1011 if ((r = sshbuf_put_u32(m, ok)) != 0)
1012 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1039 mm_request_send(sock, MONITOR_ANS_PAM_INIT_CTX, m); 1013 mm_request_send(sock, MONITOR_ANS_PAM_INIT_CTX, m);
1040 return (0); 1014 return (0);
1041} 1015}
1042 1016
1043int 1017int
1044mm_answer_pam_query(int sock, Buffer *m) 1018mm_answer_pam_query(int sock, struct sshbuf *m)
1045{ 1019{
1046 char *name = NULL, *info = NULL, **prompts = NULL; 1020 char *name = NULL, *info = NULL, **prompts = NULL;
1047 u_int i, num = 0, *echo_on = 0; 1021 u_int i, num = 0, *echo_on = 0;
1048 int ret; 1022 int r, ret;
1049 1023
1050 debug3("%s", __func__); 1024 debug3("%s", __func__);
1051 sshpam_authok = NULL; 1025 sshpam_authok = NULL;
@@ -1058,18 +1032,20 @@ mm_answer_pam_query(int sock, Buffer *m)
1058 if (num > 1 || name == NULL || info == NULL) 1032 if (num > 1 || name == NULL || info == NULL)
1059 fatal("sshpam_device.query failed"); 1033 fatal("sshpam_device.query failed");
1060 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_RESPOND, 1); 1034 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_RESPOND, 1);
1061 buffer_clear(m); 1035 sshbuf_reset(m);
1062 buffer_put_int(m, ret); 1036 if ((r = sshbuf_put_u32(m, ret)) != 0 ||
1063 buffer_put_cstring(m, name); 1037 (r = sshbuf_put_cstring(m, name)) != 0 ||
1038 (r = sshbuf_put_cstring(m, info)) != 0 ||
1039 (r = sshbuf_put_u32(m, sshpam_get_maxtries_reached())) != 0 ||
1040 (r = sshbuf_put_u32(m, num)) != 0)
1041 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1064 free(name); 1042 free(name);
1065 buffer_put_cstring(m, info);
1066 free(info); 1043 free(info);
1067 buffer_put_int(m, sshpam_get_maxtries_reached());
1068 buffer_put_int(m, num);
1069 for (i = 0; i < num; ++i) { 1044 for (i = 0; i < num; ++i) {
1070 buffer_put_cstring(m, prompts[i]); 1045 if ((r = sshbuf_put_cstring(m, prompts[i])) != 0 ||
1046 (r = sshbuf_put_u32(m, echo_on[i])) != 0)
1047 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1071 free(prompts[i]); 1048 free(prompts[i]);
1072 buffer_put_int(m, echo_on[i]);
1073 } 1049 }
1074 free(prompts); 1050 free(prompts);
1075 free(echo_on); 1051 free(echo_on);
@@ -1080,21 +1056,25 @@ mm_answer_pam_query(int sock, Buffer *m)
1080} 1056}
1081 1057
1082int 1058int
1083mm_answer_pam_respond(int sock, Buffer *m) 1059mm_answer_pam_respond(int sock, struct sshbuf *m)
1084{ 1060{
1085 char **resp; 1061 char **resp;
1086 u_int i, num; 1062 u_int i, num;
1087 int ret; 1063 int r, ret;
1088 1064
1089 debug3("%s", __func__); 1065 debug3("%s", __func__);
1090 if (sshpam_ctxt == NULL) 1066 if (sshpam_ctxt == NULL)
1091 fatal("%s: no context", __func__); 1067 fatal("%s: no context", __func__);
1092 sshpam_authok = NULL; 1068 sshpam_authok = NULL;
1093 num = buffer_get_int(m); 1069 if ((r = sshbuf_get_u32(m, &num)) != 0)
1070 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1094 if (num > 0) { 1071 if (num > 0) {
1095 resp = xcalloc(num, sizeof(char *)); 1072 resp = xcalloc(num, sizeof(char *));
1096 for (i = 0; i < num; ++i) 1073 for (i = 0; i < num; ++i) {
1097 resp[i] = buffer_get_string(m, NULL); 1074 if ((r = sshbuf_get_cstring(m, &(resp[i]), NULL)) != 0)
1075 fatal("%s: buffer error: %s",
1076 __func__, ssh_err(r));
1077 }
1098 ret = (sshpam_device.respond)(sshpam_ctxt, num, resp); 1078 ret = (sshpam_device.respond)(sshpam_ctxt, num, resp);
1099 for (i = 0; i < num; ++i) 1079 for (i = 0; i < num; ++i)
1100 free(resp[i]); 1080 free(resp[i]);
@@ -1102,8 +1082,9 @@ mm_answer_pam_respond(int sock, Buffer *m)
1102 } else { 1082 } else {
1103 ret = (sshpam_device.respond)(sshpam_ctxt, num, NULL); 1083 ret = (sshpam_device.respond)(sshpam_ctxt, num, NULL);
1104 } 1084 }
1105 buffer_clear(m); 1085 sshbuf_reset(m);
1106 buffer_put_int(m, ret); 1086 if ((r = sshbuf_put_u32(m, ret)) != 0)
1087 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1107 mm_request_send(sock, MONITOR_ANS_PAM_RESPOND, m); 1088 mm_request_send(sock, MONITOR_ANS_PAM_RESPOND, m);
1108 auth_method = "keyboard-interactive"; 1089 auth_method = "keyboard-interactive";
1109 auth_submethod = "pam"; 1090 auth_submethod = "pam";
@@ -1113,7 +1094,7 @@ mm_answer_pam_respond(int sock, Buffer *m)
1113} 1094}
1114 1095
1115int 1096int
1116mm_answer_pam_free_ctx(int sock, Buffer *m) 1097mm_answer_pam_free_ctx(int sock, struct sshbuf *m)
1117{ 1098{
1118 int r = sshpam_authok != NULL && sshpam_authok == sshpam_ctxt; 1099 int r = sshpam_authok != NULL && sshpam_authok == sshpam_ctxt;
1119 1100
@@ -1122,7 +1103,7 @@ mm_answer_pam_free_ctx(int sock, Buffer *m)
1122 fatal("%s: no context", __func__); 1103 fatal("%s: no context", __func__);
1123 (sshpam_device.free_ctx)(sshpam_ctxt); 1104 (sshpam_device.free_ctx)(sshpam_ctxt);
1124 sshpam_ctxt = sshpam_authok = NULL; 1105 sshpam_ctxt = sshpam_authok = NULL;
1125 buffer_clear(m); 1106 sshbuf_reset(m);
1126 mm_request_send(sock, MONITOR_ANS_PAM_FREE_CTX, m); 1107 mm_request_send(sock, MONITOR_ANS_PAM_FREE_CTX, m);
1127 /* Allow another attempt */ 1108 /* Allow another attempt */
1128 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_INIT_CTX, 1); 1109 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_INIT_CTX, 1);
@@ -1133,31 +1114,29 @@ mm_answer_pam_free_ctx(int sock, Buffer *m)
1133#endif 1114#endif
1134 1115
1135int 1116int
1136mm_answer_keyallowed(int sock, Buffer *m) 1117mm_answer_keyallowed(int sock, struct sshbuf *m)
1137{ 1118{
1138 struct ssh *ssh = active_state; /* XXX */ 1119 struct ssh *ssh = active_state; /* XXX */
1139 struct sshkey *key; 1120 struct sshkey *key = NULL;
1140 char *cuser, *chost; 1121 char *cuser, *chost;
1141 u_char *blob; 1122 u_int pubkey_auth_attempt;
1142 u_int bloblen, pubkey_auth_attempt;
1143 enum mm_keytype type = 0; 1123 enum mm_keytype type = 0;
1144 int r, allowed = 0; 1124 int r, allowed = 0;
1145 struct sshauthopt *opts = NULL; 1125 struct sshauthopt *opts = NULL;
1146 1126
1147 debug3("%s entering", __func__); 1127 debug3("%s entering", __func__);
1148 type = buffer_get_int(m); 1128 if ((r = sshbuf_get_u32(m, &type)) != 0 ||
1149 cuser = buffer_get_string(m, NULL); 1129 (r = sshbuf_get_cstring(m, &cuser, NULL)) != 0 ||
1150 chost = buffer_get_string(m, NULL); 1130 (r = sshbuf_get_cstring(m, &chost, NULL)) != 0 ||
1151 blob = buffer_get_string(m, &bloblen); 1131 (r = sshkey_froms(m, &key)) != 0 ||
1152 pubkey_auth_attempt = buffer_get_int(m); 1132 (r = sshbuf_get_u32(m, &pubkey_auth_attempt)) != 0)
1153 1133 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1154 key = key_from_blob(blob, bloblen);
1155 1134
1156 debug3("%s: key_from_blob: %p", __func__, key); 1135 debug3("%s: key_from_blob: %p", __func__, key);
1157 1136
1158 if (key != NULL && authctxt->valid) { 1137 if (key != NULL && authctxt->valid) {
1159 /* These should not make it past the privsep child */ 1138 /* These should not make it past the privsep child */
1160 if (key_type_plain(key->type) == KEY_RSA && 1139 if (sshkey_type_plain(key->type) == KEY_RSA &&
1161 (datafellows & SSH_BUG_RSASIGMD5) != 0) 1140 (datafellows & SSH_BUG_RSASIGMD5) != 0)
1162 fatal("%s: passed a SSH_BUG_RSASIGMD5 key", __func__); 1141 fatal("%s: passed a SSH_BUG_RSASIGMD5 key", __func__);
1163 1142
@@ -1201,15 +1180,14 @@ mm_answer_keyallowed(int sock, Buffer *m)
1201 allowed ? "allowed" : "not allowed"); 1180 allowed ? "allowed" : "not allowed");
1202 1181
1203 auth2_record_key(authctxt, 0, key); 1182 auth2_record_key(authctxt, 0, key);
1204 sshkey_free(key);
1205 1183
1206 /* clear temporarily storage (used by verify) */ 1184 /* clear temporarily storage (used by verify) */
1207 monitor_reset_key_state(); 1185 monitor_reset_key_state();
1208 1186
1209 if (allowed) { 1187 if (allowed) {
1210 /* Save temporarily for comparison in verify */ 1188 /* Save temporarily for comparison in verify */
1211 key_blob = blob; 1189 if ((r = sshkey_to_blob(key, &key_blob, &key_bloblen)) != 0)
1212 key_bloblen = bloblen; 1190 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1213 key_blobtype = type; 1191 key_blobtype = type;
1214 key_opts = opts; 1192 key_opts = opts;
1215 hostbased_cuser = cuser; 1193 hostbased_cuser = cuser;
@@ -1217,13 +1195,14 @@ mm_answer_keyallowed(int sock, Buffer *m)
1217 } else { 1195 } else {
1218 /* Log failed attempt */ 1196 /* Log failed attempt */
1219 auth_log(authctxt, 0, 0, auth_method, NULL); 1197 auth_log(authctxt, 0, 0, auth_method, NULL);
1220 free(blob);
1221 free(cuser); 1198 free(cuser);
1222 free(chost); 1199 free(chost);
1223 } 1200 }
1201 sshkey_free(key);
1224 1202
1225 buffer_clear(m); 1203 sshbuf_reset(m);
1226 buffer_put_int(m, allowed); 1204 if ((r = sshbuf_put_u32(m, allowed)) != 0)
1205 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1227 if (opts != NULL && (r = sshauthopt_serialise(opts, m, 1)) != 0) 1206 if (opts != NULL && (r = sshauthopt_serialise(opts, m, 1)) != 0)
1228 fatal("%s: sshauthopt_serialise: %s", __func__, ssh_err(r)); 1207 fatal("%s: sshauthopt_serialise: %s", __func__, ssh_err(r));
1229 mm_request_send(sock, MONITOR_ANS_KEYALLOWED, m); 1208 mm_request_send(sock, MONITOR_ANS_KEYALLOWED, m);
@@ -1237,34 +1216,41 @@ mm_answer_keyallowed(int sock, Buffer *m)
1237static int 1216static int
1238monitor_valid_userblob(u_char *data, u_int datalen) 1217monitor_valid_userblob(u_char *data, u_int datalen)
1239{ 1218{
1240 Buffer b; 1219 struct sshbuf *b;
1241 u_char *p; 1220 const u_char *p;
1242 char *userstyle, *cp; 1221 char *userstyle, *cp;
1243 u_int len; 1222 size_t len;
1244 int fail = 0; 1223 u_char type;
1224 int r, fail = 0;
1245 1225
1246 buffer_init(&b); 1226 if ((b = sshbuf_new()) == NULL)
1247 buffer_append(&b, data, datalen); 1227 fatal("%s: sshbuf_new", __func__);
1228 if ((r = sshbuf_put(b, data, datalen)) != 0)
1229 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1248 1230
1249 if (datafellows & SSH_OLD_SESSIONID) { 1231 if (datafellows & SSH_OLD_SESSIONID) {
1250 p = buffer_ptr(&b); 1232 p = sshbuf_ptr(b);
1251 len = buffer_len(&b); 1233 len = sshbuf_len(b);
1252 if ((session_id2 == NULL) || 1234 if ((session_id2 == NULL) ||
1253 (len < session_id2_len) || 1235 (len < session_id2_len) ||
1254 (timingsafe_bcmp(p, session_id2, session_id2_len) != 0)) 1236 (timingsafe_bcmp(p, session_id2, session_id2_len) != 0))
1255 fail++; 1237 fail++;
1256 buffer_consume(&b, session_id2_len); 1238 if ((r = sshbuf_consume(b, session_id2_len)) != 0)
1239 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1257 } else { 1240 } else {
1258 p = buffer_get_string(&b, &len); 1241 if ((r = sshbuf_get_string_direct(b, &p, &len)) != 0)
1242 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1259 if ((session_id2 == NULL) || 1243 if ((session_id2 == NULL) ||
1260 (len != session_id2_len) || 1244 (len != session_id2_len) ||
1261 (timingsafe_bcmp(p, session_id2, session_id2_len) != 0)) 1245 (timingsafe_bcmp(p, session_id2, session_id2_len) != 0))
1262 fail++; 1246 fail++;
1263 free(p);
1264 } 1247 }
1265 if (buffer_get_char(&b) != SSH2_MSG_USERAUTH_REQUEST) 1248 if ((r = sshbuf_get_u8(b, &type)) != 0)
1249 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1250 if (type != SSH2_MSG_USERAUTH_REQUEST)
1266 fail++; 1251 fail++;
1267 cp = buffer_get_cstring(&b, NULL); 1252 if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0)
1253 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1268 xasprintf(&userstyle, "%s%s%s", authctxt->user, 1254 xasprintf(&userstyle, "%s%s%s", authctxt->user,
1269 authctxt->style ? ":" : "", 1255 authctxt->style ? ":" : "",
1270 authctxt->style ? authctxt->style : ""); 1256 authctxt->style ? authctxt->style : "");
@@ -1275,18 +1261,22 @@ monitor_valid_userblob(u_char *data, u_int datalen)
1275 } 1261 }
1276 free(userstyle); 1262 free(userstyle);
1277 free(cp); 1263 free(cp);
1278 buffer_skip_string(&b); 1264 if ((r = sshbuf_skip_string(b)) != 0 || /* service */
1279 cp = buffer_get_cstring(&b, NULL); 1265 (r = sshbuf_get_cstring(b, &cp, NULL)) != 0)
1266 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1280 if (strcmp("publickey", cp) != 0) 1267 if (strcmp("publickey", cp) != 0)
1281 fail++; 1268 fail++;
1282 free(cp); 1269 free(cp);
1283 if (!buffer_get_char(&b)) 1270 if ((r = sshbuf_get_u8(b, &type)) != 0)
1271 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1272 if (type == 0)
1284 fail++; 1273 fail++;
1285 buffer_skip_string(&b); 1274 if ((r = sshbuf_skip_string(b)) != 0 || /* pkalg */
1286 buffer_skip_string(&b); 1275 (r = sshbuf_skip_string(b)) != 0) /* pkblob */
1287 if (buffer_len(&b) != 0) 1276 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1277 if (sshbuf_len(b) != 0)
1288 fail++; 1278 fail++;
1289 buffer_free(&b); 1279 sshbuf_free(b);
1290 return (fail == 0); 1280 return (fail == 0);
1291} 1281}
1292 1282
@@ -1294,59 +1284,69 @@ static int
1294monitor_valid_hostbasedblob(u_char *data, u_int datalen, char *cuser, 1284monitor_valid_hostbasedblob(u_char *data, u_int datalen, char *cuser,
1295 char *chost) 1285 char *chost)
1296{ 1286{
1297 Buffer b; 1287 struct sshbuf *b;
1298 char *p, *userstyle; 1288 const u_char *p;
1299 u_int len; 1289 char *cp, *userstyle;
1300 int fail = 0; 1290 size_t len;
1291 int r, fail = 0;
1292 u_char type;
1301 1293
1302 buffer_init(&b); 1294 if ((b = sshbuf_new()) == NULL)
1303 buffer_append(&b, data, datalen); 1295 fatal("%s: sshbuf_new", __func__);
1296 if ((r = sshbuf_put(b, data, datalen)) != 0 ||
1297 (r = sshbuf_get_string_direct(b, &p, &len)) != 0)
1298 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1304 1299
1305 p = buffer_get_string(&b, &len);
1306 if ((session_id2 == NULL) || 1300 if ((session_id2 == NULL) ||
1307 (len != session_id2_len) || 1301 (len != session_id2_len) ||
1308 (timingsafe_bcmp(p, session_id2, session_id2_len) != 0)) 1302 (timingsafe_bcmp(p, session_id2, session_id2_len) != 0))
1309 fail++; 1303 fail++;
1310 free(p);
1311 1304
1312 if (buffer_get_char(&b) != SSH2_MSG_USERAUTH_REQUEST) 1305 if ((r = sshbuf_get_u8(b, &type)) != 0)
1306 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1307 if (type != SSH2_MSG_USERAUTH_REQUEST)
1313 fail++; 1308 fail++;
1314 p = buffer_get_cstring(&b, NULL); 1309 if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0)
1310 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1315 xasprintf(&userstyle, "%s%s%s", authctxt->user, 1311 xasprintf(&userstyle, "%s%s%s", authctxt->user,
1316 authctxt->style ? ":" : "", 1312 authctxt->style ? ":" : "",
1317 authctxt->style ? authctxt->style : ""); 1313 authctxt->style ? authctxt->style : "");
1318 if (strcmp(userstyle, p) != 0) { 1314 if (strcmp(userstyle, cp) != 0) {
1319 logit("wrong user name passed to monitor: expected %s != %.100s", 1315 logit("wrong user name passed to monitor: "
1320 userstyle, p); 1316 "expected %s != %.100s", userstyle, cp);
1321 fail++; 1317 fail++;
1322 } 1318 }
1323 free(userstyle); 1319 free(userstyle);
1324 free(p); 1320 free(cp);
1325 buffer_skip_string(&b); /* service */ 1321 if ((r = sshbuf_skip_string(b)) != 0 || /* service */
1326 p = buffer_get_cstring(&b, NULL); 1322 (r = sshbuf_get_cstring(b, &cp, NULL)) != 0)
1327 if (strcmp(p, "hostbased") != 0) 1323 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1324 if (strcmp(cp, "hostbased") != 0)
1328 fail++; 1325 fail++;
1329 free(p); 1326 free(cp);
1330 buffer_skip_string(&b); /* pkalg */ 1327 if ((r = sshbuf_skip_string(b)) != 0 || /* pkalg */
1331 buffer_skip_string(&b); /* pkblob */ 1328 (r = sshbuf_skip_string(b)) != 0) /* pkblob */
1329 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1332 1330
1333 /* verify client host, strip trailing dot if necessary */ 1331 /* verify client host, strip trailing dot if necessary */
1334 p = buffer_get_string(&b, NULL); 1332 if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0)
1335 if (((len = strlen(p)) > 0) && p[len - 1] == '.') 1333 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1336 p[len - 1] = '\0'; 1334 if (((len = strlen(cp)) > 0) && cp[len - 1] == '.')
1337 if (strcmp(p, chost) != 0) 1335 cp[len - 1] = '\0';
1336 if (strcmp(cp, chost) != 0)
1338 fail++; 1337 fail++;
1339 free(p); 1338 free(cp);
1340 1339
1341 /* verify client user */ 1340 /* verify client user */
1342 p = buffer_get_string(&b, NULL); 1341 if ((r = sshbuf_get_cstring(b, &cp, NULL)) != 0)
1343 if (strcmp(p, cuser) != 0) 1342 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1343 if (strcmp(cp, cuser) != 0)
1344 fail++; 1344 fail++;
1345 free(p); 1345 free(cp);
1346 1346
1347 if (buffer_len(&b) != 0) 1347 if (sshbuf_len(b) != 0)
1348 fail++; 1348 fail++;
1349 buffer_free(&b); 1349 sshbuf_free(b);
1350 return (fail == 0); 1350 return (fail == 0);
1351} 1351}
1352 1352
@@ -1462,15 +1462,15 @@ mm_session_close(Session *s)
1462} 1462}
1463 1463
1464int 1464int
1465mm_answer_pty(int sock, Buffer *m) 1465mm_answer_pty(int sock, struct sshbuf *m)
1466{ 1466{
1467 extern struct monitor *pmonitor; 1467 extern struct monitor *pmonitor;
1468 Session *s; 1468 Session *s;
1469 int res, fd0; 1469 int r, res, fd0;
1470 1470
1471 debug3("%s entering", __func__); 1471 debug3("%s entering", __func__);
1472 1472
1473 buffer_clear(m); 1473 sshbuf_reset(m);
1474 s = session_new(); 1474 s = session_new();
1475 if (s == NULL) 1475 if (s == NULL)
1476 goto error; 1476 goto error;
@@ -1482,8 +1482,9 @@ mm_answer_pty(int sock, Buffer *m)
1482 goto error; 1482 goto error;
1483 pty_setowner(authctxt->pw, s->tty); 1483 pty_setowner(authctxt->pw, s->tty);
1484 1484
1485 buffer_put_int(m, 1); 1485 if ((r = sshbuf_put_u32(m, 1)) != 0 ||
1486 buffer_put_cstring(m, s->tty); 1486 (r = sshbuf_put_cstring(m, s->tty)) != 0)
1487 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1487 1488
1488 /* We need to trick ttyslot */ 1489 /* We need to trick ttyslot */
1489 if (dup2(s->ttyfd, 0) == -1) 1490 if (dup2(s->ttyfd, 0) == -1)
@@ -1495,8 +1496,9 @@ mm_answer_pty(int sock, Buffer *m)
1495 close(0); 1496 close(0);
1496 1497
1497 /* send messages generated by record_login */ 1498 /* send messages generated by record_login */
1498 buffer_put_string(m, buffer_ptr(&loginmsg), buffer_len(&loginmsg)); 1499 if ((r = sshbuf_put_stringb(m, loginmsg)) != 0)
1499 buffer_clear(&loginmsg); 1500 fatal("%s: put login message: %s", __func__, ssh_err(r));
1501 sshbuf_reset(loginmsg);
1500 1502
1501 mm_request_send(sock, MONITOR_ANS_PTY, m); 1503 mm_request_send(sock, MONITOR_ANS_PTY, m);
1502 1504
@@ -1523,29 +1525,32 @@ mm_answer_pty(int sock, Buffer *m)
1523 error: 1525 error:
1524 if (s != NULL) 1526 if (s != NULL)
1525 mm_session_close(s); 1527 mm_session_close(s);
1526 buffer_put_int(m, 0); 1528 if ((r = sshbuf_put_u32(m, 0)) != 0)
1529 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1527 mm_request_send(sock, MONITOR_ANS_PTY, m); 1530 mm_request_send(sock, MONITOR_ANS_PTY, m);
1528 return (0); 1531 return (0);
1529} 1532}
1530 1533
1531int 1534int
1532mm_answer_pty_cleanup(int sock, Buffer *m) 1535mm_answer_pty_cleanup(int sock, struct sshbuf *m)
1533{ 1536{
1534 Session *s; 1537 Session *s;
1535 char *tty; 1538 char *tty;
1539 int r;
1536 1540
1537 debug3("%s entering", __func__); 1541 debug3("%s entering", __func__);
1538 1542
1539 tty = buffer_get_string(m, NULL); 1543 if ((r = sshbuf_get_cstring(m, &tty, NULL)) != 0)
1544 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1540 if ((s = session_by_tty(tty)) != NULL) 1545 if ((s = session_by_tty(tty)) != NULL)
1541 mm_session_close(s); 1546 mm_session_close(s);
1542 buffer_clear(m); 1547 sshbuf_reset(m);
1543 free(tty); 1548 free(tty);
1544 return (0); 1549 return (0);
1545} 1550}
1546 1551
1547int 1552int
1548mm_answer_term(int sock, Buffer *req) 1553mm_answer_term(int sock, struct sshbuf *req)
1549{ 1554{
1550 struct ssh *ssh = active_state; /* XXX */ 1555 struct ssh *ssh = active_state; /* XXX */
1551 extern struct monitor *pmonitor; 1556 extern struct monitor *pmonitor;
@@ -1574,14 +1579,18 @@ mm_answer_term(int sock, Buffer *req)
1574#ifdef SSH_AUDIT_EVENTS 1579#ifdef SSH_AUDIT_EVENTS
1575/* Report that an audit event occurred */ 1580/* Report that an audit event occurred */
1576int 1581int
1577mm_answer_audit_event(int socket, Buffer *m) 1582mm_answer_audit_event(int socket, struct sshbuf *m)
1578{ 1583{
1584 u_int n;
1579 ssh_audit_event_t event; 1585 ssh_audit_event_t event;
1586 int r;
1580 1587
1581 debug3("%s entering", __func__); 1588 debug3("%s entering", __func__);
1582 1589
1583 event = buffer_get_int(m); 1590 if ((r = sshbuf_get_u32(m, &n)) != 0)
1584 switch(event) { 1591 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1592 event = (ssh_audit_event_t)n;
1593 switch (event) {
1585 case SSH_AUTH_FAIL_PUBKEY: 1594 case SSH_AUTH_FAIL_PUBKEY:
1586 case SSH_AUTH_FAIL_HOSTBASED: 1595 case SSH_AUTH_FAIL_HOSTBASED:
1587 case SSH_AUTH_FAIL_GSSAPI: 1596 case SSH_AUTH_FAIL_GSSAPI:
@@ -1599,13 +1608,14 @@ mm_answer_audit_event(int socket, Buffer *m)
1599} 1608}
1600 1609
1601int 1610int
1602mm_answer_audit_command(int socket, Buffer *m) 1611mm_answer_audit_command(int socket, struct sshbuf *m)
1603{ 1612{
1604 u_int len;
1605 char *cmd; 1613 char *cmd;
1614 int r;
1606 1615
1607 debug3("%s entering", __func__); 1616 debug3("%s entering", __func__);
1608 cmd = buffer_get_string(m, &len); 1617 if ((r = sshbuf_get_cstring(m, &cmd, NULL)) != 0)
1618 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1609 /* sanity check command, if so how? */ 1619 /* sanity check command, if so how? */
1610 audit_run_command(cmd); 1620 audit_run_command(cmd);
1611 free(cmd); 1621 free(cmd);
@@ -1734,24 +1744,29 @@ monitor_reinit(struct monitor *mon)
1734 1744
1735#ifdef GSSAPI 1745#ifdef GSSAPI
1736int 1746int
1737mm_answer_gss_setup_ctx(int sock, Buffer *m) 1747mm_answer_gss_setup_ctx(int sock, struct sshbuf *m)
1738{ 1748{
1739 gss_OID_desc goid; 1749 gss_OID_desc goid;
1740 OM_uint32 major; 1750 OM_uint32 major;
1741 u_int len; 1751 size_t len;
1752 u_char *p;
1753 int r;
1742 1754
1743 if (!options.gss_authentication) 1755 if (!options.gss_authentication)
1744 fatal("%s: GSSAPI authentication not enabled", __func__); 1756 fatal("%s: GSSAPI authentication not enabled", __func__);
1745 1757
1746 goid.elements = buffer_get_string(m, &len); 1758 if ((r = sshbuf_get_string(m, &p, &len)) != 0)
1759 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1760 goid.elements = p;
1747 goid.length = len; 1761 goid.length = len;
1748 1762
1749 major = ssh_gssapi_server_ctx(&gsscontext, &goid); 1763 major = ssh_gssapi_server_ctx(&gsscontext, &goid);
1750 1764
1751 free(goid.elements); 1765 free(goid.elements);
1752 1766
1753 buffer_clear(m); 1767 sshbuf_reset(m);
1754 buffer_put_int(m, major); 1768 if ((r = sshbuf_put_u32(m, major)) != 0)
1769 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1755 1770
1756 mm_request_send(sock, MONITOR_ANS_GSSSETUP, m); 1771 mm_request_send(sock, MONITOR_ANS_GSSSETUP, m);
1757 1772
@@ -1762,26 +1777,27 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m)
1762} 1777}
1763 1778
1764int 1779int
1765mm_answer_gss_accept_ctx(int sock, Buffer *m) 1780mm_answer_gss_accept_ctx(int sock, struct sshbuf *m)
1766{ 1781{
1767 gss_buffer_desc in; 1782 gss_buffer_desc in;
1768 gss_buffer_desc out = GSS_C_EMPTY_BUFFER; 1783 gss_buffer_desc out = GSS_C_EMPTY_BUFFER;
1769 OM_uint32 major, minor; 1784 OM_uint32 major, minor;
1770 OM_uint32 flags = 0; /* GSI needs this */ 1785 OM_uint32 flags = 0; /* GSI needs this */
1771 u_int len; 1786 int r;
1772 1787
1773 if (!options.gss_authentication) 1788 if (!options.gss_authentication)
1774 fatal("%s: GSSAPI authentication not enabled", __func__); 1789 fatal("%s: GSSAPI authentication not enabled", __func__);
1775 1790
1776 in.value = buffer_get_string(m, &len); 1791 if ((r = ssh_gssapi_get_buffer_desc(m, &in)) != 0)
1777 in.length = len; 1792 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1778 major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags); 1793 major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags);
1779 free(in.value); 1794 free(in.value);
1780 1795
1781 buffer_clear(m); 1796 sshbuf_reset(m);
1782 buffer_put_int(m, major); 1797 if ((r = sshbuf_put_u32(m, major)) != 0 ||
1783 buffer_put_string(m, out.value, out.length); 1798 (r = sshbuf_put_string(m, out.value, out.length)) != 0 ||
1784 buffer_put_int(m, flags); 1799 (r = sshbuf_put_u32(m, flags)) != 0)
1800 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1785 mm_request_send(sock, MONITOR_ANS_GSSSTEP, m); 1801 mm_request_send(sock, MONITOR_ANS_GSSSTEP, m);
1786 1802
1787 gss_release_buffer(&minor, &out); 1803 gss_release_buffer(&minor, &out);
@@ -1795,27 +1811,27 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
1795} 1811}
1796 1812
1797int 1813int
1798mm_answer_gss_checkmic(int sock, Buffer *m) 1814mm_answer_gss_checkmic(int sock, struct sshbuf *m)
1799{ 1815{
1800 gss_buffer_desc gssbuf, mic; 1816 gss_buffer_desc gssbuf, mic;
1801 OM_uint32 ret; 1817 OM_uint32 ret;
1802 u_int len; 1818 int r;
1803 1819
1804 if (!options.gss_authentication) 1820 if (!options.gss_authentication)
1805 fatal("%s: GSSAPI authentication not enabled", __func__); 1821 fatal("%s: GSSAPI authentication not enabled", __func__);
1806 1822
1807 gssbuf.value = buffer_get_string(m, &len); 1823 if ((r = ssh_gssapi_get_buffer_desc(m, &gssbuf)) != 0 ||
1808 gssbuf.length = len; 1824 (r = ssh_gssapi_get_buffer_desc(m, &mic)) != 0)
1809 mic.value = buffer_get_string(m, &len); 1825 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1810 mic.length = len;
1811 1826
1812 ret = ssh_gssapi_checkmic(gsscontext, &gssbuf, &mic); 1827 ret = ssh_gssapi_checkmic(gsscontext, &gssbuf, &mic);
1813 1828
1814 free(gssbuf.value); 1829 free(gssbuf.value);
1815 free(mic.value); 1830 free(mic.value);
1816 1831
1817 buffer_clear(m); 1832 sshbuf_reset(m);
1818 buffer_put_int(m, ret); 1833 if ((r = sshbuf_put_u32(m, ret)) != 0)
1834 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1819 1835
1820 mm_request_send(sock, MONITOR_ANS_GSSCHECKMIC, m); 1836 mm_request_send(sock, MONITOR_ANS_GSSCHECKMIC, m);
1821 1837
@@ -1826,9 +1842,9 @@ mm_answer_gss_checkmic(int sock, Buffer *m)
1826} 1842}
1827 1843
1828int 1844int
1829mm_answer_gss_userok(int sock, Buffer *m) 1845mm_answer_gss_userok(int sock, struct sshbuf *m)
1830{ 1846{
1831 int authenticated; 1847 int r, authenticated;
1832 const char *displayname; 1848 const char *displayname;
1833 1849
1834 if (!options.gss_authentication) 1850 if (!options.gss_authentication)
@@ -1836,8 +1852,9 @@ mm_answer_gss_userok(int sock, Buffer *m)
1836 1852
1837 authenticated = authctxt->valid && ssh_gssapi_userok(authctxt->user); 1853 authenticated = authctxt->valid && ssh_gssapi_userok(authctxt->user);
1838 1854
1839 buffer_clear(m); 1855 sshbuf_reset(m);
1840 buffer_put_int(m, authenticated); 1856 if ((r = sshbuf_put_u32(m, authenticated)) != 0)
1857 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1841 1858
1842 debug3("%s: sending result %d", __func__, authenticated); 1859 debug3("%s: sending result %d", __func__, authenticated);
1843 mm_request_send(sock, MONITOR_ANS_GSSUSEROK, m); 1860 mm_request_send(sock, MONITOR_ANS_GSSUSEROK, m);
diff --git a/monitor.h b/monitor.h
index d68f67458..16047299f 100644
--- a/monitor.h
+++ b/monitor.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor.h,v 1.20 2016/09/28 16:33:07 djm Exp $ */ 1/* $OpenBSD: monitor.h,v 1.21 2018/07/09 21:53:45 markus Exp $ */
2 2
3/* 3/*
4 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 4 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
@@ -39,8 +39,6 @@ enum monitor_reqtype {
39 MONITOR_REQ_AUTHPASSWORD = 12, MONITOR_ANS_AUTHPASSWORD = 13, 39 MONITOR_REQ_AUTHPASSWORD = 12, MONITOR_ANS_AUTHPASSWORD = 13,
40 MONITOR_REQ_BSDAUTHQUERY = 14, MONITOR_ANS_BSDAUTHQUERY = 15, 40 MONITOR_REQ_BSDAUTHQUERY = 14, MONITOR_ANS_BSDAUTHQUERY = 15,
41 MONITOR_REQ_BSDAUTHRESPOND = 16, MONITOR_ANS_BSDAUTHRESPOND = 17, 41 MONITOR_REQ_BSDAUTHRESPOND = 16, MONITOR_ANS_BSDAUTHRESPOND = 17,
42 MONITOR_REQ_SKEYQUERY = 18, MONITOR_ANS_SKEYQUERY = 19,
43 MONITOR_REQ_SKEYRESPOND = 20, MONITOR_ANS_SKEYRESPOND = 21,
44 MONITOR_REQ_KEYALLOWED = 22, MONITOR_ANS_KEYALLOWED = 23, 42 MONITOR_REQ_KEYALLOWED = 22, MONITOR_ANS_KEYALLOWED = 23,
45 MONITOR_REQ_KEYVERIFY = 24, MONITOR_ANS_KEYVERIFY = 25, 43 MONITOR_REQ_KEYVERIFY = 24, MONITOR_ANS_KEYVERIFY = 25,
46 MONITOR_REQ_KEYEXPORT = 26, 44 MONITOR_REQ_KEYEXPORT = 26,
@@ -87,8 +85,8 @@ struct mon_table;
87int monitor_read(struct monitor*, struct mon_table *, struct mon_table **); 85int monitor_read(struct monitor*, struct mon_table *, struct mon_table **);
88 86
89/* Prototypes for request sending and receiving */ 87/* Prototypes for request sending and receiving */
90void mm_request_send(int, enum monitor_reqtype, Buffer *); 88void mm_request_send(int, enum monitor_reqtype, struct sshbuf *);
91void mm_request_receive(int, Buffer *); 89void mm_request_receive(int, struct sshbuf *);
92void mm_request_receive_expect(int, enum monitor_reqtype, Buffer *); 90void mm_request_receive_expect(int, enum monitor_reqtype, struct sshbuf *);
93 91
94#endif /* _MONITOR_H_ */ 92#endif /* _MONITOR_H_ */
diff --git a/monitor_wrap.c b/monitor_wrap.c
index 9666bda4b..732fb3476 100644
--- a/monitor_wrap.c
+++ b/monitor_wrap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.c,v 1.99 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.c,v 1.107 2018/07/20 03:46:34 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -50,8 +50,8 @@
50#ifdef WITH_OPENSSL 50#ifdef WITH_OPENSSL
51#include "dh.h" 51#include "dh.h"
52#endif 52#endif
53#include "buffer.h" 53#include "sshbuf.h"
54#include "key.h" 54#include "sshkey.h"
55#include "cipher.h" 55#include "cipher.h"
56#include "kex.h" 56#include "kex.h"
57#include "hostfile.h" 57#include "hostfile.h"
@@ -61,13 +61,6 @@
61#include "mac.h" 61#include "mac.h"
62#include "log.h" 62#include "log.h"
63#include "auth-pam.h" 63#include "auth-pam.h"
64#ifdef TARGET_OS_MAC /* XXX Broken krb5 headers on Mac */
65#undef TARGET_OS_MAC
66#include "zlib.h"
67#define TARGET_OS_MAC 1
68#else
69#include "zlib.h"
70#endif
71#include "monitor.h" 64#include "monitor.h"
72#ifdef GSSAPI 65#ifdef GSSAPI
73#include "ssh-gss.h" 66#include "ssh-gss.h"
@@ -84,36 +77,35 @@
84#include "ssherr.h" 77#include "ssherr.h"
85 78
86/* Imports */ 79/* Imports */
87extern z_stream incoming_stream;
88extern z_stream outgoing_stream;
89extern struct monitor *pmonitor; 80extern struct monitor *pmonitor;
90extern Buffer loginmsg; 81extern struct sshbuf *loginmsg;
91extern ServerOptions options; 82extern ServerOptions options;
92 83
93void 84void
94mm_log_handler(LogLevel level, const char *msg, void *ctx) 85mm_log_handler(LogLevel level, const char *msg, void *ctx)
95{ 86{
96 Buffer log_msg; 87 struct sshbuf *log_msg;
97 struct monitor *mon = (struct monitor *)ctx; 88 struct monitor *mon = (struct monitor *)ctx;
89 int r;
90 size_t len;
98 91
99 if (mon->m_log_sendfd == -1) 92 if (mon->m_log_sendfd == -1)
100 fatal("%s: no log channel", __func__); 93 fatal("%s: no log channel", __func__);
101 94
102 buffer_init(&log_msg); 95 if ((log_msg = sshbuf_new()) == NULL)
103 /* 96 fatal("%s: sshbuf_new failed", __func__);
104 * Placeholder for packet length. Will be filled in with the actual
105 * packet length once the packet has been constucted. This saves
106 * fragile math.
107 */
108 buffer_put_int(&log_msg, 0);
109 97
110 buffer_put_int(&log_msg, level); 98 if ((r = sshbuf_put_u32(log_msg, 0)) != 0 || /* length; filled below */
111 buffer_put_cstring(&log_msg, msg); 99 (r = sshbuf_put_u32(log_msg, level)) != 0 ||
112 put_u32(buffer_ptr(&log_msg), buffer_len(&log_msg) - 4); 100 (r = sshbuf_put_cstring(log_msg, msg)) != 0)
113 if (atomicio(vwrite, mon->m_log_sendfd, buffer_ptr(&log_msg), 101 fatal("%s: buffer error: %s", __func__, ssh_err(r));
114 buffer_len(&log_msg)) != buffer_len(&log_msg)) 102 if ((len = sshbuf_len(log_msg)) < 4 || len > 0xffffffff)
103 fatal("%s: bad length %zu", __func__, len);
104 POKE_U32(sshbuf_mutable_ptr(log_msg), len - 4);
105 if (atomicio(vwrite, mon->m_log_sendfd,
106 sshbuf_mutable_ptr(log_msg), len) != len)
115 fatal("%s: write: %s", __func__, strerror(errno)); 107 fatal("%s: write: %s", __func__, strerror(errno));
116 buffer_free(&log_msg); 108 sshbuf_free(log_msg);
117} 109}
118 110
119int 111int
@@ -127,26 +119,29 @@ mm_is_monitor(void)
127} 119}
128 120
129void 121void
130mm_request_send(int sock, enum monitor_reqtype type, Buffer *m) 122mm_request_send(int sock, enum monitor_reqtype type, struct sshbuf *m)
131{ 123{
132 u_int mlen = buffer_len(m); 124 size_t mlen = sshbuf_len(m);
133 u_char buf[5]; 125 u_char buf[5];
134 126
135 debug3("%s entering: type %d", __func__, type); 127 debug3("%s entering: type %d", __func__, type);
136 128
137 put_u32(buf, mlen + 1); 129 if (mlen >= 0xffffffff)
130 fatal("%s: bad length %zu", __func__, mlen);
131 POKE_U32(buf, mlen + 1);
138 buf[4] = (u_char) type; /* 1st byte of payload is mesg-type */ 132 buf[4] = (u_char) type; /* 1st byte of payload is mesg-type */
139 if (atomicio(vwrite, sock, buf, sizeof(buf)) != sizeof(buf)) 133 if (atomicio(vwrite, sock, buf, sizeof(buf)) != sizeof(buf))
140 fatal("%s: write: %s", __func__, strerror(errno)); 134 fatal("%s: write: %s", __func__, strerror(errno));
141 if (atomicio(vwrite, sock, buffer_ptr(m), mlen) != mlen) 135 if (atomicio(vwrite, sock, sshbuf_mutable_ptr(m), mlen) != mlen)
142 fatal("%s: write: %s", __func__, strerror(errno)); 136 fatal("%s: write: %s", __func__, strerror(errno));
143} 137}
144 138
145void 139void
146mm_request_receive(int sock, Buffer *m) 140mm_request_receive(int sock, struct sshbuf *m)
147{ 141{
148 u_char buf[4]; 142 u_char buf[4], *p = NULL;
149 u_int msg_len; 143 u_int msg_len;
144 int r;
150 145
151 debug3("%s entering", __func__); 146 debug3("%s entering", __func__);
152 147
@@ -155,24 +150,27 @@ mm_request_receive(int sock, Buffer *m)
155 cleanup_exit(255); 150 cleanup_exit(255);
156 fatal("%s: read: %s", __func__, strerror(errno)); 151 fatal("%s: read: %s", __func__, strerror(errno));
157 } 152 }
158 msg_len = get_u32(buf); 153 msg_len = PEEK_U32(buf);
159 if (msg_len > 256 * 1024) 154 if (msg_len > 256 * 1024)
160 fatal("%s: read: bad msg_len %d", __func__, msg_len); 155 fatal("%s: read: bad msg_len %d", __func__, msg_len);
161 buffer_clear(m); 156 sshbuf_reset(m);
162 buffer_append_space(m, msg_len); 157 if ((r = sshbuf_reserve(m, msg_len, &p)) != 0)
163 if (atomicio(read, sock, buffer_ptr(m), msg_len) != msg_len) 158 fatal("%s: buffer error: %s", __func__, ssh_err(r));
159 if (atomicio(read, sock, p, msg_len) != msg_len)
164 fatal("%s: read: %s", __func__, strerror(errno)); 160 fatal("%s: read: %s", __func__, strerror(errno));
165} 161}
166 162
167void 163void
168mm_request_receive_expect(int sock, enum monitor_reqtype type, Buffer *m) 164mm_request_receive_expect(int sock, enum monitor_reqtype type, struct sshbuf *m)
169{ 165{
170 u_char rtype; 166 u_char rtype;
167 int r;
171 168
172 debug3("%s entering: type %d", __func__, type); 169 debug3("%s entering: type %d", __func__, type);
173 170
174 mm_request_receive(sock, m); 171 mm_request_receive(sock, m);
175 rtype = buffer_get_char(m); 172 if ((r = sshbuf_get_u8(m, &rtype)) != 0)
173 fatal("%s: buffer error: %s", __func__, ssh_err(r));
176 if (rtype != type) 174 if (rtype != type)
177 fatal("%s: read: rtype %d != type %d", __func__, 175 fatal("%s: read: rtype %d != type %d", __func__,
178 rtype, type); 176 rtype, type);
@@ -183,20 +181,24 @@ DH *
183mm_choose_dh(int min, int nbits, int max) 181mm_choose_dh(int min, int nbits, int max)
184{ 182{
185 BIGNUM *p, *g; 183 BIGNUM *p, *g;
186 int success = 0; 184 int r;
187 Buffer m; 185 u_char success = 0;
186 struct sshbuf *m;
188 187
189 buffer_init(&m); 188 if ((m = sshbuf_new()) == NULL)
190 buffer_put_int(&m, min); 189 fatal("%s: sshbuf_new failed", __func__);
191 buffer_put_int(&m, nbits); 190 if ((r = sshbuf_put_u32(m, min)) != 0 ||
192 buffer_put_int(&m, max); 191 (r = sshbuf_put_u32(m, nbits)) != 0 ||
192 (r = sshbuf_put_u32(m, max)) != 0)
193 fatal("%s: buffer error: %s", __func__, ssh_err(r));
193 194
194 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_MODULI, &m); 195 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_MODULI, m);
195 196
196 debug3("%s: waiting for MONITOR_ANS_MODULI", __func__); 197 debug3("%s: waiting for MONITOR_ANS_MODULI", __func__);
197 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_MODULI, &m); 198 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_MODULI, m);
198 199
199 success = buffer_get_char(&m); 200 if ((r = sshbuf_get_u8(m, &success)) != 0)
201 fatal("%s: buffer error: %s", __func__, ssh_err(r));
200 if (success == 0) 202 if (success == 0)
201 fatal("%s: MONITOR_ANS_MODULI failed", __func__); 203 fatal("%s: MONITOR_ANS_MODULI failed", __func__);
202 204
@@ -204,36 +206,43 @@ mm_choose_dh(int min, int nbits, int max)
204 fatal("%s: BN_new failed", __func__); 206 fatal("%s: BN_new failed", __func__);
205 if ((g = BN_new()) == NULL) 207 if ((g = BN_new()) == NULL)
206 fatal("%s: BN_new failed", __func__); 208 fatal("%s: BN_new failed", __func__);
207 buffer_get_bignum2(&m, p); 209 if ((r = sshbuf_get_bignum2(m, p)) != 0 ||
208 buffer_get_bignum2(&m, g); 210 (r = sshbuf_get_bignum2(m, g)) != 0)
211 fatal("%s: buffer error: %s", __func__, ssh_err(r));
209 212
210 debug3("%s: remaining %d", __func__, buffer_len(&m)); 213 debug3("%s: remaining %zu", __func__, sshbuf_len(m));
211 buffer_free(&m); 214 sshbuf_free(m);
212 215
213 return (dh_new_group(g, p)); 216 return (dh_new_group(g, p));
214} 217}
215#endif 218#endif
216 219
217int 220int
218mm_key_sign(struct sshkey *key, u_char **sigp, u_int *lenp, 221mm_sshkey_sign(struct sshkey *key, u_char **sigp, size_t *lenp,
219 const u_char *data, u_int datalen, const char *hostkey_alg) 222 const u_char *data, size_t datalen, const char *hostkey_alg, u_int compat)
220{ 223{
221 struct kex *kex = *pmonitor->m_pkex; 224 struct kex *kex = *pmonitor->m_pkex;
222 Buffer m; 225 struct sshbuf *m;
226 u_int ndx = kex->host_key_index(key, 0, active_state);
227 int r;
223 228
224 debug3("%s entering", __func__); 229 debug3("%s entering", __func__);
225 230
226 buffer_init(&m); 231 if ((m = sshbuf_new()) == NULL)
227 buffer_put_int(&m, kex->host_key_index(key, 0, active_state)); 232 fatal("%s: sshbuf_new failed", __func__);
228 buffer_put_string(&m, data, datalen); 233 if ((r = sshbuf_put_u32(m, ndx)) != 0 ||
229 buffer_put_cstring(&m, hostkey_alg); 234 (r = sshbuf_put_string(m, data, datalen)) != 0 ||
235 (r = sshbuf_put_cstring(m, hostkey_alg)) != 0 ||
236 (r = sshbuf_put_u32(m, compat)) != 0)
237 fatal("%s: buffer error: %s", __func__, ssh_err(r));
230 238
231 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SIGN, &m); 239 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SIGN, m);
232 240
233 debug3("%s: waiting for MONITOR_ANS_SIGN", __func__); 241 debug3("%s: waiting for MONITOR_ANS_SIGN", __func__);
234 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SIGN, &m); 242 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SIGN, m);
235 *sigp = buffer_get_string(&m, lenp); 243 if ((r = sshbuf_get_string(m, sigp, lenp)) != 0)
236 buffer_free(&m); 244 fatal("%s: buffer error: %s", __func__, ssh_err(r));
245 sshbuf_free(m);
237 246
238 return (0); 247 return (0);
239} 248}
@@ -242,54 +251,80 @@ struct passwd *
242mm_getpwnamallow(const char *username) 251mm_getpwnamallow(const char *username)
243{ 252{
244 struct ssh *ssh = active_state; /* XXX */ 253 struct ssh *ssh = active_state; /* XXX */
245 Buffer m; 254 struct sshbuf *m;
246 struct passwd *pw; 255 struct passwd *pw;
247 u_int len, i; 256 size_t len;
257 u_int i;
248 ServerOptions *newopts; 258 ServerOptions *newopts;
259 int r;
260 u_char ok;
261 const u_char *p;
249 262
250 debug3("%s entering", __func__); 263 debug3("%s entering", __func__);
251 264
252 buffer_init(&m); 265 if ((m = sshbuf_new()) == NULL)
253 buffer_put_cstring(&m, username); 266 fatal("%s: sshbuf_new failed", __func__);
267 if ((r = sshbuf_put_cstring(m, username)) != 0)
268 fatal("%s: buffer error: %s", __func__, ssh_err(r));
254 269
255 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PWNAM, &m); 270 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PWNAM, m);
256 271
257 debug3("%s: waiting for MONITOR_ANS_PWNAM", __func__); 272 debug3("%s: waiting for MONITOR_ANS_PWNAM", __func__);
258 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PWNAM, &m); 273 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PWNAM, m);
259 274
260 if (buffer_get_char(&m) == 0) { 275 if ((r = sshbuf_get_u8(m, &ok)) != 0)
276 fatal("%s: buffer error: %s", __func__, ssh_err(r));
277 if (ok == 0) {
261 pw = NULL; 278 pw = NULL;
262 goto out; 279 goto out;
263 } 280 }
264 pw = buffer_get_string(&m, &len); 281
265 if (len != sizeof(struct passwd)) 282 /* XXX don't like passing struct passwd like this */
283 pw = xcalloc(sizeof(*pw), 1);
284 if ((r = sshbuf_get_string_direct(m, &p, &len)) != 0)
285 fatal("%s: buffer error: %s", __func__, ssh_err(r));
286 if (len != sizeof(*pw))
266 fatal("%s: struct passwd size mismatch", __func__); 287 fatal("%s: struct passwd size mismatch", __func__);
267 pw->pw_name = buffer_get_string(&m, NULL); 288 memcpy(pw, p, sizeof(*pw));
268 pw->pw_passwd = buffer_get_string(&m, NULL); 289
290 if ((r = sshbuf_get_cstring(m, &pw->pw_name, NULL)) != 0 ||
291 (r = sshbuf_get_cstring(m, &pw->pw_passwd, NULL)) != 0 ||
269#ifdef HAVE_STRUCT_PASSWD_PW_GECOS 292#ifdef HAVE_STRUCT_PASSWD_PW_GECOS
270 pw->pw_gecos = buffer_get_string(&m, NULL); 293 (r = sshbuf_get_cstring(m, &pw->pw_gecos, NULL)) != 0 ||
271#endif 294#endif
272#ifdef HAVE_STRUCT_PASSWD_PW_CLASS 295#ifdef HAVE_STRUCT_PASSWD_PW_CLASS
273 pw->pw_class = buffer_get_string(&m, NULL); 296 (r = sshbuf_get_cstring(m, &pw->pw_class, NULL)) != 0 ||
274#endif 297#endif
275 pw->pw_dir = buffer_get_string(&m, NULL); 298 (r = sshbuf_get_cstring(m, &pw->pw_dir, NULL)) != 0 ||
276 pw->pw_shell = buffer_get_string(&m, NULL); 299 (r = sshbuf_get_cstring(m, &pw->pw_shell, NULL)) != 0)
300 fatal("%s: buffer error: %s", __func__, ssh_err(r));
277 301
278out: 302out:
279 /* copy options block as a Match directive may have changed some */ 303 /* copy options block as a Match directive may have changed some */
280 newopts = buffer_get_string(&m, &len); 304 if ((r = sshbuf_get_string_direct(m, &p, &len)) != 0)
305 fatal("%s: buffer error: %s", __func__, ssh_err(r));
281 if (len != sizeof(*newopts)) 306 if (len != sizeof(*newopts))
282 fatal("%s: option block size mismatch", __func__); 307 fatal("%s: option block size mismatch", __func__);
308 newopts = xcalloc(sizeof(*newopts), 1);
309 memcpy(newopts, p, sizeof(*newopts));
283 310
284#define M_CP_STROPT(x) do { \ 311#define M_CP_STROPT(x) do { \
285 if (newopts->x != NULL) \ 312 if (newopts->x != NULL) { \
286 newopts->x = buffer_get_string(&m, NULL); \ 313 if ((r = sshbuf_get_cstring(m, \
314 &newopts->x, NULL)) != 0) \
315 fatal("%s: buffer error: %s", \
316 __func__, ssh_err(r)); \
317 } \
287 } while (0) 318 } while (0)
288#define M_CP_STRARRAYOPT(x, nx) do { \ 319#define M_CP_STRARRAYOPT(x, nx) do { \
289 newopts->x = newopts->nx == 0 ? \ 320 newopts->x = newopts->nx == 0 ? \
290 NULL : xcalloc(newopts->nx, sizeof(*newopts->x)); \ 321 NULL : xcalloc(newopts->nx, sizeof(*newopts->x)); \
291 for (i = 0; i < newopts->nx; i++) \ 322 for (i = 0; i < newopts->nx; i++) { \
292 newopts->x[i] = buffer_get_string(&m, NULL); \ 323 if ((r = sshbuf_get_cstring(m, \
324 &newopts->x[i], NULL)) != 0) \
325 fatal("%s: buffer error: %s", \
326 __func__, ssh_err(r)); \
327 } \
293 } while (0) 328 } while (0)
294 /* See comment in servconf.h */ 329 /* See comment in servconf.h */
295 COPY_MATCH_STRING_OPTS(); 330 COPY_MATCH_STRING_OPTS();
@@ -301,7 +336,7 @@ out:
301 process_permitopen(ssh, &options); 336 process_permitopen(ssh, &options);
302 free(newopts); 337 free(newopts);
303 338
304 buffer_free(&m); 339 sshbuf_free(m);
305 340
306 return (pw); 341 return (pw);
307} 342}
@@ -309,19 +344,22 @@ out:
309char * 344char *
310mm_auth2_read_banner(void) 345mm_auth2_read_banner(void)
311{ 346{
312 Buffer m; 347 struct sshbuf *m;
313 char *banner; 348 char *banner;
349 int r;
314 350
315 debug3("%s entering", __func__); 351 debug3("%s entering", __func__);
316 352
317 buffer_init(&m); 353 if ((m = sshbuf_new()) == NULL)
318 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, &m); 354 fatal("%s: sshbuf_new failed", __func__);
319 buffer_clear(&m); 355 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, m);
356 sshbuf_reset(m);
320 357
321 mm_request_receive_expect(pmonitor->m_recvfd, 358 mm_request_receive_expect(pmonitor->m_recvfd,
322 MONITOR_ANS_AUTH2_READ_BANNER, &m); 359 MONITOR_ANS_AUTH2_READ_BANNER, m);
323 banner = buffer_get_string(&m, NULL); 360 if ((r = sshbuf_get_cstring(m, &banner, NULL)) != 0)
324 buffer_free(&m); 361 fatal("%s: buffer error: %s", __func__, ssh_err(r));
362 sshbuf_free(m);
325 363
326 /* treat empty banner as missing banner */ 364 /* treat empty banner as missing banner */
327 if (strlen(banner) == 0) { 365 if (strlen(banner) == 0) {
@@ -336,41 +374,55 @@ mm_auth2_read_banner(void)
336void 374void
337mm_inform_authserv(char *service, char *style) 375mm_inform_authserv(char *service, char *style)
338{ 376{
339 Buffer m; 377 struct sshbuf *m;
378 int r;
340 379
341 debug3("%s entering", __func__); 380 debug3("%s entering", __func__);
342 381
343 buffer_init(&m); 382 if ((m = sshbuf_new()) == NULL)
344 buffer_put_cstring(&m, service); 383 fatal("%s: sshbuf_new failed", __func__);
345 buffer_put_cstring(&m, style ? style : ""); 384 if ((r = sshbuf_put_cstring(m, service)) != 0 ||
385 (r = sshbuf_put_cstring(m, style ? style : "")) != 0)
386 fatal("%s: buffer error: %s", __func__, ssh_err(r));
346 387
347 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, &m); 388 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, m);
348 389
349 buffer_free(&m); 390 sshbuf_free(m);
350} 391}
351 392
352/* Do the password authentication */ 393/* Do the password authentication */
353int 394int
354mm_auth_password(struct ssh *ssh, char *password) 395mm_auth_password(struct ssh *ssh, char *password)
355{ 396{
356 Buffer m; 397 struct sshbuf *m;
357 int authenticated = 0; 398 int r, authenticated = 0;
399#ifdef USE_PAM
400 u_int maxtries = 0;
401#endif
358 402
359 debug3("%s entering", __func__); 403 debug3("%s entering", __func__);
360 404
361 buffer_init(&m); 405 if ((m = sshbuf_new()) == NULL)
362 buffer_put_cstring(&m, password); 406 fatal("%s: sshbuf_new failed", __func__);
363 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHPASSWORD, &m); 407 if ((r = sshbuf_put_cstring(m, password)) != 0)
408 fatal("%s: buffer error: %s", __func__, ssh_err(r));
409 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHPASSWORD, m);
364 410
365 debug3("%s: waiting for MONITOR_ANS_AUTHPASSWORD", __func__); 411 debug3("%s: waiting for MONITOR_ANS_AUTHPASSWORD", __func__);
366 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUTHPASSWORD, &m); 412 mm_request_receive_expect(pmonitor->m_recvfd,
413 MONITOR_ANS_AUTHPASSWORD, m);
367 414
368 authenticated = buffer_get_int(&m); 415 if ((r = sshbuf_get_u32(m, &authenticated)) != 0)
416 fatal("%s: buffer error: %s", __func__, ssh_err(r));
369#ifdef USE_PAM 417#ifdef USE_PAM
370 sshpam_set_maxtries_reached(buffer_get_int(&m)); 418 if ((r = sshbuf_get_u32(m, &maxtries)) != 0)
419 fatal("%s: buffer error: %s", __func__, ssh_err(r));
420 if (maxtries > INT_MAX)
421 fatal("%s: bad maxtries %u", __func__, maxtries);
422 sshpam_set_maxtries_reached(maxtries);
371#endif 423#endif
372 424
373 buffer_free(&m); 425 sshbuf_free(m);
374 426
375 debug3("%s: user %sauthenticated", 427 debug3("%s: user %sauthenticated",
376 __func__, authenticated ? "" : "not "); 428 __func__, authenticated ? "" : "not ");
@@ -396,9 +448,7 @@ int
396mm_key_allowed(enum mm_keytype type, const char *user, const char *host, 448mm_key_allowed(enum mm_keytype type, const char *user, const char *host,
397 struct sshkey *key, int pubkey_auth_attempt, struct sshauthopt **authoptp) 449 struct sshkey *key, int pubkey_auth_attempt, struct sshauthopt **authoptp)
398{ 450{
399 Buffer m; 451 struct sshbuf *m;
400 u_char *blob;
401 u_int len;
402 int r, allowed = 0; 452 int r, allowed = 0;
403 struct sshauthopt *opts = NULL; 453 struct sshauthopt *opts = NULL;
404 454
@@ -407,31 +457,29 @@ mm_key_allowed(enum mm_keytype type, const char *user, const char *host,
407 if (authoptp != NULL) 457 if (authoptp != NULL)
408 *authoptp = NULL; 458 *authoptp = NULL;
409 459
410 /* Convert the key to a blob and the pass it over */ 460 if ((m = sshbuf_new()) == NULL)
411 if (!key_to_blob(key, &blob, &len)) 461 fatal("%s: sshbuf_new failed", __func__);
412 return 0; 462 if ((r = sshbuf_put_u32(m, type)) != 0 ||
413 463 (r = sshbuf_put_cstring(m, user ? user : "")) != 0 ||
414 buffer_init(&m); 464 (r = sshbuf_put_cstring(m, host ? host : "")) != 0 ||
415 buffer_put_int(&m, type); 465 (r = sshkey_puts(key, m)) != 0 ||
416 buffer_put_cstring(&m, user ? user : ""); 466 (r = sshbuf_put_u32(m, pubkey_auth_attempt)) != 0)
417 buffer_put_cstring(&m, host ? host : ""); 467 fatal("%s: buffer error: %s", __func__, ssh_err(r));
418 buffer_put_string(&m, blob, len);
419 buffer_put_int(&m, pubkey_auth_attempt);
420 free(blob);
421 468
422 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); 469 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, m);
423 470
424 debug3("%s: waiting for MONITOR_ANS_KEYALLOWED", __func__); 471 debug3("%s: waiting for MONITOR_ANS_KEYALLOWED", __func__);
425 mm_request_receive_expect(pmonitor->m_recvfd, 472 mm_request_receive_expect(pmonitor->m_recvfd,
426 MONITOR_ANS_KEYALLOWED, &m); 473 MONITOR_ANS_KEYALLOWED, m);
427 474
428 allowed = buffer_get_int(&m); 475 if ((r = sshbuf_get_u32(m, &allowed)) != 0)
476 fatal("%s: buffer error: %s", __func__, ssh_err(r));
429 if (allowed && type == MM_USERKEY) { 477 if (allowed && type == MM_USERKEY) {
430 if ((r = sshauthopt_deserialise(&m, &opts)) != 0) 478 if ((r = sshauthopt_deserialise(m, &opts)) != 0)
431 fatal("%s: sshauthopt_deserialise: %s", 479 fatal("%s: sshauthopt_deserialise: %s",
432 __func__, ssh_err(r)); 480 __func__, ssh_err(r));
433 } 481 }
434 buffer_free(&m); 482 sshbuf_free(m);
435 483
436 if (authoptp != NULL) { 484 if (authoptp != NULL) {
437 *authoptp = opts; 485 *authoptp = opts;
@@ -452,32 +500,31 @@ int
452mm_sshkey_verify(const struct sshkey *key, const u_char *sig, size_t siglen, 500mm_sshkey_verify(const struct sshkey *key, const u_char *sig, size_t siglen,
453 const u_char *data, size_t datalen, const char *sigalg, u_int compat) 501 const u_char *data, size_t datalen, const char *sigalg, u_int compat)
454{ 502{
455 Buffer m; 503 struct sshbuf *m;
456 u_char *blob;
457 u_int len;
458 u_int encoded_ret = 0; 504 u_int encoded_ret = 0;
505 int r;
459 506
460 debug3("%s entering", __func__); 507 debug3("%s entering", __func__);
461 508
462 /* Convert the key to a blob and the pass it over */
463 if (!key_to_blob(key, &blob, &len))
464 return (0);
465 509
466 buffer_init(&m); 510 if ((m = sshbuf_new()) == NULL)
467 buffer_put_string(&m, blob, len); 511 fatal("%s: sshbuf_new failed", __func__);
468 buffer_put_string(&m, sig, siglen); 512 if ((r = sshkey_puts(key, m)) != 0 ||
469 buffer_put_string(&m, data, datalen); 513 (r = sshbuf_put_string(m, sig, siglen)) != 0 ||
470 buffer_put_cstring(&m, sigalg == NULL ? "" : sigalg); 514 (r = sshbuf_put_string(m, data, datalen)) != 0 ||
471 free(blob); 515 (r = sshbuf_put_cstring(m, sigalg == NULL ? "" : sigalg)) != 0)
516 fatal("%s: buffer error: %s", __func__, ssh_err(r));
472 517
473 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); 518 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, m);
474 519
475 debug3("%s: waiting for MONITOR_ANS_KEYVERIFY", __func__); 520 debug3("%s: waiting for MONITOR_ANS_KEYVERIFY", __func__);
476 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_KEYVERIFY, &m); 521 mm_request_receive_expect(pmonitor->m_recvfd,
522 MONITOR_ANS_KEYVERIFY, m);
477 523
478 encoded_ret = buffer_get_int(&m); 524 if ((r = sshbuf_get_u32(m, &encoded_ret)) != 0)
525 fatal("%s: buffer error: %s", __func__, ssh_err(r));
479 526
480 buffer_free(&m); 527 sshbuf_free(m);
481 528
482 if (encoded_ret != 0) 529 if (encoded_ret != 0)
483 return SSH_ERR_SIGNATURE_INVALID; 530 return SSH_ERR_SIGNATURE_INVALID;
@@ -504,9 +551,9 @@ mm_send_keystate(struct monitor *monitor)
504int 551int
505mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen) 552mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen)
506{ 553{
507 Buffer m; 554 struct sshbuf *m;
508 char *p, *msg; 555 char *p, *msg;
509 int success = 0, tmp1 = -1, tmp2 = -1; 556 int success = 0, tmp1 = -1, tmp2 = -1, r;
510 557
511 /* Kludge: ensure there are fds free to receive the pty/tty */ 558 /* Kludge: ensure there are fds free to receive the pty/tty */
512 if ((tmp1 = dup(pmonitor->m_recvfd)) == -1 || 559 if ((tmp1 = dup(pmonitor->m_recvfd)) == -1 ||
@@ -521,26 +568,30 @@ mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen)
521 close(tmp1); 568 close(tmp1);
522 close(tmp2); 569 close(tmp2);
523 570
524 buffer_init(&m); 571 if ((m = sshbuf_new()) == NULL)
525 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTY, &m); 572 fatal("%s: sshbuf_new failed", __func__);
573 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTY, m);
526 574
527 debug3("%s: waiting for MONITOR_ANS_PTY", __func__); 575 debug3("%s: waiting for MONITOR_ANS_PTY", __func__);
528 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PTY, &m); 576 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PTY, m);
529 577
530 success = buffer_get_int(&m); 578 if ((r = sshbuf_get_u32(m, &success)) != 0)
579 fatal("%s: buffer error: %s", __func__, ssh_err(r));
531 if (success == 0) { 580 if (success == 0) {
532 debug3("%s: pty alloc failed", __func__); 581 debug3("%s: pty alloc failed", __func__);
533 buffer_free(&m); 582 sshbuf_free(m);
534 return (0); 583 return (0);
535 } 584 }
536 p = buffer_get_string(&m, NULL); 585 if ((r = sshbuf_get_cstring(m, &p, NULL)) != 0 ||
537 msg = buffer_get_string(&m, NULL); 586 (r = sshbuf_get_cstring(m, &msg, NULL)) != 0)
538 buffer_free(&m); 587 fatal("%s: buffer error: %s", __func__, ssh_err(r));
588 sshbuf_free(m);
539 589
540 strlcpy(namebuf, p, namebuflen); /* Possible truncation */ 590 strlcpy(namebuf, p, namebuflen); /* Possible truncation */
541 free(p); 591 free(p);
542 592
543 buffer_append(&loginmsg, msg, strlen(msg)); 593 if ((r = sshbuf_put(loginmsg, msg, strlen(msg))) != 0)
594 fatal("%s: buffer error: %s", __func__, ssh_err(r));
544 free(msg); 595 free(msg);
545 596
546 if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 || 597 if ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 ||
@@ -554,14 +605,17 @@ mm_pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen)
554void 605void
555mm_session_pty_cleanup2(Session *s) 606mm_session_pty_cleanup2(Session *s)
556{ 607{
557 Buffer m; 608 struct sshbuf *m;
609 int r;
558 610
559 if (s->ttyfd == -1) 611 if (s->ttyfd == -1)
560 return; 612 return;
561 buffer_init(&m); 613 if ((m = sshbuf_new()) == NULL)
562 buffer_put_cstring(&m, s->tty); 614 fatal("%s: sshbuf_new failed", __func__);
563 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTYCLEANUP, &m); 615 if ((r = sshbuf_put_cstring(m, s->tty)) != 0)
564 buffer_free(&m); 616 fatal("%s: buffer error: %s", __func__, ssh_err(r));
617 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTYCLEANUP, m);
618 sshbuf_free(m);
565 619
566 /* closed dup'ed master */ 620 /* closed dup'ed master */
567 if (s->ptymaster != -1 && close(s->ptymaster) < 0) 621 if (s->ptymaster != -1 && close(s->ptymaster) < 0)
@@ -576,40 +630,44 @@ mm_session_pty_cleanup2(Session *s)
576void 630void
577mm_start_pam(Authctxt *authctxt) 631mm_start_pam(Authctxt *authctxt)
578{ 632{
579 Buffer m; 633 struct sshbuf *m;
580 634
581 debug3("%s entering", __func__); 635 debug3("%s entering", __func__);
582 if (!options.use_pam) 636 if (!options.use_pam)
583 fatal("UsePAM=no, but ended up in %s anyway", __func__); 637 fatal("UsePAM=no, but ended up in %s anyway", __func__);
638 if ((m = sshbuf_new()) == NULL)
639 fatal("%s: sshbuf_new failed", __func__);
640 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_START, m);
584 641
585 buffer_init(&m); 642 sshbuf_free(m);
586 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_START, &m);
587
588 buffer_free(&m);
589} 643}
590 644
591u_int 645u_int
592mm_do_pam_account(void) 646mm_do_pam_account(void)
593{ 647{
594 Buffer m; 648 struct sshbuf *m;
595 u_int ret; 649 u_int ret;
596 char *msg; 650 char *msg;
651 size_t msglen;
652 int r;
597 653
598 debug3("%s entering", __func__); 654 debug3("%s entering", __func__);
599 if (!options.use_pam) 655 if (!options.use_pam)
600 fatal("UsePAM=no, but ended up in %s anyway", __func__); 656 fatal("UsePAM=no, but ended up in %s anyway", __func__);
601 657
602 buffer_init(&m); 658 if ((m = sshbuf_new()) == NULL)
603 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_ACCOUNT, &m); 659 fatal("%s: sshbuf_new failed", __func__);
660 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_ACCOUNT, m);
604 661
605 mm_request_receive_expect(pmonitor->m_recvfd, 662 mm_request_receive_expect(pmonitor->m_recvfd,
606 MONITOR_ANS_PAM_ACCOUNT, &m); 663 MONITOR_ANS_PAM_ACCOUNT, m);
607 ret = buffer_get_int(&m); 664 if ((r = sshbuf_get_u32(m, &ret)) != 0 ||
608 msg = buffer_get_string(&m, NULL); 665 (r = sshbuf_get_cstring(m, &msg, &msglen)) != 0 ||
609 buffer_append(&loginmsg, msg, strlen(msg)); 666 (r = sshbuf_put(loginmsg, msg, msglen)) != 0)
610 free(msg); 667 fatal("%s: buffer error: %s", __func__, ssh_err(r));
611 668
612 buffer_free(&m); 669 free(msg);
670 sshbuf_free(m);
613 671
614 debug3("%s returning %d", __func__, ret); 672 debug3("%s returning %d", __func__, ret);
615 673
@@ -619,21 +677,24 @@ mm_do_pam_account(void)
619void * 677void *
620mm_sshpam_init_ctx(Authctxt *authctxt) 678mm_sshpam_init_ctx(Authctxt *authctxt)
621{ 679{
622 Buffer m; 680 struct sshbuf *m;
623 int success; 681 int r, success;
624 682
625 debug3("%s", __func__); 683 debug3("%s", __func__);
626 buffer_init(&m); 684 if ((m = sshbuf_new()) == NULL)
627 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_INIT_CTX, &m); 685 fatal("%s: sshbuf_new failed", __func__);
686 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_INIT_CTX, m);
628 debug3("%s: waiting for MONITOR_ANS_PAM_INIT_CTX", __func__); 687 debug3("%s: waiting for MONITOR_ANS_PAM_INIT_CTX", __func__);
629 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_INIT_CTX, &m); 688 mm_request_receive_expect(pmonitor->m_recvfd,
630 success = buffer_get_int(&m); 689 MONITOR_ANS_PAM_INIT_CTX, m);
690 if ((r = sshbuf_get_u32(m, &success)) != 0)
691 fatal("%s: buffer error: %s", __func__, ssh_err(r));
631 if (success == 0) { 692 if (success == 0) {
632 debug3("%s: pam_init_ctx failed", __func__); 693 debug3("%s: pam_init_ctx failed", __func__);
633 buffer_free(&m); 694 sshbuf_free(m);
634 return (NULL); 695 return (NULL);
635 } 696 }
636 buffer_free(&m); 697 sshbuf_free(m);
637 return (authctxt); 698 return (authctxt);
638} 699}
639 700
@@ -641,66 +702,79 @@ int
641mm_sshpam_query(void *ctx, char **name, char **info, 702mm_sshpam_query(void *ctx, char **name, char **info,
642 u_int *num, char ***prompts, u_int **echo_on) 703 u_int *num, char ***prompts, u_int **echo_on)
643{ 704{
644 Buffer m; 705 struct sshbuf *m;
645 u_int i; 706 u_int i, n;
646 int ret; 707 int r, ret;
647 708
648 debug3("%s", __func__); 709 debug3("%s", __func__);
649 buffer_init(&m); 710 if ((m = sshbuf_new()) == NULL)
650 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_QUERY, &m); 711 fatal("%s: sshbuf_new failed", __func__);
712 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_QUERY, m);
651 debug3("%s: waiting for MONITOR_ANS_PAM_QUERY", __func__); 713 debug3("%s: waiting for MONITOR_ANS_PAM_QUERY", __func__);
652 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_QUERY, &m); 714 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_QUERY, m);
653 ret = buffer_get_int(&m); 715 if ((r = sshbuf_get_u32(m, &ret)) != 0 ||
716 (r = sshbuf_get_cstring(m, name, NULL)) != 0 ||
717 (r = sshbuf_get_cstring(m, info, NULL)) != 0 ||
718 (r = sshbuf_get_u32(m, &n)) != 0 ||
719 (r = sshbuf_get_u32(m, num)) != 0)
720 fatal("%s: buffer error: %s", __func__, ssh_err(r));
654 debug3("%s: pam_query returned %d", __func__, ret); 721 debug3("%s: pam_query returned %d", __func__, ret);
655 *name = buffer_get_string(&m, NULL); 722 sshpam_set_maxtries_reached(n);
656 *info = buffer_get_string(&m, NULL);
657 sshpam_set_maxtries_reached(buffer_get_int(&m));
658 *num = buffer_get_int(&m);
659 if (*num > PAM_MAX_NUM_MSG) 723 if (*num > PAM_MAX_NUM_MSG)
660 fatal("%s: recieved %u PAM messages, expected <= %u", 724 fatal("%s: received %u PAM messages, expected <= %u",
661 __func__, *num, PAM_MAX_NUM_MSG); 725 __func__, *num, PAM_MAX_NUM_MSG);
662 *prompts = xcalloc((*num + 1), sizeof(char *)); 726 *prompts = xcalloc((*num + 1), sizeof(char *));
663 *echo_on = xcalloc((*num + 1), sizeof(u_int)); 727 *echo_on = xcalloc((*num + 1), sizeof(u_int));
664 for (i = 0; i < *num; ++i) { 728 for (i = 0; i < *num; ++i) {
665 (*prompts)[i] = buffer_get_string(&m, NULL); 729 if ((r = sshbuf_get_cstring(m, &((*prompts)[i]), NULL)) != 0 ||
666 (*echo_on)[i] = buffer_get_int(&m); 730 (r = sshbuf_get_u32(m, &((*echo_on)[i]))) != 0)
731 fatal("%s: buffer error: %s", __func__, ssh_err(r));
667 } 732 }
668 buffer_free(&m); 733 sshbuf_free(m);
669 return (ret); 734 return (ret);
670} 735}
671 736
672int 737int
673mm_sshpam_respond(void *ctx, u_int num, char **resp) 738mm_sshpam_respond(void *ctx, u_int num, char **resp)
674{ 739{
675 Buffer m; 740 struct sshbuf *m;
676 u_int i; 741 u_int n, i;
677 int ret; 742 int r, ret;
678 743
679 debug3("%s", __func__); 744 debug3("%s", __func__);
680 buffer_init(&m); 745 if ((m = sshbuf_new()) == NULL)
681 buffer_put_int(&m, num); 746 fatal("%s: sshbuf_new failed", __func__);
682 for (i = 0; i < num; ++i) 747 if ((r = sshbuf_put_u32(m, num)) != 0)
683 buffer_put_cstring(&m, resp[i]); 748 fatal("%s: buffer error: %s", __func__, ssh_err(r));
684 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_RESPOND, &m); 749 for (i = 0; i < num; ++i) {
750 if ((r = sshbuf_put_cstring(m, resp[i])) != 0)
751 fatal("%s: buffer error: %s", __func__, ssh_err(r));
752 }
753 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_RESPOND, m);
685 debug3("%s: waiting for MONITOR_ANS_PAM_RESPOND", __func__); 754 debug3("%s: waiting for MONITOR_ANS_PAM_RESPOND", __func__);
686 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_RESPOND, &m); 755 mm_request_receive_expect(pmonitor->m_recvfd,
687 ret = buffer_get_int(&m); 756 MONITOR_ANS_PAM_RESPOND, m);
757 if ((r = sshbuf_get_u32(m, &n)) != 0)
758 fatal("%s: buffer error: %s", __func__, ssh_err(r));
759 ret = (int)n; /* XXX */
688 debug3("%s: pam_respond returned %d", __func__, ret); 760 debug3("%s: pam_respond returned %d", __func__, ret);
689 buffer_free(&m); 761 sshbuf_free(m);
690 return (ret); 762 return (ret);
691} 763}
692 764
693void 765void
694mm_sshpam_free_ctx(void *ctxtp) 766mm_sshpam_free_ctx(void *ctxtp)
695{ 767{
696 Buffer m; 768 struct sshbuf *m;
697 769
698 debug3("%s", __func__); 770 debug3("%s", __func__);
699 buffer_init(&m); 771 if ((m = sshbuf_new()) == NULL)
700 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_FREE_CTX, &m); 772 fatal("%s: sshbuf_new failed", __func__);
773 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_FREE_CTX, m);
701 debug3("%s: waiting for MONITOR_ANS_PAM_FREE_CTX", __func__); 774 debug3("%s: waiting for MONITOR_ANS_PAM_FREE_CTX", __func__);
702 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_FREE_CTX, &m); 775 mm_request_receive_expect(pmonitor->m_recvfd,
703 buffer_free(&m); 776 MONITOR_ANS_PAM_FREE_CTX, m);
777 sshbuf_free(m);
704} 778}
705#endif /* USE_PAM */ 779#endif /* USE_PAM */
706 780
@@ -709,11 +783,12 @@ mm_sshpam_free_ctx(void *ctxtp)
709void 783void
710mm_terminate(void) 784mm_terminate(void)
711{ 785{
712 Buffer m; 786 struct sshbuf *m;
713 787
714 buffer_init(&m); 788 if ((m = sshbuf_new()) == NULL)
715 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_TERM, &m); 789 fatal("%s: sshbuf_new failed", __func__);
716 buffer_free(&m); 790 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_TERM, m);
791 sshbuf_free(m);
717} 792}
718 793
719static void 794static void
@@ -732,27 +807,31 @@ int
732mm_bsdauth_query(void *ctx, char **name, char **infotxt, 807mm_bsdauth_query(void *ctx, char **name, char **infotxt,
733 u_int *numprompts, char ***prompts, u_int **echo_on) 808 u_int *numprompts, char ***prompts, u_int **echo_on)
734{ 809{
735 Buffer m; 810 struct sshbuf *m;
736 u_int success; 811 u_int success;
737 char *challenge; 812 char *challenge;
813 int r;
738 814
739 debug3("%s: entering", __func__); 815 debug3("%s: entering", __func__);
740 816
741 buffer_init(&m); 817 if ((m = sshbuf_new()) == NULL)
742 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHQUERY, &m); 818 fatal("%s: sshbuf_new failed", __func__);
819 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHQUERY, m);
743 820
744 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_BSDAUTHQUERY, 821 mm_request_receive_expect(pmonitor->m_recvfd,
745 &m); 822 MONITOR_ANS_BSDAUTHQUERY, m);
746 success = buffer_get_int(&m); 823 if ((r = sshbuf_get_u32(m, &success)) != 0)
824 fatal("%s: buffer error: %s", __func__, ssh_err(r));
747 if (success == 0) { 825 if (success == 0) {
748 debug3("%s: no challenge", __func__); 826 debug3("%s: no challenge", __func__);
749 buffer_free(&m); 827 sshbuf_free(m);
750 return (-1); 828 return (-1);
751 } 829 }
752 830
753 /* Get the challenge, and format the response */ 831 /* Get the challenge, and format the response */
754 challenge = buffer_get_string(&m, NULL); 832 if ((r = sshbuf_get_cstring(m, &challenge, NULL)) != 0)
755 buffer_free(&m); 833 fatal("%s: buffer error: %s", __func__, ssh_err(r));
834 sshbuf_free(m);
756 835
757 mm_chall_setup(name, infotxt, numprompts, prompts, echo_on); 836 mm_chall_setup(name, infotxt, numprompts, prompts, echo_on);
758 (*prompts)[0] = challenge; 837 (*prompts)[0] = challenge;
@@ -765,114 +844,62 @@ mm_bsdauth_query(void *ctx, char **name, char **infotxt,
765int 844int
766mm_bsdauth_respond(void *ctx, u_int numresponses, char **responses) 845mm_bsdauth_respond(void *ctx, u_int numresponses, char **responses)
767{ 846{
768 Buffer m; 847 struct sshbuf *m;
769 int authok; 848 int r, authok;
770
771 debug3("%s: entering", __func__);
772 if (numresponses != 1)
773 return (-1);
774
775 buffer_init(&m);
776 buffer_put_cstring(&m, responses[0]);
777 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHRESPOND, &m);
778
779 mm_request_receive_expect(pmonitor->m_recvfd,
780 MONITOR_ANS_BSDAUTHRESPOND, &m);
781
782 authok = buffer_get_int(&m);
783 buffer_free(&m);
784
785 return ((authok == 0) ? -1 : 0);
786}
787
788#ifdef SKEY
789int
790mm_skey_query(void *ctx, char **name, char **infotxt,
791 u_int *numprompts, char ***prompts, u_int **echo_on)
792{
793 Buffer m;
794 u_int success;
795 char *challenge;
796
797 debug3("%s: entering", __func__);
798
799 buffer_init(&m);
800 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SKEYQUERY, &m);
801
802 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SKEYQUERY,
803 &m);
804 success = buffer_get_int(&m);
805 if (success == 0) {
806 debug3("%s: no challenge", __func__);
807 buffer_free(&m);
808 return (-1);
809 }
810
811 /* Get the challenge, and format the response */
812 challenge = buffer_get_string(&m, NULL);
813 buffer_free(&m);
814
815 debug3("%s: received challenge: %s", __func__, challenge);
816
817 mm_chall_setup(name, infotxt, numprompts, prompts, echo_on);
818
819 xasprintf(*prompts, "%s%s", challenge, SKEY_PROMPT);
820 free(challenge);
821
822 return (0);
823}
824
825int
826mm_skey_respond(void *ctx, u_int numresponses, char **responses)
827{
828 Buffer m;
829 int authok;
830 849
831 debug3("%s: entering", __func__); 850 debug3("%s: entering", __func__);
832 if (numresponses != 1) 851 if (numresponses != 1)
833 return (-1); 852 return (-1);
834 853
835 buffer_init(&m); 854 if ((m = sshbuf_new()) == NULL)
836 buffer_put_cstring(&m, responses[0]); 855 fatal("%s: sshbuf_new failed", __func__);
837 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SKEYRESPOND, &m); 856 if ((r = sshbuf_put_cstring(m, responses[0])) != 0)
857 fatal("%s: buffer error: %s", __func__, ssh_err(r));
858 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHRESPOND, m);
838 859
839 mm_request_receive_expect(pmonitor->m_recvfd, 860 mm_request_receive_expect(pmonitor->m_recvfd,
840 MONITOR_ANS_SKEYRESPOND, &m); 861 MONITOR_ANS_BSDAUTHRESPOND, m);
841 862
842 authok = buffer_get_int(&m); 863 if ((r = sshbuf_get_u32(m, &authok)) != 0)
843 buffer_free(&m); 864 fatal("%s: buffer error: %s", __func__, ssh_err(r));
865 sshbuf_free(m);
844 866
845 return ((authok == 0) ? -1 : 0); 867 return ((authok == 0) ? -1 : 0);
846} 868}
847#endif /* SKEY */
848 869
849#ifdef SSH_AUDIT_EVENTS 870#ifdef SSH_AUDIT_EVENTS
850void 871void
851mm_audit_event(ssh_audit_event_t event) 872mm_audit_event(ssh_audit_event_t event)
852{ 873{
853 Buffer m; 874 struct sshbuf *m;
875 int r;
854 876
855 debug3("%s entering", __func__); 877 debug3("%s entering", __func__);
856 878
857 buffer_init(&m); 879 if ((m = sshbuf_new()) == NULL)
858 buffer_put_int(&m, event); 880 fatal("%s: sshbuf_new failed", __func__);
881 if ((r = sshbuf_put_u32(m, event)) != 0)
882 fatal("%s: buffer error: %s", __func__, ssh_err(r));
859 883
860 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_EVENT, &m); 884 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_EVENT, m);
861 buffer_free(&m); 885 sshbuf_free(m);
862} 886}
863 887
864void 888void
865mm_audit_run_command(const char *command) 889mm_audit_run_command(const char *command)
866{ 890{
867 Buffer m; 891 struct sshbuf *m;
892 int r;
868 893
869 debug3("%s entering command %s", __func__, command); 894 debug3("%s entering command %s", __func__, command);
870 895
871 buffer_init(&m); 896 if ((m = sshbuf_new()) == NULL)
872 buffer_put_cstring(&m, command); 897 fatal("%s: sshbuf_new failed", __func__);
898 if ((r = sshbuf_put_cstring(m, command)) != 0)
899 fatal("%s: buffer error: %s", __func__, ssh_err(r));
873 900
874 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_COMMAND, &m); 901 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_COMMAND, m);
875 buffer_free(&m); 902 sshbuf_free(m);
876} 903}
877#endif /* SSH_AUDIT_EVENTS */ 904#endif /* SSH_AUDIT_EVENTS */
878 905
@@ -880,45 +907,55 @@ mm_audit_run_command(const char *command)
880OM_uint32 907OM_uint32
881mm_ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID goid) 908mm_ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID goid)
882{ 909{
883 Buffer m; 910 struct sshbuf *m;
884 OM_uint32 major; 911 OM_uint32 major;
912 int r;
885 913
886 /* Client doesn't get to see the context */ 914 /* Client doesn't get to see the context */
887 *ctx = NULL; 915 *ctx = NULL;
888 916
889 buffer_init(&m); 917 if ((m = sshbuf_new()) == NULL)
890 buffer_put_string(&m, goid->elements, goid->length); 918 fatal("%s: sshbuf_new failed", __func__);
919 if ((r = sshbuf_put_string(m, goid->elements, goid->length)) != 0)
920 fatal("%s: buffer error: %s", __func__, ssh_err(r));
891 921
892 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSETUP, &m); 922 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSETUP, m);
893 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSETUP, &m); 923 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSETUP, m);
894 924
895 major = buffer_get_int(&m); 925 if ((r = sshbuf_get_u32(m, &major)) != 0)
926 fatal("%s: buffer error: %s", __func__, ssh_err(r));
896 927
897 buffer_free(&m); 928 sshbuf_free(m);
898 return (major); 929 return (major);
899} 930}
900 931
901OM_uint32 932OM_uint32
902mm_ssh_gssapi_accept_ctx(Gssctxt *ctx, gss_buffer_desc *in, 933mm_ssh_gssapi_accept_ctx(Gssctxt *ctx, gss_buffer_desc *in,
903 gss_buffer_desc *out, OM_uint32 *flags) 934 gss_buffer_desc *out, OM_uint32 *flagsp)
904{ 935{
905 Buffer m; 936 struct sshbuf *m;
906 OM_uint32 major; 937 OM_uint32 major;
907 u_int len; 938 u_int flags;
908 939 int r;
909 buffer_init(&m);
910 buffer_put_string(&m, in->value, in->length);
911
912 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSTEP, &m);
913 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSTEP, &m);
914 940
915 major = buffer_get_int(&m); 941 if ((m = sshbuf_new()) == NULL)
916 out->value = buffer_get_string(&m, &len); 942 fatal("%s: sshbuf_new failed", __func__);
917 out->length = len; 943 if ((r = sshbuf_put_string(m, in->value, in->length)) != 0)
918 if (flags) 944 fatal("%s: buffer error: %s", __func__, ssh_err(r));
919 *flags = buffer_get_int(&m); 945
946 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSTEP, m);
947 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSTEP, m);
948
949 if ((r = sshbuf_get_u32(m, &major)) != 0 ||
950 (r = ssh_gssapi_get_buffer_desc(m, out)) != 0)
951 fatal("%s: buffer error: %s", __func__, ssh_err(r));
952 if (flagsp != NULL) {
953 if ((r = sshbuf_get_u32(m, &flags)) != 0)
954 fatal("%s: buffer error: %s", __func__, ssh_err(r));
955 *flagsp = flags;
956 }
920 957
921 buffer_free(&m); 958 sshbuf_free(m);
922 959
923 return (major); 960 return (major);
924} 961}
@@ -926,39 +963,44 @@ mm_ssh_gssapi_accept_ctx(Gssctxt *ctx, gss_buffer_desc *in,
926OM_uint32 963OM_uint32
927mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) 964mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic)
928{ 965{
929 Buffer m; 966 struct sshbuf *m;
930 OM_uint32 major; 967 OM_uint32 major;
968 int r;
931 969
932 buffer_init(&m); 970 if ((m = sshbuf_new()) == NULL)
933 buffer_put_string(&m, gssbuf->value, gssbuf->length); 971 fatal("%s: sshbuf_new failed", __func__);
934 buffer_put_string(&m, gssmic->value, gssmic->length); 972 if ((r = sshbuf_put_string(m, gssbuf->value, gssbuf->length)) != 0 ||
973 (r = sshbuf_put_string(m, gssmic->value, gssmic->length)) != 0)
974 fatal("%s: buffer error: %s", __func__, ssh_err(r));
935 975
936 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSCHECKMIC, &m); 976 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSCHECKMIC, m);
937 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSCHECKMIC, 977 mm_request_receive_expect(pmonitor->m_recvfd,
938 &m); 978 MONITOR_ANS_GSSCHECKMIC, m);
939 979
940 major = buffer_get_int(&m); 980 if ((r = sshbuf_get_u32(m, &major)) != 0)
941 buffer_free(&m); 981 fatal("%s: buffer error: %s", __func__, ssh_err(r));
982 sshbuf_free(m);
942 return(major); 983 return(major);
943} 984}
944 985
945int 986int
946mm_ssh_gssapi_userok(char *user) 987mm_ssh_gssapi_userok(char *user)
947{ 988{
948 Buffer m; 989 struct sshbuf *m;
949 int authenticated = 0; 990 int r, authenticated = 0;
950 991
951 buffer_init(&m); 992 if ((m = sshbuf_new()) == NULL)
993 fatal("%s: sshbuf_new failed", __func__);
952 994
953 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUSEROK, &m); 995 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUSEROK, m);
954 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSUSEROK, 996 mm_request_receive_expect(pmonitor->m_recvfd,
955 &m); 997 MONITOR_ANS_GSSUSEROK, m);
956 998
957 authenticated = buffer_get_int(&m); 999 if ((r = sshbuf_get_u32(m, &authenticated)) != 0)
1000 fatal("%s: buffer error: %s", __func__, ssh_err(r));
958 1001
959 buffer_free(&m); 1002 sshbuf_free(m);
960 debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); 1003 debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not ");
961 return (authenticated); 1004 return (authenticated);
962} 1005}
963#endif /* GSSAPI */ 1006#endif /* GSSAPI */
964
diff --git a/monitor_wrap.h b/monitor_wrap.h
index 762332704..644da081d 100644
--- a/monitor_wrap.h
+++ b/monitor_wrap.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.h,v 1.37 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.h,v 1.38 2018/07/11 18:53:29 markus Exp $ */
2 2
3/* 3/*
4 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 4 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
@@ -41,8 +41,8 @@ struct sshauthopt;
41void mm_log_handler(LogLevel, const char *, void *); 41void mm_log_handler(LogLevel, const char *, void *);
42int mm_is_monitor(void); 42int mm_is_monitor(void);
43DH *mm_choose_dh(int, int, int); 43DH *mm_choose_dh(int, int, int);
44int mm_key_sign(struct sshkey *, u_char **, u_int *, const u_char *, u_int, 44int mm_sshkey_sign(struct sshkey *, u_char **, size_t *, const u_char *, size_t,
45 const char *); 45 const char *, u_int compat);
46void mm_inform_authserv(char *, char *); 46void mm_inform_authserv(char *, char *);
47struct passwd *mm_getpwnamallow(const char *); 47struct passwd *mm_getpwnamallow(const char *);
48char *mm_auth2_read_banner(void); 48char *mm_auth2_read_banner(void);
@@ -97,8 +97,4 @@ void mm_send_keystate(struct monitor*);
97int mm_bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **); 97int mm_bsdauth_query(void *, char **, char **, u_int *, char ***, u_int **);
98int mm_bsdauth_respond(void *, u_int, char **); 98int mm_bsdauth_respond(void *, u_int, char **);
99 99
100/* skey */
101int mm_skey_query(void *, char **, char **, u_int *, char ***, u_int **);
102int mm_skey_respond(void *, u_int, char **);
103
104#endif /* _MM_WRAP_H_ */ 100#endif /* _MM_WRAP_H_ */
diff --git a/msg.c b/msg.c
index 5a7b8ca91..1bd20f3d3 100644
--- a/msg.c
+++ b/msg.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: msg.c,v 1.16 2015/01/15 09:40:00 djm Exp $ */ 1/* $OpenBSD: msg.c,v 1.17 2018/07/09 21:59:10 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -55,7 +55,7 @@ ssh_msg_send(int fd, u_char type, struct sshbuf *m)
55 error("ssh_msg_send: write"); 55 error("ssh_msg_send: write");
56 return (-1); 56 return (-1);
57 } 57 }
58 if (atomicio(vwrite, fd, (u_char *)sshbuf_ptr(m), mlen) != mlen) { 58 if (atomicio(vwrite, fd, sshbuf_mutable_ptr(m), mlen) != mlen) {
59 error("ssh_msg_send: write"); 59 error("ssh_msg_send: write");
60 return (-1); 60 return (-1);
61 } 61 }
diff --git a/mux.c b/mux.c
index 5ae454410..e607acd08 100644
--- a/mux.c
+++ b/mux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: mux.c,v 1.69 2017/09/20 05:19:00 dtucker Exp $ */ 1/* $OpenBSD: mux.c,v 1.75 2018/07/31 03:07:24 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -70,13 +70,13 @@
70#include "pathnames.h" 70#include "pathnames.h"
71#include "misc.h" 71#include "misc.h"
72#include "match.h" 72#include "match.h"
73#include "buffer.h" 73#include "sshbuf.h"
74#include "channels.h" 74#include "channels.h"
75#include "msg.h" 75#include "msg.h"
76#include "packet.h" 76#include "packet.h"
77#include "monitor_fdpass.h" 77#include "monitor_fdpass.h"
78#include "sshpty.h" 78#include "sshpty.h"
79#include "key.h" 79#include "sshkey.h"
80#include "readconf.h" 80#include "readconf.h"
81#include "clientloop.h" 81#include "clientloop.h"
82#include "ssherr.h" 82#include "ssherr.h"
@@ -87,7 +87,7 @@ extern Options options;
87extern int stdin_null_flag; 87extern int stdin_null_flag;
88extern char *host; 88extern char *host;
89extern int subsystem_flag; 89extern int subsystem_flag;
90extern Buffer command; 90extern struct sshbuf *command;
91extern volatile sig_atomic_t quit_pending; 91extern volatile sig_atomic_t quit_pending;
92 92
93/* Context for session open confirmation callback */ 93/* Context for session open confirmation callback */
@@ -96,7 +96,7 @@ struct mux_session_confirm_ctx {
96 u_int want_subsys; 96 u_int want_subsys;
97 u_int want_x_fwd; 97 u_int want_x_fwd;
98 u_int want_agent_fwd; 98 u_int want_agent_fwd;
99 Buffer cmd; 99 struct sshbuf *cmd;
100 char *term; 100 char *term;
101 struct termios tio; 101 struct termios tio;
102 char **env; 102 char **env;
@@ -279,10 +279,11 @@ env_permitted(char *env)
279 279
280static int 280static int
281process_mux_master_hello(struct ssh *ssh, u_int rid, 281process_mux_master_hello(struct ssh *ssh, u_int rid,
282 Channel *c, Buffer *m, Buffer *r) 282 Channel *c, struct sshbuf *m, struct sshbuf *reply)
283{ 283{
284 u_int ver; 284 u_int ver;
285 struct mux_master_state *state = (struct mux_master_state *)c->mux_ctx; 285 struct mux_master_state *state = (struct mux_master_state *)c->mux_ctx;
286 int r;
286 287
287 if (state == NULL) 288 if (state == NULL)
288 fatal("%s: channel %d: c->mux_ctx == NULL", __func__, c->self); 289 fatal("%s: channel %d: c->mux_ctx == NULL", __func__, c->self);
@@ -290,9 +291,8 @@ process_mux_master_hello(struct ssh *ssh, u_int rid,
290 error("%s: HELLO received twice", __func__); 291 error("%s: HELLO received twice", __func__);
291 return -1; 292 return -1;
292 } 293 }
293 if (buffer_get_int_ret(&ver, m) != 0) { 294 if ((r = sshbuf_get_u32(m, &ver)) != 0) {
294 malf: 295 error("%s: malformed message: %s", __func__, ssh_err(r));
295 error("%s: malformed message", __func__);
296 return -1; 296 return -1;
297 } 297 }
298 if (ver != SSHMUX_VER) { 298 if (ver != SSHMUX_VER) {
@@ -303,51 +303,72 @@ process_mux_master_hello(struct ssh *ssh, u_int rid,
303 debug2("%s: channel %d slave version %u", __func__, c->self, ver); 303 debug2("%s: channel %d slave version %u", __func__, c->self, ver);
304 304
305 /* No extensions are presently defined */ 305 /* No extensions are presently defined */
306 while (buffer_len(m) > 0) { 306 while (sshbuf_len(m) > 0) {
307 char *name = buffer_get_string_ret(m, NULL); 307 char *name = NULL;
308 char *value = buffer_get_string_ret(m, NULL);
309 308
310 if (name == NULL || value == NULL) { 309 if ((r = sshbuf_get_cstring(m, &name, NULL)) != 0 ||
311 free(name); 310 (r = sshbuf_skip_string(m)) != 0) { /* value */
312 free(value); 311 error("%s: malformed extension: %s",
313 goto malf; 312 __func__, ssh_err(r));
313 return -1;
314 } 314 }
315 debug2("Unrecognised slave extension \"%s\"", name); 315 debug2("Unrecognised slave extension \"%s\"", name);
316 free(name); 316 free(name);
317 free(value);
318 } 317 }
319 state->hello_rcvd = 1; 318 state->hello_rcvd = 1;
320 return 0; 319 return 0;
321} 320}
322 321
322/* Enqueue a "ok" response to the reply buffer */
323static void
324reply_ok(struct sshbuf *reply, u_int rid)
325{
326 int r;
327
328 if ((r = sshbuf_put_u32(reply, MUX_S_OK)) != 0 ||
329 (r = sshbuf_put_u32(reply, rid)) != 0)
330 fatal("%s: reply: %s", __func__, ssh_err(r));
331}
332
333/* Enqueue an error response to the reply buffer */
334static void
335reply_error(struct sshbuf *reply, u_int type, u_int rid, const char *msg)
336{
337 int r;
338
339 if ((r = sshbuf_put_u32(reply, type)) != 0 ||
340 (r = sshbuf_put_u32(reply, rid)) != 0 ||
341 (r = sshbuf_put_cstring(reply, msg)) != 0)
342 fatal("%s: reply: %s", __func__, ssh_err(r));
343}
344
323static int 345static int
324process_mux_new_session(struct ssh *ssh, u_int rid, 346process_mux_new_session(struct ssh *ssh, u_int rid,
325 Channel *c, Buffer *m, Buffer *r) 347 Channel *c, struct sshbuf *m, struct sshbuf *reply)
326{ 348{
327 Channel *nc; 349 Channel *nc;
328 struct mux_session_confirm_ctx *cctx; 350 struct mux_session_confirm_ctx *cctx;
329 char *reserved, *cmd, *cp; 351 char *cmd, *cp;
330 u_int i, j, len, env_len, escape_char, window, packetmax; 352 u_int i, j, env_len, escape_char, window, packetmax;
331 int new_fd[3]; 353 int r, new_fd[3];
332 354
333 /* Reply for SSHMUX_COMMAND_OPEN */ 355 /* Reply for SSHMUX_COMMAND_OPEN */
334 cctx = xcalloc(1, sizeof(*cctx)); 356 cctx = xcalloc(1, sizeof(*cctx));
335 cctx->term = NULL; 357 cctx->term = NULL;
336 cctx->rid = rid; 358 cctx->rid = rid;
337 cmd = reserved = NULL; 359 cmd = NULL;
338 cctx->env = NULL; 360 cctx->env = NULL;
339 env_len = 0; 361 env_len = 0;
340 if ((reserved = buffer_get_string_ret(m, NULL)) == NULL || 362 if ((r = sshbuf_skip_string(m)) != 0 || /* reserved */
341 buffer_get_int_ret(&cctx->want_tty, m) != 0 || 363 (r = sshbuf_get_u32(m, &cctx->want_tty)) != 0 ||
342 buffer_get_int_ret(&cctx->want_x_fwd, m) != 0 || 364 (r = sshbuf_get_u32(m, &cctx->want_x_fwd)) != 0 ||
343 buffer_get_int_ret(&cctx->want_agent_fwd, m) != 0 || 365 (r = sshbuf_get_u32(m, &cctx->want_agent_fwd)) != 0 ||
344 buffer_get_int_ret(&cctx->want_subsys, m) != 0 || 366 (r = sshbuf_get_u32(m, &cctx->want_subsys)) != 0 ||
345 buffer_get_int_ret(&escape_char, m) != 0 || 367 (r = sshbuf_get_u32(m, &escape_char)) != 0 ||
346 (cctx->term = buffer_get_string_ret(m, &len)) == NULL || 368 (r = sshbuf_get_cstring(m, &cctx->term, NULL)) != 0 ||
347 (cmd = buffer_get_string_ret(m, &len)) == NULL) { 369 (r = sshbuf_get_cstring(m, &cmd, NULL)) != 0) {
348 malf: 370 malf:
349 free(cmd); 371 free(cmd);
350 free(reserved);
351 for (j = 0; j < env_len; j++) 372 for (j = 0; j < env_len; j++)
352 free(cctx->env[j]); 373 free(cctx->env[j]);
353 free(cctx->env); 374 free(cctx->env);
@@ -356,12 +377,10 @@ process_mux_new_session(struct ssh *ssh, u_int rid,
356 error("%s: malformed message", __func__); 377 error("%s: malformed message", __func__);
357 return -1; 378 return -1;
358 } 379 }
359 free(reserved);
360 reserved = NULL;
361 380
362 while (buffer_len(m) > 0) {
363#define MUX_MAX_ENV_VARS 4096 381#define MUX_MAX_ENV_VARS 4096
364 if ((cp = buffer_get_string_ret(m, &len)) == NULL) 382 while (sshbuf_len(m) > 0) {
383 if ((r = sshbuf_get_cstring(m, &cp, NULL)) != 0)
365 goto malf; 384 goto malf;
366 if (!env_permitted(cp)) { 385 if (!env_permitted(cp)) {
367 free(cp); 386 free(cp);
@@ -383,8 +402,10 @@ process_mux_new_session(struct ssh *ssh, u_int rid,
383 cctx->want_tty, cctx->want_x_fwd, cctx->want_agent_fwd, 402 cctx->want_tty, cctx->want_x_fwd, cctx->want_agent_fwd,
384 cctx->want_subsys, cctx->term, cmd, env_len); 403 cctx->want_subsys, cctx->term, cmd, env_len);
385 404
386 buffer_init(&cctx->cmd); 405 if ((cctx->cmd = sshbuf_new()) == NULL)
387 buffer_append(&cctx->cmd, cmd, strlen(cmd)); 406 fatal("%s: sshbuf_new", __func__);
407 if ((r = sshbuf_put(cctx->cmd, cmd, strlen(cmd))) != 0)
408 fatal("%s: sshbuf_put: %s", __func__, ssh_err(r));
388 free(cmd); 409 free(cmd);
389 cmd = NULL; 410 cmd = NULL;
390 411
@@ -399,13 +420,9 @@ process_mux_new_session(struct ssh *ssh, u_int rid,
399 free(cctx->env[j]); 420 free(cctx->env[j]);
400 free(cctx->env); 421 free(cctx->env);
401 free(cctx->term); 422 free(cctx->term);
402 buffer_free(&cctx->cmd); 423 sshbuf_free(cctx->cmd);
403 free(cctx); 424 free(cctx);
404 425 reply_error(reply, MUX_S_FAILURE, rid,
405 /* prepare reply */
406 buffer_put_int(r, MUX_S_FAILURE);
407 buffer_put_int(r, rid);
408 buffer_put_cstring(r,
409 "did not receive file descriptors"); 426 "did not receive file descriptors");
410 return -1; 427 return -1;
411 } 428 }
@@ -417,10 +434,8 @@ process_mux_new_session(struct ssh *ssh, u_int rid,
417 /* XXX support multiple child sessions in future */ 434 /* XXX support multiple child sessions in future */
418 if (c->have_remote_id) { 435 if (c->have_remote_id) {
419 debug2("%s: session already open", __func__); 436 debug2("%s: session already open", __func__);
420 /* prepare reply */ 437 reply_error(reply, MUX_S_FAILURE, rid,
421 buffer_put_int(r, MUX_S_FAILURE); 438 "Multiple sessions not supported");
422 buffer_put_int(r, rid);
423 buffer_put_cstring(r, "Multiple sessions not supported");
424 cleanup: 439 cleanup:
425 close(new_fd[0]); 440 close(new_fd[0]);
426 close(new_fd[1]); 441 close(new_fd[1]);
@@ -431,7 +446,7 @@ process_mux_new_session(struct ssh *ssh, u_int rid,
431 free(cctx->env[i]); 446 free(cctx->env[i]);
432 free(cctx->env); 447 free(cctx->env);
433 } 448 }
434 buffer_free(&cctx->cmd); 449 sshbuf_free(cctx->cmd);
435 free(cctx); 450 free(cctx);
436 return 0; 451 return 0;
437 } 452 }
@@ -440,10 +455,8 @@ process_mux_new_session(struct ssh *ssh, u_int rid,
440 options.control_master == SSHCTL_MASTER_AUTO_ASK) { 455 options.control_master == SSHCTL_MASTER_AUTO_ASK) {
441 if (!ask_permission("Allow shared connection to %s? ", host)) { 456 if (!ask_permission("Allow shared connection to %s? ", host)) {
442 debug2("%s: session refused by user", __func__); 457 debug2("%s: session refused by user", __func__);
443 /* prepare reply */ 458 reply_error(reply, MUX_S_PERMISSION_DENIED, rid,
444 buffer_put_int(r, MUX_S_PERMISSION_DENIED); 459 "Permission denied");
445 buffer_put_int(r, rid);
446 buffer_put_cstring(r, "Permission denied");
447 goto cleanup; 460 goto cleanup;
448 } 461 }
449 } 462 }
@@ -497,21 +510,24 @@ process_mux_new_session(struct ssh *ssh, u_int rid,
497 510
498static int 511static int
499process_mux_alive_check(struct ssh *ssh, u_int rid, 512process_mux_alive_check(struct ssh *ssh, u_int rid,
500 Channel *c, Buffer *m, Buffer *r) 513 Channel *c, struct sshbuf *m, struct sshbuf *reply)
501{ 514{
515 int r;
516
502 debug2("%s: channel %d: alive check", __func__, c->self); 517 debug2("%s: channel %d: alive check", __func__, c->self);
503 518
504 /* prepare reply */ 519 /* prepare reply */
505 buffer_put_int(r, MUX_S_ALIVE); 520 if ((r = sshbuf_put_u32(reply, MUX_S_ALIVE)) != 0 ||
506 buffer_put_int(r, rid); 521 (r = sshbuf_put_u32(reply, rid)) != 0 ||
507 buffer_put_int(r, (u_int)getpid()); 522 (r = sshbuf_put_u32(reply, (u_int)getpid())) != 0)
523 fatal("%s: reply: %s", __func__, ssh_err(r));
508 524
509 return 0; 525 return 0;
510} 526}
511 527
512static int 528static int
513process_mux_terminate(struct ssh *ssh, u_int rid, 529process_mux_terminate(struct ssh *ssh, u_int rid,
514 Channel *c, Buffer *m, Buffer *r) 530 Channel *c, struct sshbuf *m, struct sshbuf *reply)
515{ 531{
516 debug2("%s: channel %d: terminate request", __func__, c->self); 532 debug2("%s: channel %d: terminate request", __func__, c->self);
517 533
@@ -520,16 +536,14 @@ process_mux_terminate(struct ssh *ssh, u_int rid,
520 if (!ask_permission("Terminate shared connection to %s? ", 536 if (!ask_permission("Terminate shared connection to %s? ",
521 host)) { 537 host)) {
522 debug2("%s: termination refused by user", __func__); 538 debug2("%s: termination refused by user", __func__);
523 buffer_put_int(r, MUX_S_PERMISSION_DENIED); 539 reply_error(reply, MUX_S_PERMISSION_DENIED, rid,
524 buffer_put_int(r, rid); 540 "Permission denied");
525 buffer_put_cstring(r, "Permission denied");
526 return 0; 541 return 0;
527 } 542 }
528 } 543 }
529 544
530 quit_pending = 1; 545 quit_pending = 1;
531 buffer_put_int(r, MUX_S_OK); 546 reply_ok(reply, rid);
532 buffer_put_int(r, rid);
533 /* XXX exit happens too soon - message never makes it to client */ 547 /* XXX exit happens too soon - message never makes it to client */
534 return 0; 548 return 0;
535} 549}
@@ -606,14 +620,16 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt)
606 char *failmsg = NULL; 620 char *failmsg = NULL;
607 struct Forward *rfwd; 621 struct Forward *rfwd;
608 Channel *c; 622 Channel *c;
609 Buffer out; 623 struct sshbuf *out;
624 int r;
610 625
611 if ((c = channel_by_id(ssh, fctx->cid)) == NULL) { 626 if ((c = channel_by_id(ssh, fctx->cid)) == NULL) {
612 /* no channel for reply */ 627 /* no channel for reply */
613 error("%s: unknown channel", __func__); 628 error("%s: unknown channel", __func__);
614 return; 629 return;
615 } 630 }
616 buffer_init(&out); 631 if ((out = sshbuf_new()) == NULL)
632 fatal("%s: sshbuf_new", __func__);
617 if (fctx->fid >= options.num_remote_forwards || 633 if (fctx->fid >= options.num_remote_forwards ||
618 (options.remote_forwards[fctx->fid].connect_path == NULL && 634 (options.remote_forwards[fctx->fid].connect_path == NULL &&
619 options.remote_forwards[fctx->fid].connect_host == NULL)) { 635 options.remote_forwards[fctx->fid].connect_host == NULL)) {
@@ -631,19 +647,21 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt)
631 debug("Allocated port %u for mux remote forward" 647 debug("Allocated port %u for mux remote forward"
632 " to %s:%d", rfwd->allocated_port, 648 " to %s:%d", rfwd->allocated_port,
633 rfwd->connect_host, rfwd->connect_port); 649 rfwd->connect_host, rfwd->connect_port);
634 buffer_put_int(&out, MUX_S_REMOTE_PORT); 650 if ((r = sshbuf_put_u32(out,
635 buffer_put_int(&out, fctx->rid); 651 MUX_S_REMOTE_PORT)) != 0 ||
636 buffer_put_int(&out, rfwd->allocated_port); 652 (r = sshbuf_put_u32(out, fctx->rid)) != 0 ||
637 channel_update_permitted_opens(ssh, rfwd->handle, 653 (r = sshbuf_put_u32(out,
654 rfwd->allocated_port)) != 0)
655 fatal("%s: reply: %s", __func__, ssh_err(r));
656 channel_update_permission(ssh, rfwd->handle,
638 rfwd->allocated_port); 657 rfwd->allocated_port);
639 } else { 658 } else {
640 buffer_put_int(&out, MUX_S_OK); 659 reply_ok(out, fctx->rid);
641 buffer_put_int(&out, fctx->rid);
642 } 660 }
643 goto out; 661 goto out;
644 } else { 662 } else {
645 if (rfwd->listen_port == 0) 663 if (rfwd->listen_port == 0)
646 channel_update_permitted_opens(ssh, rfwd->handle, -1); 664 channel_update_permission(ssh, rfwd->handle, -1);
647 if (rfwd->listen_path != NULL) 665 if (rfwd->listen_path != NULL)
648 xasprintf(&failmsg, "remote port forwarding failed for " 666 xasprintf(&failmsg, "remote port forwarding failed for "
649 "listen path %s", rfwd->listen_path); 667 "listen path %s", rfwd->listen_path);
@@ -664,13 +682,12 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt)
664 } 682 }
665 fail: 683 fail:
666 error("%s: %s", __func__, failmsg); 684 error("%s: %s", __func__, failmsg);
667 buffer_put_int(&out, MUX_S_FAILURE); 685 reply_error(out, MUX_S_FAILURE, fctx->rid, failmsg);
668 buffer_put_int(&out, fctx->rid);
669 buffer_put_cstring(&out, failmsg);
670 free(failmsg); 686 free(failmsg);
671 out: 687 out:
672 buffer_put_string(c->output, buffer_ptr(&out), buffer_len(&out)); 688 if ((r = sshbuf_put_stringb(c->output, out)) != 0)
673 buffer_free(&out); 689 fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r));
690 sshbuf_free(out);
674 if (c->mux_pause <= 0) 691 if (c->mux_pause <= 0)
675 fatal("%s: mux_pause %d", __func__, c->mux_pause); 692 fatal("%s: mux_pause %d", __func__, c->mux_pause);
676 c->mux_pause = 0; /* start processing messages again */ 693 c->mux_pause = 0; /* start processing messages again */
@@ -678,23 +695,23 @@ mux_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt)
678 695
679static int 696static int
680process_mux_open_fwd(struct ssh *ssh, u_int rid, 697process_mux_open_fwd(struct ssh *ssh, u_int rid,
681 Channel *c, Buffer *m, Buffer *r) 698 Channel *c, struct sshbuf *m, struct sshbuf *reply)
682{ 699{
683 struct Forward fwd; 700 struct Forward fwd;
684 char *fwd_desc = NULL; 701 char *fwd_desc = NULL;
685 char *listen_addr, *connect_addr; 702 char *listen_addr, *connect_addr;
686 u_int ftype; 703 u_int ftype;
687 u_int lport, cport; 704 u_int lport, cport;
688 int i, ret = 0, freefwd = 1; 705 int r, i, ret = 0, freefwd = 1;
689 706
690 memset(&fwd, 0, sizeof(fwd)); 707 memset(&fwd, 0, sizeof(fwd));
691 708
692 /* XXX - lport/cport check redundant */ 709 /* XXX - lport/cport check redundant */
693 if (buffer_get_int_ret(&ftype, m) != 0 || 710 if ((r = sshbuf_get_u32(m, &ftype)) != 0 ||
694 (listen_addr = buffer_get_string_ret(m, NULL)) == NULL || 711 (r = sshbuf_get_cstring(m, &listen_addr, NULL)) != 0 ||
695 buffer_get_int_ret(&lport, m) != 0 || 712 (r = sshbuf_get_u32(m, &lport)) != 0 ||
696 (connect_addr = buffer_get_string_ret(m, NULL)) == NULL || 713 (r = sshbuf_get_cstring(m, &connect_addr, NULL)) != 0 ||
697 buffer_get_int_ret(&cport, m) != 0 || 714 (r = sshbuf_get_u32(m, &cport)) != 0 ||
698 (lport != (u_int)PORT_STREAMLOCAL && lport > 65535) || 715 (lport != (u_int)PORT_STREAMLOCAL && lport > 65535) ||
699 (cport != (u_int)PORT_STREAMLOCAL && cport > 65535)) { 716 (cport != (u_int)PORT_STREAMLOCAL && cport > 65535)) {
700 error("%s: malformed message", __func__); 717 error("%s: malformed message", __func__);
@@ -731,9 +748,8 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid,
731 invalid: 748 invalid:
732 free(listen_addr); 749 free(listen_addr);
733 free(connect_addr); 750 free(connect_addr);
734 buffer_put_int(r, MUX_S_FAILURE); 751 reply_error(reply, MUX_S_FAILURE, rid,
735 buffer_put_int(r, rid); 752 "Invalid forwarding request");
736 buffer_put_cstring(r, "Invalid forwarding request");
737 return 0; 753 return 0;
738 } 754 }
739 if (ftype == MUX_FWD_DYNAMIC && fwd.listen_path) { 755 if (ftype == MUX_FWD_DYNAMIC && fwd.listen_path) {
@@ -770,26 +786,25 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid,
770 exists: 786 exists:
771 debug2("%s: found existing forwarding", 787 debug2("%s: found existing forwarding",
772 __func__); 788 __func__);
773 buffer_put_int(r, MUX_S_OK); 789 reply_ok(reply, rid);
774 buffer_put_int(r, rid);
775 goto out; 790 goto out;
776 } 791 }
777 } 792 }
778 break; 793 break;
779 case MUX_FWD_REMOTE: 794 case MUX_FWD_REMOTE:
780 for (i = 0; i < options.num_remote_forwards; i++) { 795 for (i = 0; i < options.num_remote_forwards; i++) {
781 if (compare_forward(&fwd, 796 if (!compare_forward(&fwd, options.remote_forwards + i))
782 options.remote_forwards + i)) { 797 continue;
783 if (fwd.listen_port != 0) 798 if (fwd.listen_port != 0)
784 goto exists; 799 goto exists;
785 debug2("%s: found allocated port", 800 debug2("%s: found allocated port", __func__);
786 __func__); 801 if ((r = sshbuf_put_u32(reply,
787 buffer_put_int(r, MUX_S_REMOTE_PORT); 802 MUX_S_REMOTE_PORT)) != 0 ||
788 buffer_put_int(r, rid); 803 (r = sshbuf_put_u32(reply, rid)) != 0 ||
789 buffer_put_int(r, 804 (r = sshbuf_put_u32(reply,
790 options.remote_forwards[i].allocated_port); 805 options.remote_forwards[i].allocated_port)) != 0)
791 goto out; 806 fatal("%s: reply: %s", __func__, ssh_err(r));
792 } 807 goto out;
793 } 808 }
794 break; 809 break;
795 } 810 }
@@ -798,9 +813,8 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid,
798 options.control_master == SSHCTL_MASTER_AUTO_ASK) { 813 options.control_master == SSHCTL_MASTER_AUTO_ASK) {
799 if (!ask_permission("Open %s on %s?", fwd_desc, host)) { 814 if (!ask_permission("Open %s on %s?", fwd_desc, host)) {
800 debug2("%s: forwarding refused by user", __func__); 815 debug2("%s: forwarding refused by user", __func__);
801 buffer_put_int(r, MUX_S_PERMISSION_DENIED); 816 reply_error(reply, MUX_S_PERMISSION_DENIED, rid,
802 buffer_put_int(r, rid); 817 "Permission denied");
803 buffer_put_cstring(r, "Permission denied");
804 goto out; 818 goto out;
805 } 819 }
806 } 820 }
@@ -810,9 +824,8 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid,
810 &options.fwd_opts)) { 824 &options.fwd_opts)) {
811 fail: 825 fail:
812 logit("slave-requested %s failed", fwd_desc); 826 logit("slave-requested %s failed", fwd_desc);
813 buffer_put_int(r, MUX_S_FAILURE); 827 reply_error(reply, MUX_S_FAILURE, rid,
814 buffer_put_int(r, rid); 828 "Port forwarding failed");
815 buffer_put_cstring(r, "Port forwarding failed");
816 goto out; 829 goto out;
817 } 830 }
818 add_local_forward(&options, &fwd); 831 add_local_forward(&options, &fwd);
@@ -835,8 +848,7 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid,
835 /* delayed reply in mux_confirm_remote_forward */ 848 /* delayed reply in mux_confirm_remote_forward */
836 goto out; 849 goto out;
837 } 850 }
838 buffer_put_int(r, MUX_S_OK); 851 reply_ok(reply, rid);
839 buffer_put_int(r, rid);
840 out: 852 out:
841 free(fwd_desc); 853 free(fwd_desc);
842 if (freefwd) { 854 if (freefwd) {
@@ -850,23 +862,23 @@ process_mux_open_fwd(struct ssh *ssh, u_int rid,
850 862
851static int 863static int
852process_mux_close_fwd(struct ssh *ssh, u_int rid, 864process_mux_close_fwd(struct ssh *ssh, u_int rid,
853 Channel *c, Buffer *m, Buffer *r) 865 Channel *c, struct sshbuf *m, struct sshbuf *reply)
854{ 866{
855 struct Forward fwd, *found_fwd; 867 struct Forward fwd, *found_fwd;
856 char *fwd_desc = NULL; 868 char *fwd_desc = NULL;
857 const char *error_reason = NULL; 869 const char *error_reason = NULL;
858 char *listen_addr = NULL, *connect_addr = NULL; 870 char *listen_addr = NULL, *connect_addr = NULL;
859 u_int ftype; 871 u_int ftype;
860 int i, ret = 0; 872 int r, i, ret = 0;
861 u_int lport, cport; 873 u_int lport, cport;
862 874
863 memset(&fwd, 0, sizeof(fwd)); 875 memset(&fwd, 0, sizeof(fwd));
864 876
865 if (buffer_get_int_ret(&ftype, m) != 0 || 877 if ((r = sshbuf_get_u32(m, &ftype)) != 0 ||
866 (listen_addr = buffer_get_string_ret(m, NULL)) == NULL || 878 (r = sshbuf_get_cstring(m, &listen_addr, NULL)) != 0 ||
867 buffer_get_int_ret(&lport, m) != 0 || 879 (r = sshbuf_get_u32(m, &lport)) != 0 ||
868 (connect_addr = buffer_get_string_ret(m, NULL)) == NULL || 880 (r = sshbuf_get_cstring(m, &connect_addr, NULL)) != 0 ||
869 buffer_get_int_ret(&cport, m) != 0 || 881 (r = sshbuf_get_u32(m, &cport)) != 0 ||
870 (lport != (u_int)PORT_STREAMLOCAL && lport > 65535) || 882 (lport != (u_int)PORT_STREAMLOCAL && lport > 65535) ||
871 (cport != (u_int)PORT_STREAMLOCAL && cport > 65535)) { 883 (cport != (u_int)PORT_STREAMLOCAL && cport > 65535)) {
872 error("%s: malformed message", __func__); 884 error("%s: malformed message", __func__);
@@ -940,10 +952,10 @@ process_mux_close_fwd(struct ssh *ssh, u_int rid,
940 error_reason = "port not found"; 952 error_reason = "port not found";
941 } 953 }
942 954
943 if (error_reason == NULL) { 955 if (error_reason != NULL)
944 buffer_put_int(r, MUX_S_OK); 956 reply_error(reply, MUX_S_FAILURE, rid, error_reason);
945 buffer_put_int(r, rid); 957 else {
946 958 reply_ok(reply, rid);
947 free(found_fwd->listen_host); 959 free(found_fwd->listen_host);
948 free(found_fwd->listen_path); 960 free(found_fwd->listen_path);
949 free(found_fwd->connect_host); 961 free(found_fwd->connect_host);
@@ -951,10 +963,6 @@ process_mux_close_fwd(struct ssh *ssh, u_int rid,
951 found_fwd->listen_host = found_fwd->connect_host = NULL; 963 found_fwd->listen_host = found_fwd->connect_host = NULL;
952 found_fwd->listen_path = found_fwd->connect_path = NULL; 964 found_fwd->listen_path = found_fwd->connect_path = NULL;
953 found_fwd->listen_port = found_fwd->connect_port = 0; 965 found_fwd->listen_port = found_fwd->connect_port = 0;
954 } else {
955 buffer_put_int(r, MUX_S_FAILURE);
956 buffer_put_int(r, rid);
957 buffer_put_cstring(r, error_reason);
958 } 966 }
959 out: 967 out:
960 free(fwd_desc); 968 free(fwd_desc);
@@ -966,24 +974,21 @@ process_mux_close_fwd(struct ssh *ssh, u_int rid,
966 974
967static int 975static int
968process_mux_stdio_fwd(struct ssh *ssh, u_int rid, 976process_mux_stdio_fwd(struct ssh *ssh, u_int rid,
969 Channel *c, Buffer *m, Buffer *r) 977 Channel *c, struct sshbuf *m, struct sshbuf *reply)
970{ 978{
971 Channel *nc; 979 Channel *nc;
972 char *reserved, *chost; 980 char *chost = NULL;
973 u_int cport, i, j; 981 u_int cport, i, j;
974 int new_fd[2]; 982 int r, new_fd[2];
975 struct mux_stdio_confirm_ctx *cctx; 983 struct mux_stdio_confirm_ctx *cctx;
976 984
977 chost = reserved = NULL; 985 if ((r = sshbuf_skip_string(m)) != 0 || /* reserved */
978 if ((reserved = buffer_get_string_ret(m, NULL)) == NULL || 986 (r = sshbuf_get_cstring(m, &chost, NULL)) != 0 ||
979 (chost = buffer_get_string_ret(m, NULL)) == NULL || 987 (r = sshbuf_get_u32(m, &cport)) != 0) {
980 buffer_get_int_ret(&cport, m) != 0) {
981 free(reserved);
982 free(chost); 988 free(chost);
983 error("%s: malformed message", __func__); 989 error("%s: malformed message", __func__);
984 return -1; 990 return -1;
985 } 991 }
986 free(reserved);
987 992
988 debug2("%s: channel %d: request stdio fwd to %s:%u", 993 debug2("%s: channel %d: request stdio fwd to %s:%u",
989 __func__, c->self, chost, cport); 994 __func__, c->self, chost, cport);
@@ -998,9 +1003,7 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid,
998 free(chost); 1003 free(chost);
999 1004
1000 /* prepare reply */ 1005 /* prepare reply */
1001 buffer_put_int(r, MUX_S_FAILURE); 1006 reply_error(reply, MUX_S_FAILURE, rid,
1002 buffer_put_int(r, rid);
1003 buffer_put_cstring(r,
1004 "did not receive file descriptors"); 1007 "did not receive file descriptors");
1005 return -1; 1008 return -1;
1006 } 1009 }
@@ -1012,10 +1015,8 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid,
1012 /* XXX support multiple child sessions in future */ 1015 /* XXX support multiple child sessions in future */
1013 if (c->have_remote_id) { 1016 if (c->have_remote_id) {
1014 debug2("%s: session already open", __func__); 1017 debug2("%s: session already open", __func__);
1015 /* prepare reply */ 1018 reply_error(reply, MUX_S_FAILURE, rid,
1016 buffer_put_int(r, MUX_S_FAILURE); 1019 "Multiple sessions not supported");
1017 buffer_put_int(r, rid);
1018 buffer_put_cstring(r, "Multiple sessions not supported");
1019 cleanup: 1020 cleanup:
1020 close(new_fd[0]); 1021 close(new_fd[0]);
1021 close(new_fd[1]); 1022 close(new_fd[1]);
@@ -1028,10 +1029,8 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid,
1028 if (!ask_permission("Allow forward to %s:%u? ", 1029 if (!ask_permission("Allow forward to %s:%u? ",
1029 chost, cport)) { 1030 chost, cport)) {
1030 debug2("%s: stdio fwd refused by user", __func__); 1031 debug2("%s: stdio fwd refused by user", __func__);
1031 /* prepare reply */ 1032 reply_error(reply, MUX_S_PERMISSION_DENIED, rid,
1032 buffer_put_int(r, MUX_S_PERMISSION_DENIED); 1033 "Permission denied");
1033 buffer_put_int(r, rid);
1034 buffer_put_cstring(r, "Permission denied");
1035 goto cleanup; 1034 goto cleanup;
1036 } 1035 }
1037 } 1036 }
@@ -1043,6 +1042,7 @@ process_mux_stdio_fwd(struct ssh *ssh, u_int rid,
1043 set_nonblock(new_fd[1]); 1042 set_nonblock(new_fd[1]);
1044 1043
1045 nc = channel_connect_stdio_fwd(ssh, chost, cport, new_fd[0], new_fd[1]); 1044 nc = channel_connect_stdio_fwd(ssh, chost, cport, new_fd[0], new_fd[1]);
1045 free(chost);
1046 1046
1047 nc->ctl_chan = c->self; /* link session -> control channel */ 1047 nc->ctl_chan = c->self; /* link session -> control channel */
1048 c->remote_id = nc->self; /* link control -> session channel */ 1048 c->remote_id = nc->self; /* link control -> session channel */
@@ -1069,7 +1069,8 @@ mux_stdio_confirm(struct ssh *ssh, int id, int success, void *arg)
1069{ 1069{
1070 struct mux_stdio_confirm_ctx *cctx = arg; 1070 struct mux_stdio_confirm_ctx *cctx = arg;
1071 Channel *c, *cc; 1071 Channel *c, *cc;
1072 Buffer reply; 1072 struct sshbuf *reply;
1073 int r;
1073 1074
1074 if (cctx == NULL) 1075 if (cctx == NULL)
1075 fatal("%s: cctx == NULL", __func__); 1076 fatal("%s: cctx == NULL", __func__);
@@ -1078,28 +1079,29 @@ mux_stdio_confirm(struct ssh *ssh, int id, int success, void *arg)
1078 if ((cc = channel_by_id(ssh, c->ctl_chan)) == NULL) 1079 if ((cc = channel_by_id(ssh, c->ctl_chan)) == NULL)
1079 fatal("%s: channel %d lacks control channel %d", __func__, 1080 fatal("%s: channel %d lacks control channel %d", __func__,
1080 id, c->ctl_chan); 1081 id, c->ctl_chan);
1082 if ((reply = sshbuf_new()) == NULL)
1083 fatal("%s: sshbuf_new", __func__);
1081 1084
1082 if (!success) { 1085 if (!success) {
1083 debug3("%s: sending failure reply", __func__); 1086 debug3("%s: sending failure reply", __func__);
1087 reply_error(reply, MUX_S_FAILURE, cctx->rid,
1088 "Session open refused by peer");
1084 /* prepare reply */ 1089 /* prepare reply */
1085 buffer_init(&reply);
1086 buffer_put_int(&reply, MUX_S_FAILURE);
1087 buffer_put_int(&reply, cctx->rid);
1088 buffer_put_cstring(&reply, "Session open refused by peer");
1089 goto done; 1090 goto done;
1090 } 1091 }
1091 1092
1092 debug3("%s: sending success reply", __func__); 1093 debug3("%s: sending success reply", __func__);
1093 /* prepare reply */ 1094 /* prepare reply */
1094 buffer_init(&reply); 1095 if ((r = sshbuf_put_u32(reply, MUX_S_SESSION_OPENED)) != 0 ||
1095 buffer_put_int(&reply, MUX_S_SESSION_OPENED); 1096 (r = sshbuf_put_u32(reply, cctx->rid)) != 0 ||
1096 buffer_put_int(&reply, cctx->rid); 1097 (r = sshbuf_put_u32(reply, c->self)) != 0)
1097 buffer_put_int(&reply, c->self); 1098 fatal("%s: reply: %s", __func__, ssh_err(r));
1098 1099
1099 done: 1100 done:
1100 /* Send reply */ 1101 /* Send reply */
1101 buffer_put_string(cc->output, buffer_ptr(&reply), buffer_len(&reply)); 1102 if ((r = sshbuf_put_stringb(cc->output, reply)) != 0)
1102 buffer_free(&reply); 1103 fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r));
1104 sshbuf_free(reply);
1103 1105
1104 if (cc->mux_pause <= 0) 1106 if (cc->mux_pause <= 0)
1105 fatal("%s: mux_pause %d", __func__, cc->mux_pause); 1107 fatal("%s: mux_pause %d", __func__, cc->mux_pause);
@@ -1110,7 +1112,7 @@ mux_stdio_confirm(struct ssh *ssh, int id, int success, void *arg)
1110 1112
1111static int 1113static int
1112process_mux_stop_listening(struct ssh *ssh, u_int rid, 1114process_mux_stop_listening(struct ssh *ssh, u_int rid,
1113 Channel *c, Buffer *m, Buffer *r) 1115 Channel *c, struct sshbuf *m, struct sshbuf *reply)
1114{ 1116{
1115 debug("%s: channel %d: stop listening", __func__, c->self); 1117 debug("%s: channel %d: stop listening", __func__, c->self);
1116 1118
@@ -1119,9 +1121,8 @@ process_mux_stop_listening(struct ssh *ssh, u_int rid,
1119 if (!ask_permission("Disable further multiplexing on shared " 1121 if (!ask_permission("Disable further multiplexing on shared "
1120 "connection to %s? ", host)) { 1122 "connection to %s? ", host)) {
1121 debug2("%s: stop listen refused by user", __func__); 1123 debug2("%s: stop listen refused by user", __func__);
1122 buffer_put_int(r, MUX_S_PERMISSION_DENIED); 1124 reply_error(reply, MUX_S_PERMISSION_DENIED, rid,
1123 buffer_put_int(r, rid); 1125 "Permission denied");
1124 buffer_put_cstring(r, "Permission denied");
1125 return 0; 1126 return 0;
1126 } 1127 }
1127 } 1128 }
@@ -1135,22 +1136,22 @@ process_mux_stop_listening(struct ssh *ssh, u_int rid,
1135 muxserver_sock = -1; 1136 muxserver_sock = -1;
1136 } 1137 }
1137 1138
1138 /* prepare reply */ 1139 reply_ok(reply, rid);
1139 buffer_put_int(r, MUX_S_OK);
1140 buffer_put_int(r, rid);
1141
1142 return 0; 1140 return 0;
1143} 1141}
1144 1142
1145static int 1143static int
1146process_mux_proxy(struct ssh *ssh, u_int rid, 1144process_mux_proxy(struct ssh *ssh, u_int rid,
1147 Channel *c, Buffer *m, Buffer *r) 1145 Channel *c, struct sshbuf *m, struct sshbuf *reply)
1148{ 1146{
1147 int r;
1148
1149 debug("%s: channel %d: proxy request", __func__, c->self); 1149 debug("%s: channel %d: proxy request", __func__, c->self);
1150 1150
1151 c->mux_rcb = channel_proxy_downstream; 1151 c->mux_rcb = channel_proxy_downstream;
1152 buffer_put_int(r, MUX_S_PROXY); 1152 if ((r = sshbuf_put_u32(reply, MUX_S_PROXY)) != 0 ||
1153 buffer_put_int(r, rid); 1153 (r = sshbuf_put_u32(reply, rid)) != 0)
1154 fatal("%s: reply: %s", __func__, ssh_err(r));
1154 1155
1155 return 0; 1156 return 0;
1156} 1157}
@@ -1160,10 +1161,12 @@ static int
1160mux_master_read_cb(struct ssh *ssh, Channel *c) 1161mux_master_read_cb(struct ssh *ssh, Channel *c)
1161{ 1162{
1162 struct mux_master_state *state = (struct mux_master_state *)c->mux_ctx; 1163 struct mux_master_state *state = (struct mux_master_state *)c->mux_ctx;
1163 Buffer in, out; 1164 struct sshbuf *in = NULL, *out = NULL;
1164 const u_char *ptr; 1165 u_int type, rid, i;
1165 u_int type, rid, have, i; 1166 int r, ret = -1;
1166 int ret = -1; 1167
1168 if ((out = sshbuf_new()) == NULL)
1169 fatal("%s: sshbuf_new", __func__);
1167 1170
1168 /* Setup ctx and */ 1171 /* Setup ctx and */
1169 if (c->mux_ctx == NULL) { 1172 if (c->mux_ctx == NULL) {
@@ -1173,32 +1176,29 @@ mux_master_read_cb(struct ssh *ssh, Channel *c)
1173 mux_master_control_cleanup_cb, 0); 1176 mux_master_control_cleanup_cb, 0);
1174 1177
1175 /* Send hello */ 1178 /* Send hello */
1176 buffer_init(&out); 1179 if ((r = sshbuf_put_u32(out, MUX_MSG_HELLO)) != 0 ||
1177 buffer_put_int(&out, MUX_MSG_HELLO); 1180 (r = sshbuf_put_u32(out, SSHMUX_VER)) != 0)
1178 buffer_put_int(&out, SSHMUX_VER); 1181 fatal("%s: reply: %s", __func__, ssh_err(r));
1179 /* no extensions */ 1182 /* no extensions */
1180 buffer_put_string(c->output, buffer_ptr(&out), 1183 if ((r = sshbuf_put_stringb(c->output, out)) != 0)
1181 buffer_len(&out)); 1184 fatal("%s: sshbuf_put_stringb: %s",
1182 buffer_free(&out); 1185 __func__, ssh_err(r));
1183 debug3("%s: channel %d: hello sent", __func__, c->self); 1186 debug3("%s: channel %d: hello sent", __func__, c->self);
1184 return 0; 1187 ret = 0;
1188 goto out;
1185 } 1189 }
1186 1190
1187 buffer_init(&in);
1188 buffer_init(&out);
1189
1190 /* Channel code ensures that we receive whole packets */ 1191 /* Channel code ensures that we receive whole packets */
1191 if ((ptr = buffer_get_string_ptr_ret(c->input, &have)) == NULL) { 1192 if ((r = sshbuf_froms(c->input, &in)) != 0) {
1192 malf: 1193 malf:
1193 error("%s: malformed message", __func__); 1194 error("%s: malformed message", __func__);
1194 goto out; 1195 goto out;
1195 } 1196 }
1196 buffer_append(&in, ptr, have);
1197 1197
1198 if (buffer_get_int_ret(&type, &in) != 0) 1198 if ((r = sshbuf_get_u32(in, &type)) != 0)
1199 goto malf; 1199 goto malf;
1200 debug3("%s: channel %d packet type 0x%08x len %u", 1200 debug3("%s: channel %d packet type 0x%08x len %zu",
1201 __func__, c->self, type, buffer_len(&in)); 1201 __func__, c->self, type, sshbuf_len(in));
1202 1202
1203 if (type == MUX_MSG_HELLO) 1203 if (type == MUX_MSG_HELLO)
1204 rid = 0; 1204 rid = 0;
@@ -1208,40 +1208,40 @@ mux_master_read_cb(struct ssh *ssh, Channel *c)
1208 "received 0x%08x", __func__, MUX_MSG_HELLO, type); 1208 "received 0x%08x", __func__, MUX_MSG_HELLO, type);
1209 goto out; 1209 goto out;
1210 } 1210 }
1211 if (buffer_get_int_ret(&rid, &in) != 0) 1211 if ((r = sshbuf_get_u32(in, &rid)) != 0)
1212 goto malf; 1212 goto malf;
1213 } 1213 }
1214 1214
1215 for (i = 0; mux_master_handlers[i].handler != NULL; i++) { 1215 for (i = 0; mux_master_handlers[i].handler != NULL; i++) {
1216 if (type == mux_master_handlers[i].type) { 1216 if (type == mux_master_handlers[i].type) {
1217 ret = mux_master_handlers[i].handler(ssh, rid, 1217 ret = mux_master_handlers[i].handler(ssh, rid,
1218 c, &in, &out); 1218 c, in, out);
1219 break; 1219 break;
1220 } 1220 }
1221 } 1221 }
1222 if (mux_master_handlers[i].handler == NULL) { 1222 if (mux_master_handlers[i].handler == NULL) {
1223 error("%s: unsupported mux message 0x%08x", __func__, type); 1223 error("%s: unsupported mux message 0x%08x", __func__, type);
1224 buffer_put_int(&out, MUX_S_FAILURE); 1224 reply_error(out, MUX_S_FAILURE, rid, "unsupported request");
1225 buffer_put_int(&out, rid);
1226 buffer_put_cstring(&out, "unsupported request");
1227 ret = 0; 1225 ret = 0;
1228 } 1226 }
1229 /* Enqueue reply packet */ 1227 /* Enqueue reply packet */
1230 if (buffer_len(&out) != 0) { 1228 if (sshbuf_len(out) != 0) {
1231 buffer_put_string(c->output, buffer_ptr(&out), 1229 if ((r = sshbuf_put_stringb(c->output, out)) != 0)
1232 buffer_len(&out)); 1230 fatal("%s: sshbuf_put_stringb: %s",
1231 __func__, ssh_err(r));
1233 } 1232 }
1234 out: 1233 out:
1235 buffer_free(&in); 1234 sshbuf_free(in);
1236 buffer_free(&out); 1235 sshbuf_free(out);
1237 return ret; 1236 return ret;
1238} 1237}
1239 1238
1240void 1239void
1241mux_exit_message(struct ssh *ssh, Channel *c, int exitval) 1240mux_exit_message(struct ssh *ssh, Channel *c, int exitval)
1242{ 1241{
1243 Buffer m; 1242 struct sshbuf *m;
1244 Channel *mux_chan; 1243 Channel *mux_chan;
1244 int r;
1245 1245
1246 debug3("%s: channel %d: exit message, exitval %d", __func__, c->self, 1246 debug3("%s: channel %d: exit message, exitval %d", __func__, c->self,
1247 exitval); 1247 exitval);
@@ -1251,20 +1251,22 @@ mux_exit_message(struct ssh *ssh, Channel *c, int exitval)
1251 __func__, c->self, c->ctl_chan); 1251 __func__, c->self, c->ctl_chan);
1252 1252
1253 /* Append exit message packet to control socket output queue */ 1253 /* Append exit message packet to control socket output queue */
1254 buffer_init(&m); 1254 if ((m = sshbuf_new()) == NULL)
1255 buffer_put_int(&m, MUX_S_EXIT_MESSAGE); 1255 fatal("%s: sshbuf_new", __func__);
1256 buffer_put_int(&m, c->self); 1256 if ((r = sshbuf_put_u32(m, MUX_S_EXIT_MESSAGE)) != 0 ||
1257 buffer_put_int(&m, exitval); 1257 (r = sshbuf_put_u32(m, c->self)) != 0 ||
1258 1258 (r = sshbuf_put_u32(m, exitval)) != 0 ||
1259 buffer_put_string(mux_chan->output, buffer_ptr(&m), buffer_len(&m)); 1259 (r = sshbuf_put_stringb(mux_chan->output, m)) != 0)
1260 buffer_free(&m); 1260 fatal("%s: reply: %s", __func__, ssh_err(r));
1261 sshbuf_free(m);
1261} 1262}
1262 1263
1263void 1264void
1264mux_tty_alloc_failed(struct ssh *ssh, Channel *c) 1265mux_tty_alloc_failed(struct ssh *ssh, Channel *c)
1265{ 1266{
1266 Buffer m; 1267 struct sshbuf *m;
1267 Channel *mux_chan; 1268 Channel *mux_chan;
1269 int r;
1268 1270
1269 debug3("%s: channel %d: TTY alloc failed", __func__, c->self); 1271 debug3("%s: channel %d: TTY alloc failed", __func__, c->self);
1270 1272
@@ -1273,12 +1275,13 @@ mux_tty_alloc_failed(struct ssh *ssh, Channel *c)
1273 __func__, c->self, c->ctl_chan); 1275 __func__, c->self, c->ctl_chan);
1274 1276
1275 /* Append exit message packet to control socket output queue */ 1277 /* Append exit message packet to control socket output queue */
1276 buffer_init(&m); 1278 if ((m = sshbuf_new()) == NULL)
1277 buffer_put_int(&m, MUX_S_TTY_ALLOC_FAIL); 1279 fatal("%s: sshbuf_new", __func__);
1278 buffer_put_int(&m, c->self); 1280 if ((r = sshbuf_put_u32(m, MUX_S_TTY_ALLOC_FAIL)) != 0 ||
1279 1281 (r = sshbuf_put_u32(m, c->self)) != 0 ||
1280 buffer_put_string(mux_chan->output, buffer_ptr(&m), buffer_len(&m)); 1282 (r = sshbuf_put_stringb(mux_chan->output, m)) != 0)
1281 buffer_free(&m); 1283 fatal("%s: reply: %s", __func__, ssh_err(r));
1284 sshbuf_free(m);
1282} 1285}
1283 1286
1284/* Prepare a mux master to listen on a Unix domain socket. */ 1287/* Prepare a mux master to listen on a Unix domain socket. */
@@ -1372,8 +1375,8 @@ mux_session_confirm(struct ssh *ssh, int id, int success, void *arg)
1372 struct mux_session_confirm_ctx *cctx = arg; 1375 struct mux_session_confirm_ctx *cctx = arg;
1373 const char *display; 1376 const char *display;
1374 Channel *c, *cc; 1377 Channel *c, *cc;
1375 int i; 1378 int i, r;
1376 Buffer reply; 1379 struct sshbuf *reply;
1377 1380
1378 if (cctx == NULL) 1381 if (cctx == NULL)
1379 fatal("%s: cctx == NULL", __func__); 1382 fatal("%s: cctx == NULL", __func__);
@@ -1382,14 +1385,13 @@ mux_session_confirm(struct ssh *ssh, int id, int success, void *arg)
1382 if ((cc = channel_by_id(ssh, c->ctl_chan)) == NULL) 1385 if ((cc = channel_by_id(ssh, c->ctl_chan)) == NULL)
1383 fatal("%s: channel %d lacks control channel %d", __func__, 1386 fatal("%s: channel %d lacks control channel %d", __func__,
1384 id, c->ctl_chan); 1387 id, c->ctl_chan);
1388 if ((reply = sshbuf_new()) == NULL)
1389 fatal("%s: sshbuf_new", __func__);
1385 1390
1386 if (!success) { 1391 if (!success) {
1387 debug3("%s: sending failure reply", __func__); 1392 debug3("%s: sending failure reply", __func__);
1388 /* prepare reply */ 1393 reply_error(reply, MUX_S_FAILURE, cctx->rid,
1389 buffer_init(&reply); 1394 "Session open refused by peer");
1390 buffer_put_int(&reply, MUX_S_FAILURE);
1391 buffer_put_int(&reply, cctx->rid);
1392 buffer_put_cstring(&reply, "Session open refused by peer");
1393 goto done; 1395 goto done;
1394 } 1396 }
1395 1397
@@ -1419,25 +1421,26 @@ mux_session_confirm(struct ssh *ssh, int id, int success, void *arg)
1419 } 1421 }
1420 1422
1421 client_session2_setup(ssh, id, cctx->want_tty, cctx->want_subsys, 1423 client_session2_setup(ssh, id, cctx->want_tty, cctx->want_subsys,
1422 cctx->term, &cctx->tio, c->rfd, &cctx->cmd, cctx->env); 1424 cctx->term, &cctx->tio, c->rfd, cctx->cmd, cctx->env);
1423 1425
1424 debug3("%s: sending success reply", __func__); 1426 debug3("%s: sending success reply", __func__);
1425 /* prepare reply */ 1427 /* prepare reply */
1426 buffer_init(&reply); 1428 if ((r = sshbuf_put_u32(reply, MUX_S_SESSION_OPENED)) != 0 ||
1427 buffer_put_int(&reply, MUX_S_SESSION_OPENED); 1429 (r = sshbuf_put_u32(reply, cctx->rid)) != 0 ||
1428 buffer_put_int(&reply, cctx->rid); 1430 (r = sshbuf_put_u32(reply, c->self)) != 0)
1429 buffer_put_int(&reply, c->self); 1431 fatal("%s: reply: %s", __func__, ssh_err(r));
1430 1432
1431 done: 1433 done:
1432 /* Send reply */ 1434 /* Send reply */
1433 buffer_put_string(cc->output, buffer_ptr(&reply), buffer_len(&reply)); 1435 if ((r = sshbuf_put_stringb(cc->output, reply)) != 0)
1434 buffer_free(&reply); 1436 fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r));
1437 sshbuf_free(reply);
1435 1438
1436 if (cc->mux_pause <= 0) 1439 if (cc->mux_pause <= 0)
1437 fatal("%s: mux_pause %d", __func__, cc->mux_pause); 1440 fatal("%s: mux_pause %d", __func__, cc->mux_pause);
1438 cc->mux_pause = 0; /* start processing messages again */ 1441 cc->mux_pause = 0; /* start processing messages again */
1439 c->open_confirm_ctx = NULL; 1442 c->open_confirm_ctx = NULL;
1440 buffer_free(&cctx->cmd); 1443 sshbuf_free(cctx->cmd);
1441 free(cctx->term); 1444 free(cctx->term);
1442 if (cctx->env != NULL) { 1445 if (cctx->env != NULL) {
1443 for (i = 0; cctx->env[i] != NULL; i++) 1446 for (i = 0; cctx->env[i] != NULL; i++)
@@ -1472,16 +1475,18 @@ control_client_sigrelay(int signo)
1472} 1475}
1473 1476
1474static int 1477static int
1475mux_client_read(int fd, Buffer *b, u_int need) 1478mux_client_read(int fd, struct sshbuf *b, size_t need)
1476{ 1479{
1477 u_int have; 1480 size_t have;
1478 ssize_t len; 1481 ssize_t len;
1479 u_char *p; 1482 u_char *p;
1480 struct pollfd pfd; 1483 struct pollfd pfd;
1484 int r;
1481 1485
1482 pfd.fd = fd; 1486 pfd.fd = fd;
1483 pfd.events = POLLIN; 1487 pfd.events = POLLIN;
1484 p = buffer_append_space(b, need); 1488 if ((r = sshbuf_reserve(b, need, &p)) != 0)
1489 fatal("%s: reserve: %s", __func__, ssh_err(r));
1485 for (have = 0; have < need; ) { 1490 for (have = 0; have < need; ) {
1486 if (muxclient_terminate) { 1491 if (muxclient_terminate) {
1487 errno = EINTR; 1492 errno = EINTR;
@@ -1506,31 +1511,33 @@ mux_client_read(int fd, Buffer *b, u_int need)
1506 errno = EPIPE; 1511 errno = EPIPE;
1507 return -1; 1512 return -1;
1508 } 1513 }
1509 have += (u_int)len; 1514 have += (size_t)len;
1510 } 1515 }
1511 return 0; 1516 return 0;
1512} 1517}
1513 1518
1514static int 1519static int
1515mux_client_write_packet(int fd, Buffer *m) 1520mux_client_write_packet(int fd, struct sshbuf *m)
1516{ 1521{
1517 Buffer queue; 1522 struct sshbuf *queue;
1518 u_int have, need; 1523 u_int have, need;
1519 int oerrno, len; 1524 int r, oerrno, len;
1520 u_char *ptr; 1525 const u_char *ptr;
1521 struct pollfd pfd; 1526 struct pollfd pfd;
1522 1527
1523 pfd.fd = fd; 1528 pfd.fd = fd;
1524 pfd.events = POLLOUT; 1529 pfd.events = POLLOUT;
1525 buffer_init(&queue); 1530 if ((queue = sshbuf_new()) == NULL)
1526 buffer_put_string(&queue, buffer_ptr(m), buffer_len(m)); 1531 fatal("%s: sshbuf_new", __func__);
1532 if ((r = sshbuf_put_stringb(queue, m)) != 0)
1533 fatal("%s: sshbuf_put_stringb: %s", __func__, ssh_err(r));
1527 1534
1528 need = buffer_len(&queue); 1535 need = sshbuf_len(queue);
1529 ptr = buffer_ptr(&queue); 1536 ptr = sshbuf_ptr(queue);
1530 1537
1531 for (have = 0; have < need; ) { 1538 for (have = 0; have < need; ) {
1532 if (muxclient_terminate) { 1539 if (muxclient_terminate) {
1533 buffer_free(&queue); 1540 sshbuf_free(queue);
1534 errno = EINTR; 1541 errno = EINTR;
1535 return -1; 1542 return -1;
1536 } 1543 }
@@ -1547,85 +1554,91 @@ mux_client_write_packet(int fd, Buffer *m)
1547 continue; 1554 continue;
1548 default: 1555 default:
1549 oerrno = errno; 1556 oerrno = errno;
1550 buffer_free(&queue); 1557 sshbuf_free(queue);
1551 errno = oerrno; 1558 errno = oerrno;
1552 return -1; 1559 return -1;
1553 } 1560 }
1554 } 1561 }
1555 if (len == 0) { 1562 if (len == 0) {
1556 buffer_free(&queue); 1563 sshbuf_free(queue);
1557 errno = EPIPE; 1564 errno = EPIPE;
1558 return -1; 1565 return -1;
1559 } 1566 }
1560 have += (u_int)len; 1567 have += (u_int)len;
1561 } 1568 }
1562 buffer_free(&queue); 1569 sshbuf_free(queue);
1563 return 0; 1570 return 0;
1564} 1571}
1565 1572
1566static int 1573static int
1567mux_client_read_packet(int fd, Buffer *m) 1574mux_client_read_packet(int fd, struct sshbuf *m)
1568{ 1575{
1569 Buffer queue; 1576 struct sshbuf *queue;
1570 u_int need, have; 1577 size_t need, have;
1571 const u_char *ptr; 1578 const u_char *ptr;
1572 int oerrno; 1579 int r, oerrno;
1573 1580
1574 buffer_init(&queue); 1581 if ((queue = sshbuf_new()) == NULL)
1575 if (mux_client_read(fd, &queue, 4) != 0) { 1582 fatal("%s: sshbuf_new", __func__);
1583 if (mux_client_read(fd, queue, 4) != 0) {
1576 if ((oerrno = errno) == EPIPE) 1584 if ((oerrno = errno) == EPIPE)
1577 debug3("%s: read header failed: %s", __func__, 1585 debug3("%s: read header failed: %s", __func__,
1578 strerror(errno)); 1586 strerror(errno));
1579 buffer_free(&queue); 1587 sshbuf_free(queue);
1580 errno = oerrno; 1588 errno = oerrno;
1581 return -1; 1589 return -1;
1582 } 1590 }
1583 need = get_u32(buffer_ptr(&queue)); 1591 need = PEEK_U32(sshbuf_ptr(queue));
1584 if (mux_client_read(fd, &queue, need) != 0) { 1592 if (mux_client_read(fd, queue, need) != 0) {
1585 oerrno = errno; 1593 oerrno = errno;
1586 debug3("%s: read body failed: %s", __func__, strerror(errno)); 1594 debug3("%s: read body failed: %s", __func__, strerror(errno));
1587 buffer_free(&queue); 1595 sshbuf_free(queue);
1588 errno = oerrno; 1596 errno = oerrno;
1589 return -1; 1597 return -1;
1590 } 1598 }
1591 ptr = buffer_get_string_ptr(&queue, &have); 1599 if ((r = sshbuf_get_string_direct(queue, &ptr, &have)) != 0 ||
1592 buffer_append(m, ptr, have); 1600 (r = sshbuf_put(m, ptr, have)) != 0)
1593 buffer_free(&queue); 1601 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1602 sshbuf_free(queue);
1594 return 0; 1603 return 0;
1595} 1604}
1596 1605
1597static int 1606static int
1598mux_client_hello_exchange(int fd) 1607mux_client_hello_exchange(int fd)
1599{ 1608{
1600 Buffer m; 1609 struct sshbuf *m;
1601 u_int type, ver; 1610 u_int type, ver;
1602 int ret = -1; 1611 int r, ret = -1;
1603 1612
1604 buffer_init(&m); 1613 if ((m = sshbuf_new()) == NULL)
1605 buffer_put_int(&m, MUX_MSG_HELLO); 1614 fatal("%s: sshbuf_new", __func__);
1606 buffer_put_int(&m, SSHMUX_VER); 1615 if ((r = sshbuf_put_u32(m, MUX_MSG_HELLO)) != 0 ||
1616 (r = sshbuf_put_u32(m, SSHMUX_VER)) != 0)
1617 fatal("%s: hello: %s", __func__, ssh_err(r));
1607 /* no extensions */ 1618 /* no extensions */
1608 1619
1609 if (mux_client_write_packet(fd, &m) != 0) { 1620 if (mux_client_write_packet(fd, m) != 0) {
1610 debug("%s: write packet: %s", __func__, strerror(errno)); 1621 debug("%s: write packet: %s", __func__, strerror(errno));
1611 goto out; 1622 goto out;
1612 } 1623 }
1613 1624
1614 buffer_clear(&m); 1625 sshbuf_reset(m);
1615 1626
1616 /* Read their HELLO */ 1627 /* Read their HELLO */
1617 if (mux_client_read_packet(fd, &m) != 0) { 1628 if (mux_client_read_packet(fd, m) != 0) {
1618 debug("%s: read packet failed", __func__); 1629 debug("%s: read packet failed", __func__);
1619 goto out; 1630 goto out;
1620 } 1631 }
1621 1632
1622 type = buffer_get_int(&m); 1633 if ((r = sshbuf_get_u32(m, &type)) != 0)
1634 fatal("%s: decode type: %s", __func__, ssh_err(r));
1623 if (type != MUX_MSG_HELLO) { 1635 if (type != MUX_MSG_HELLO) {
1624 error("%s: expected HELLO (%u) received %u", 1636 error("%s: expected HELLO (%u) received %u",
1625 __func__, MUX_MSG_HELLO, type); 1637 __func__, MUX_MSG_HELLO, type);
1626 goto out; 1638 goto out;
1627 } 1639 }
1628 ver = buffer_get_int(&m); 1640 if ((r = sshbuf_get_u32(m, &ver)) != 0)
1641 fatal("%s: decode version: %s", __func__, ssh_err(r));
1629 if (ver != SSHMUX_VER) { 1642 if (ver != SSHMUX_VER) {
1630 error("Unsupported multiplexing protocol version %d " 1643 error("Unsupported multiplexing protocol version %d "
1631 "(expected %d)", ver, SSHMUX_VER); 1644 "(expected %d)", ver, SSHMUX_VER);
@@ -1633,56 +1646,68 @@ mux_client_hello_exchange(int fd)
1633 } 1646 }
1634 debug2("%s: master version %u", __func__, ver); 1647 debug2("%s: master version %u", __func__, ver);
1635 /* No extensions are presently defined */ 1648 /* No extensions are presently defined */
1636 while (buffer_len(&m) > 0) { 1649 while (sshbuf_len(m) > 0) {
1637 char *name = buffer_get_string(&m, NULL); 1650 char *name = NULL;
1638 char *value = buffer_get_string(&m, NULL);
1639 1651
1652 if ((r = sshbuf_get_cstring(m, &name, NULL)) != 0 ||
1653 (r = sshbuf_skip_string(m)) != 0) { /* value */
1654 error("%s: malformed extension: %s",
1655 __func__, ssh_err(r));
1656 goto out;
1657 }
1640 debug2("Unrecognised master extension \"%s\"", name); 1658 debug2("Unrecognised master extension \"%s\"", name);
1641 free(name); 1659 free(name);
1642 free(value);
1643 } 1660 }
1644 /* success */ 1661 /* success */
1645 ret = 0; 1662 ret = 0;
1646 out: 1663 out:
1647 buffer_free(&m); 1664 sshbuf_free(m);
1648 return ret; 1665 return ret;
1649} 1666}
1650 1667
1651static u_int 1668static u_int
1652mux_client_request_alive(int fd) 1669mux_client_request_alive(int fd)
1653{ 1670{
1654 Buffer m; 1671 struct sshbuf *m;
1655 char *e; 1672 char *e;
1656 u_int pid, type, rid; 1673 u_int pid, type, rid;
1674 int r;
1657 1675
1658 debug3("%s: entering", __func__); 1676 debug3("%s: entering", __func__);
1659 1677
1660 buffer_init(&m); 1678 if ((m = sshbuf_new()) == NULL)
1661 buffer_put_int(&m, MUX_C_ALIVE_CHECK); 1679 fatal("%s: sshbuf_new", __func__);
1662 buffer_put_int(&m, muxclient_request_id); 1680 if ((r = sshbuf_put_u32(m, MUX_C_ALIVE_CHECK)) != 0 ||
1681 (r = sshbuf_put_u32(m, muxclient_request_id)) != 0)
1682 fatal("%s: request: %s", __func__, ssh_err(r));
1663 1683
1664 if (mux_client_write_packet(fd, &m) != 0) 1684 if (mux_client_write_packet(fd, m) != 0)
1665 fatal("%s: write packet: %s", __func__, strerror(errno)); 1685 fatal("%s: write packet: %s", __func__, strerror(errno));
1666 1686
1667 buffer_clear(&m); 1687 sshbuf_reset(m);
1668 1688
1669 /* Read their reply */ 1689 /* Read their reply */
1670 if (mux_client_read_packet(fd, &m) != 0) { 1690 if (mux_client_read_packet(fd, m) != 0) {
1671 buffer_free(&m); 1691 sshbuf_free(m);
1672 return 0; 1692 return 0;
1673 } 1693 }
1674 1694
1675 type = buffer_get_int(&m); 1695 if ((r = sshbuf_get_u32(m, &type)) != 0)
1696 fatal("%s: decode type: %s", __func__, ssh_err(r));
1676 if (type != MUX_S_ALIVE) { 1697 if (type != MUX_S_ALIVE) {
1677 e = buffer_get_string(&m, NULL); 1698 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
1699 fatal("%s: decode error: %s", __func__, ssh_err(r));
1678 fatal("%s: master returned error: %s", __func__, e); 1700 fatal("%s: master returned error: %s", __func__, e);
1679 } 1701 }
1680 1702
1681 if ((rid = buffer_get_int(&m)) != muxclient_request_id) 1703 if ((r = sshbuf_get_u32(m, &rid)) != 0)
1704 fatal("%s: decode remote ID: %s", __func__, ssh_err(r));
1705 if (rid != muxclient_request_id)
1682 fatal("%s: out of sequence reply: my id %u theirs %u", 1706 fatal("%s: out of sequence reply: my id %u theirs %u",
1683 __func__, muxclient_request_id, rid); 1707 __func__, muxclient_request_id, rid);
1684 pid = buffer_get_int(&m); 1708 if ((r = sshbuf_get_u32(m, &pid)) != 0)
1685 buffer_free(&m); 1709 fatal("%s: decode PID: %s", __func__, ssh_err(r));
1710 sshbuf_free(m);
1686 1711
1687 debug3("%s: done pid = %u", __func__, pid); 1712 debug3("%s: done pid = %u", __func__, pid);
1688 1713
@@ -1694,107 +1719,128 @@ mux_client_request_alive(int fd)
1694static void 1719static void
1695mux_client_request_terminate(int fd) 1720mux_client_request_terminate(int fd)
1696{ 1721{
1697 Buffer m; 1722 struct sshbuf *m;
1698 char *e; 1723 char *e;
1699 u_int type, rid; 1724 u_int type, rid;
1725 int r;
1700 1726
1701 debug3("%s: entering", __func__); 1727 debug3("%s: entering", __func__);
1702 1728
1703 buffer_init(&m); 1729 if ((m = sshbuf_new()) == NULL)
1704 buffer_put_int(&m, MUX_C_TERMINATE); 1730 fatal("%s: sshbuf_new", __func__);
1705 buffer_put_int(&m, muxclient_request_id); 1731 if ((r = sshbuf_put_u32(m, MUX_C_TERMINATE)) != 0 ||
1732 (r = sshbuf_put_u32(m, muxclient_request_id)) != 0)
1733 fatal("%s: request: %s", __func__, ssh_err(r));
1706 1734
1707 if (mux_client_write_packet(fd, &m) != 0) 1735 if (mux_client_write_packet(fd, m) != 0)
1708 fatal("%s: write packet: %s", __func__, strerror(errno)); 1736 fatal("%s: write packet: %s", __func__, strerror(errno));
1709 1737
1710 buffer_clear(&m); 1738 sshbuf_reset(m);
1711 1739
1712 /* Read their reply */ 1740 /* Read their reply */
1713 if (mux_client_read_packet(fd, &m) != 0) { 1741 if (mux_client_read_packet(fd, m) != 0) {
1714 /* Remote end exited already */ 1742 /* Remote end exited already */
1715 if (errno == EPIPE) { 1743 if (errno == EPIPE) {
1716 buffer_free(&m); 1744 sshbuf_free(m);
1717 return; 1745 return;
1718 } 1746 }
1719 fatal("%s: read from master failed: %s", 1747 fatal("%s: read from master failed: %s",
1720 __func__, strerror(errno)); 1748 __func__, strerror(errno));
1721 } 1749 }
1722 1750
1723 type = buffer_get_int(&m); 1751 if ((r = sshbuf_get_u32(m, &type)) != 0 ||
1724 if ((rid = buffer_get_int(&m)) != muxclient_request_id) 1752 (r = sshbuf_get_u32(m, &rid)) != 0)
1753 fatal("%s: decode: %s", __func__, ssh_err(r));
1754 if (rid != muxclient_request_id)
1725 fatal("%s: out of sequence reply: my id %u theirs %u", 1755 fatal("%s: out of sequence reply: my id %u theirs %u",
1726 __func__, muxclient_request_id, rid); 1756 __func__, muxclient_request_id, rid);
1727 switch (type) { 1757 switch (type) {
1728 case MUX_S_OK: 1758 case MUX_S_OK:
1729 break; 1759 break;
1730 case MUX_S_PERMISSION_DENIED: 1760 case MUX_S_PERMISSION_DENIED:
1731 e = buffer_get_string(&m, NULL); 1761 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
1762 fatal("%s: decode error: %s", __func__, ssh_err(r));
1732 fatal("Master refused termination request: %s", e); 1763 fatal("Master refused termination request: %s", e);
1733 case MUX_S_FAILURE: 1764 case MUX_S_FAILURE:
1734 e = buffer_get_string(&m, NULL); 1765 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
1766 fatal("%s: decode error: %s", __func__, ssh_err(r));
1735 fatal("%s: termination request failed: %s", __func__, e); 1767 fatal("%s: termination request failed: %s", __func__, e);
1736 default: 1768 default:
1737 fatal("%s: unexpected response from master 0x%08x", 1769 fatal("%s: unexpected response from master 0x%08x",
1738 __func__, type); 1770 __func__, type);
1739 } 1771 }
1740 buffer_free(&m); 1772 sshbuf_free(m);
1741 muxclient_request_id++; 1773 muxclient_request_id++;
1742} 1774}
1743 1775
1744static int 1776static int
1745mux_client_forward(int fd, int cancel_flag, u_int ftype, struct Forward *fwd) 1777mux_client_forward(int fd, int cancel_flag, u_int ftype, struct Forward *fwd)
1746{ 1778{
1747 Buffer m; 1779 struct sshbuf *m;
1748 char *e, *fwd_desc; 1780 char *e, *fwd_desc;
1781 const char *lhost, *chost;
1749 u_int type, rid; 1782 u_int type, rid;
1783 int r;
1750 1784
1751 fwd_desc = format_forward(ftype, fwd); 1785 fwd_desc = format_forward(ftype, fwd);
1752 debug("Requesting %s %s", 1786 debug("Requesting %s %s",
1753 cancel_flag ? "cancellation of" : "forwarding of", fwd_desc); 1787 cancel_flag ? "cancellation of" : "forwarding of", fwd_desc);
1754 free(fwd_desc); 1788 free(fwd_desc);
1755 1789
1756 buffer_init(&m); 1790 type = cancel_flag ? MUX_C_CLOSE_FWD : MUX_C_OPEN_FWD;
1757 buffer_put_int(&m, cancel_flag ? MUX_C_CLOSE_FWD : MUX_C_OPEN_FWD); 1791 if (fwd->listen_path != NULL)
1758 buffer_put_int(&m, muxclient_request_id); 1792 lhost = fwd->listen_path;
1759 buffer_put_int(&m, ftype); 1793 else if (fwd->listen_host == NULL)
1760 if (fwd->listen_path != NULL) { 1794 lhost = "";
1761 buffer_put_cstring(&m, fwd->listen_path); 1795 else if (*fwd->listen_host == '\0')
1762 } else { 1796 lhost = "*";
1763 buffer_put_cstring(&m, 1797 else
1764 fwd->listen_host == NULL ? "" : 1798 lhost = fwd->listen_host;
1765 (*fwd->listen_host == '\0' ? "*" : fwd->listen_host));
1766 }
1767 buffer_put_int(&m, fwd->listen_port);
1768 if (fwd->connect_path != NULL) {
1769 buffer_put_cstring(&m, fwd->connect_path);
1770 } else {
1771 buffer_put_cstring(&m,
1772 fwd->connect_host == NULL ? "" : fwd->connect_host);
1773 }
1774 buffer_put_int(&m, fwd->connect_port);
1775 1799
1776 if (mux_client_write_packet(fd, &m) != 0) 1800 if (fwd->connect_path != NULL)
1801 chost = fwd->connect_path;
1802 else if (fwd->connect_host == NULL)
1803 chost = "";
1804 else
1805 chost = fwd->connect_host;
1806
1807 if ((m = sshbuf_new()) == NULL)
1808 fatal("%s: sshbuf_new", __func__);
1809 if ((r = sshbuf_put_u32(m, type)) != 0 ||
1810 (r = sshbuf_put_u32(m, muxclient_request_id)) != 0 ||
1811 (r = sshbuf_put_u32(m, ftype)) != 0 ||
1812 (r = sshbuf_put_cstring(m, lhost)) != 0 ||
1813 (r = sshbuf_put_u32(m, fwd->listen_port)) != 0 ||
1814 (r = sshbuf_put_cstring(m, chost)) != 0 ||
1815 (r = sshbuf_put_u32(m, fwd->connect_port)) != 0)
1816 fatal("%s: request: %s", __func__, ssh_err(r));
1817
1818 if (mux_client_write_packet(fd, m) != 0)
1777 fatal("%s: write packet: %s", __func__, strerror(errno)); 1819 fatal("%s: write packet: %s", __func__, strerror(errno));
1778 1820
1779 buffer_clear(&m); 1821 sshbuf_reset(m);
1780 1822
1781 /* Read their reply */ 1823 /* Read their reply */
1782 if (mux_client_read_packet(fd, &m) != 0) { 1824 if (mux_client_read_packet(fd, m) != 0) {
1783 buffer_free(&m); 1825 sshbuf_free(m);
1784 return -1; 1826 return -1;
1785 } 1827 }
1786 1828
1787 type = buffer_get_int(&m); 1829 if ((r = sshbuf_get_u32(m, &type)) != 0 ||
1788 if ((rid = buffer_get_int(&m)) != muxclient_request_id) 1830 (r = sshbuf_get_u32(m, &rid)) != 0)
1831 fatal("%s: decode: %s", __func__, ssh_err(r));
1832 if (rid != muxclient_request_id)
1789 fatal("%s: out of sequence reply: my id %u theirs %u", 1833 fatal("%s: out of sequence reply: my id %u theirs %u",
1790 __func__, muxclient_request_id, rid); 1834 __func__, muxclient_request_id, rid);
1835
1791 switch (type) { 1836 switch (type) {
1792 case MUX_S_OK: 1837 case MUX_S_OK:
1793 break; 1838 break;
1794 case MUX_S_REMOTE_PORT: 1839 case MUX_S_REMOTE_PORT:
1795 if (cancel_flag) 1840 if (cancel_flag)
1796 fatal("%s: got MUX_S_REMOTE_PORT for cancel", __func__); 1841 fatal("%s: got MUX_S_REMOTE_PORT for cancel", __func__);
1797 fwd->allocated_port = buffer_get_int(&m); 1842 if ((r = sshbuf_get_u32(m, &fwd->allocated_port)) != 0)
1843 fatal("%s: decode port: %s", __func__, ssh_err(r));
1798 verbose("Allocated port %u for remote forward to %s:%d", 1844 verbose("Allocated port %u for remote forward to %s:%d",
1799 fwd->allocated_port, 1845 fwd->allocated_port,
1800 fwd->connect_host ? fwd->connect_host : "", 1846 fwd->connect_host ? fwd->connect_host : "",
@@ -1803,20 +1849,22 @@ mux_client_forward(int fd, int cancel_flag, u_int ftype, struct Forward *fwd)
1803 fprintf(stdout, "%i\n", fwd->allocated_port); 1849 fprintf(stdout, "%i\n", fwd->allocated_port);
1804 break; 1850 break;
1805 case MUX_S_PERMISSION_DENIED: 1851 case MUX_S_PERMISSION_DENIED:
1806 e = buffer_get_string(&m, NULL); 1852 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
1807 buffer_free(&m); 1853 fatal("%s: decode error: %s", __func__, ssh_err(r));
1854 sshbuf_free(m);
1808 error("Master refused forwarding request: %s", e); 1855 error("Master refused forwarding request: %s", e);
1809 return -1; 1856 return -1;
1810 case MUX_S_FAILURE: 1857 case MUX_S_FAILURE:
1811 e = buffer_get_string(&m, NULL); 1858 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
1812 buffer_free(&m); 1859 fatal("%s: decode error: %s", __func__, ssh_err(r));
1860 sshbuf_free(m);
1813 error("%s: forwarding request failed: %s", __func__, e); 1861 error("%s: forwarding request failed: %s", __func__, e);
1814 return -1; 1862 return -1;
1815 default: 1863 default:
1816 fatal("%s: unexpected response from master 0x%08x", 1864 fatal("%s: unexpected response from master 0x%08x",
1817 __func__, type); 1865 __func__, type);
1818 } 1866 }
1819 buffer_free(&m); 1867 sshbuf_free(m);
1820 1868
1821 muxclient_request_id++; 1869 muxclient_request_id++;
1822 return 0; 1870 return 0;
@@ -1850,11 +1898,12 @@ mux_client_forwards(int fd, int cancel_flag)
1850static int 1898static int
1851mux_client_request_session(int fd) 1899mux_client_request_session(int fd)
1852{ 1900{
1853 Buffer m; 1901 struct sshbuf *m;
1854 char *e, *term; 1902 char *e;
1855 u_int i, rid, sid, esid, exitval, type, exitval_seen; 1903 const char *term;
1904 u_int echar, rid, sid, esid, exitval, type, exitval_seen;
1856 extern char **environ; 1905 extern char **environ;
1857 int devnull, rawmode; 1906 int r, i, devnull, rawmode;
1858 1907
1859 debug3("%s: entering", __func__); 1908 debug3("%s: entering", __func__);
1860 1909
@@ -1874,31 +1923,41 @@ mux_client_request_session(int fd)
1874 close(devnull); 1923 close(devnull);
1875 } 1924 }
1876 1925
1877 term = getenv("TERM"); 1926 if ((term = getenv("TERM")) == NULL)
1878 1927 term = "";
1879 buffer_init(&m); 1928 echar = 0xffffffff;
1880 buffer_put_int(&m, MUX_C_NEW_SESSION); 1929 if (options.escape_char != SSH_ESCAPECHAR_NONE)
1881 buffer_put_int(&m, muxclient_request_id); 1930 echar = (u_int)options.escape_char;
1882 buffer_put_cstring(&m, ""); /* reserved */ 1931
1883 buffer_put_int(&m, tty_flag); 1932 if ((m = sshbuf_new()) == NULL)
1884 buffer_put_int(&m, options.forward_x11); 1933 fatal("%s: sshbuf_new", __func__);
1885 buffer_put_int(&m, options.forward_agent); 1934 if ((r = sshbuf_put_u32(m, MUX_C_NEW_SESSION)) != 0 ||
1886 buffer_put_int(&m, subsystem_flag); 1935 (r = sshbuf_put_u32(m, muxclient_request_id)) != 0 ||
1887 buffer_put_int(&m, options.escape_char == SSH_ESCAPECHAR_NONE ? 1936 (r = sshbuf_put_string(m, NULL, 0)) != 0 || /* reserved */
1888 0xffffffff : (u_int)options.escape_char); 1937 (r = sshbuf_put_u32(m, tty_flag)) != 0 ||
1889 buffer_put_cstring(&m, term == NULL ? "" : term); 1938 (r = sshbuf_put_u32(m, options.forward_x11)) != 0 ||
1890 buffer_put_string(&m, buffer_ptr(&command), buffer_len(&command)); 1939 (r = sshbuf_put_u32(m, options.forward_agent)) != 0 ||
1891 1940 (r = sshbuf_put_u32(m, subsystem_flag)) != 0 ||
1941 (r = sshbuf_put_u32(m, echar)) != 0 ||
1942 (r = sshbuf_put_cstring(m, term)) != 0 ||
1943 (r = sshbuf_put_stringb(m, command)) != 0)
1944 fatal("%s: request: %s", __func__, ssh_err(r));
1945
1946 /* Pass environment */
1892 if (options.num_send_env > 0 && environ != NULL) { 1947 if (options.num_send_env > 0 && environ != NULL) {
1893 /* Pass environment */
1894 for (i = 0; environ[i] != NULL; i++) { 1948 for (i = 0; environ[i] != NULL; i++) {
1895 if (env_permitted(environ[i])) { 1949 if (!env_permitted(environ[i]))
1896 buffer_put_cstring(&m, environ[i]); 1950 continue;
1897 } 1951 if ((r = sshbuf_put_cstring(m, environ[i])) != 0)
1952 fatal("%s: request: %s", __func__, ssh_err(r));
1898 } 1953 }
1899 } 1954 }
1955 for (i = 0; i < options.num_setenv; i++) {
1956 if ((r = sshbuf_put_cstring(m, options.setenv[i])) != 0)
1957 fatal("%s: request: %s", __func__, ssh_err(r));
1958 }
1900 1959
1901 if (mux_client_write_packet(fd, &m) != 0) 1960 if (mux_client_write_packet(fd, m) != 0)
1902 fatal("%s: write packet: %s", __func__, strerror(errno)); 1961 fatal("%s: write packet: %s", __func__, strerror(errno));
1903 1962
1904 /* Send the stdio file descriptors */ 1963 /* Send the stdio file descriptors */
@@ -1910,35 +1969,40 @@ mux_client_request_session(int fd)
1910 debug3("%s: session request sent", __func__); 1969 debug3("%s: session request sent", __func__);
1911 1970
1912 /* Read their reply */ 1971 /* Read their reply */
1913 buffer_clear(&m); 1972 sshbuf_reset(m);
1914 if (mux_client_read_packet(fd, &m) != 0) { 1973 if (mux_client_read_packet(fd, m) != 0) {
1915 error("%s: read from master failed: %s", 1974 error("%s: read from master failed: %s",
1916 __func__, strerror(errno)); 1975 __func__, strerror(errno));
1917 buffer_free(&m); 1976 sshbuf_free(m);
1918 return -1; 1977 return -1;
1919 } 1978 }
1920 1979
1921 type = buffer_get_int(&m); 1980 if ((r = sshbuf_get_u32(m, &type)) != 0 ||
1922 if ((rid = buffer_get_int(&m)) != muxclient_request_id) 1981 (r = sshbuf_get_u32(m, &rid)) != 0)
1982 fatal("%s: decode: %s", __func__, ssh_err(r));
1983 if (rid != muxclient_request_id)
1923 fatal("%s: out of sequence reply: my id %u theirs %u", 1984 fatal("%s: out of sequence reply: my id %u theirs %u",
1924 __func__, muxclient_request_id, rid); 1985 __func__, muxclient_request_id, rid);
1986
1925 switch (type) { 1987 switch (type) {
1926 case MUX_S_SESSION_OPENED: 1988 case MUX_S_SESSION_OPENED:
1927 sid = buffer_get_int(&m); 1989 if ((r = sshbuf_get_u32(m, &sid)) != 0)
1928 debug("%s: master session id: %u", __func__, sid); 1990 fatal("%s: decode ID: %s", __func__, ssh_err(r));
1929 break; 1991 break;
1930 case MUX_S_PERMISSION_DENIED: 1992 case MUX_S_PERMISSION_DENIED:
1931 e = buffer_get_string(&m, NULL); 1993 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
1932 buffer_free(&m); 1994 fatal("%s: decode error: %s", __func__, ssh_err(r));
1933 error("Master refused session request: %s", e); 1995 error("Master refused session request: %s", e);
1996 sshbuf_free(m);
1934 return -1; 1997 return -1;
1935 case MUX_S_FAILURE: 1998 case MUX_S_FAILURE:
1936 e = buffer_get_string(&m, NULL); 1999 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
1937 buffer_free(&m); 2000 fatal("%s: decode error: %s", __func__, ssh_err(r));
1938 error("%s: session request failed: %s", __func__, e); 2001 error("%s: session request failed: %s", __func__, e);
2002 sshbuf_free(m);
1939 return -1; 2003 return -1;
1940 default: 2004 default:
1941 buffer_free(&m); 2005 sshbuf_free(m);
1942 error("%s: unexpected response from master 0x%08x", 2006 error("%s: unexpected response from master 0x%08x",
1943 __func__, type); 2007 __func__, type);
1944 return -1; 2008 return -1;
@@ -1966,13 +2030,17 @@ mux_client_request_session(int fd)
1966 * terminate early too (possibly losing data). 2030 * terminate early too (possibly losing data).
1967 */ 2031 */
1968 for (exitval = 255, exitval_seen = 0;;) { 2032 for (exitval = 255, exitval_seen = 0;;) {
1969 buffer_clear(&m); 2033 sshbuf_reset(m);
1970 if (mux_client_read_packet(fd, &m) != 0) 2034 if (mux_client_read_packet(fd, m) != 0)
1971 break; 2035 break;
1972 type = buffer_get_int(&m); 2036 if ((r = sshbuf_get_u32(m, &type)) != 0)
2037 fatal("%s: decode type: %s", __func__, ssh_err(r));
1973 switch (type) { 2038 switch (type) {
1974 case MUX_S_TTY_ALLOC_FAIL: 2039 case MUX_S_TTY_ALLOC_FAIL:
1975 if ((esid = buffer_get_int(&m)) != sid) 2040 if ((r = sshbuf_get_u32(m, &esid)) != 0)
2041 fatal("%s: decode ID: %s",
2042 __func__, ssh_err(r));
2043 if (esid != sid)
1976 fatal("%s: tty alloc fail on unknown session: " 2044 fatal("%s: tty alloc fail on unknown session: "
1977 "my id %u theirs %u", 2045 "my id %u theirs %u",
1978 __func__, sid, esid); 2046 __func__, sid, esid);
@@ -1981,17 +2049,24 @@ mux_client_request_session(int fd)
1981 rawmode = 0; 2049 rawmode = 0;
1982 continue; 2050 continue;
1983 case MUX_S_EXIT_MESSAGE: 2051 case MUX_S_EXIT_MESSAGE:
1984 if ((esid = buffer_get_int(&m)) != sid) 2052 if ((r = sshbuf_get_u32(m, &esid)) != 0)
2053 fatal("%s: decode ID: %s",
2054 __func__, ssh_err(r));
2055 if (esid != sid)
1985 fatal("%s: exit on unknown session: " 2056 fatal("%s: exit on unknown session: "
1986 "my id %u theirs %u", 2057 "my id %u theirs %u",
1987 __func__, sid, esid); 2058 __func__, sid, esid);
1988 if (exitval_seen) 2059 if (exitval_seen)
1989 fatal("%s: exitval sent twice", __func__); 2060 fatal("%s: exitval sent twice", __func__);
1990 exitval = buffer_get_int(&m); 2061 if ((r = sshbuf_get_u32(m, &exitval)) != 0)
2062 fatal("%s: decode exit value: %s",
2063 __func__, ssh_err(r));
1991 exitval_seen = 1; 2064 exitval_seen = 1;
1992 continue; 2065 continue;
1993 default: 2066 default:
1994 e = buffer_get_string(&m, NULL); 2067 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
2068 fatal("%s: decode error: %s",
2069 __func__, ssh_err(r));
1995 fatal("%s: master returned error: %s", __func__, e); 2070 fatal("%s: master returned error: %s", __func__, e);
1996 } 2071 }
1997 } 2072 }
@@ -2018,32 +2093,38 @@ mux_client_request_session(int fd)
2018static int 2093static int
2019mux_client_proxy(int fd) 2094mux_client_proxy(int fd)
2020{ 2095{
2021 Buffer m; 2096 struct sshbuf *m;
2022 char *e; 2097 char *e;
2023 u_int type, rid; 2098 u_int type, rid;
2024 2099 int r;
2025 buffer_init(&m); 2100
2026 buffer_put_int(&m, MUX_C_PROXY); 2101 if ((m = sshbuf_new()) == NULL)
2027 buffer_put_int(&m, muxclient_request_id); 2102 fatal("%s: sshbuf_new", __func__);
2028 if (mux_client_write_packet(fd, &m) != 0) 2103 if ((r = sshbuf_put_u32(m, MUX_C_PROXY)) != 0 ||
2104 (r = sshbuf_put_u32(m, muxclient_request_id)) != 0)
2105 fatal("%s: request: %s", __func__, ssh_err(r));
2106 if (mux_client_write_packet(fd, m) != 0)
2029 fatal("%s: write packet: %s", __func__, strerror(errno)); 2107 fatal("%s: write packet: %s", __func__, strerror(errno));
2030 2108
2031 buffer_clear(&m); 2109 sshbuf_reset(m);
2032 2110
2033 /* Read their reply */ 2111 /* Read their reply */
2034 if (mux_client_read_packet(fd, &m) != 0) { 2112 if (mux_client_read_packet(fd, m) != 0) {
2035 buffer_free(&m); 2113 sshbuf_free(m);
2036 return 0; 2114 return 0;
2037 } 2115 }
2038 type = buffer_get_int(&m); 2116 if ((r = sshbuf_get_u32(m, &type)) != 0 ||
2117 (r = sshbuf_get_u32(m, &rid)) != 0)
2118 fatal("%s: decode: %s", __func__, ssh_err(r));
2119 if (rid != muxclient_request_id)
2120 fatal("%s: out of sequence reply: my id %u theirs %u",
2121 __func__, muxclient_request_id, rid);
2039 if (type != MUX_S_PROXY) { 2122 if (type != MUX_S_PROXY) {
2040 e = buffer_get_string(&m, NULL); 2123 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
2124 fatal("%s: decode error: %s", __func__, ssh_err(r));
2041 fatal("%s: master returned error: %s", __func__, e); 2125 fatal("%s: master returned error: %s", __func__, e);
2042 } 2126 }
2043 if ((rid = buffer_get_int(&m)) != muxclient_request_id) 2127 sshbuf_free(m);
2044 fatal("%s: out of sequence reply: my id %u theirs %u",
2045 __func__, muxclient_request_id, rid);
2046 buffer_free(&m);
2047 2128
2048 debug3("%s: done", __func__); 2129 debug3("%s: done", __func__);
2049 muxclient_request_id++; 2130 muxclient_request_id++;
@@ -2053,10 +2134,10 @@ mux_client_proxy(int fd)
2053static int 2134static int
2054mux_client_request_stdio_fwd(int fd) 2135mux_client_request_stdio_fwd(int fd)
2055{ 2136{
2056 Buffer m; 2137 struct sshbuf *m;
2057 char *e; 2138 char *e;
2058 u_int type, rid, sid; 2139 u_int type, rid, sid;
2059 int devnull; 2140 int r, devnull;
2060 2141
2061 debug3("%s: entering", __func__); 2142 debug3("%s: entering", __func__);
2062 2143
@@ -2076,14 +2157,16 @@ mux_client_request_stdio_fwd(int fd)
2076 close(devnull); 2157 close(devnull);
2077 } 2158 }
2078 2159
2079 buffer_init(&m); 2160 if ((m = sshbuf_new()) == NULL)
2080 buffer_put_int(&m, MUX_C_NEW_STDIO_FWD); 2161 fatal("%s: sshbuf_new", __func__);
2081 buffer_put_int(&m, muxclient_request_id); 2162 if ((r = sshbuf_put_u32(m, MUX_C_NEW_STDIO_FWD)) != 0 ||
2082 buffer_put_cstring(&m, ""); /* reserved */ 2163 (r = sshbuf_put_u32(m, muxclient_request_id)) != 0 ||
2083 buffer_put_cstring(&m, options.stdio_forward_host); 2164 (r = sshbuf_put_string(m, NULL, 0)) != 0 || /* reserved */
2084 buffer_put_int(&m, options.stdio_forward_port); 2165 (r = sshbuf_put_cstring(m, options.stdio_forward_host)) != 0 ||
2166 (r = sshbuf_put_u32(m, options.stdio_forward_port)) != 0)
2167 fatal("%s: request: %s", __func__, ssh_err(r));
2085 2168
2086 if (mux_client_write_packet(fd, &m) != 0) 2169 if (mux_client_write_packet(fd, m) != 0)
2087 fatal("%s: write packet: %s", __func__, strerror(errno)); 2170 fatal("%s: write packet: %s", __func__, strerror(errno));
2088 2171
2089 /* Send the stdio file descriptors */ 2172 /* Send the stdio file descriptors */
@@ -2098,34 +2181,39 @@ mux_client_request_stdio_fwd(int fd)
2098 debug3("%s: stdio forward request sent", __func__); 2181 debug3("%s: stdio forward request sent", __func__);
2099 2182
2100 /* Read their reply */ 2183 /* Read their reply */
2101 buffer_clear(&m); 2184 sshbuf_reset(m);
2102 2185
2103 if (mux_client_read_packet(fd, &m) != 0) { 2186 if (mux_client_read_packet(fd, m) != 0) {
2104 error("%s: read from master failed: %s", 2187 error("%s: read from master failed: %s",
2105 __func__, strerror(errno)); 2188 __func__, strerror(errno));
2106 buffer_free(&m); 2189 sshbuf_free(m);
2107 return -1; 2190 return -1;
2108 } 2191 }
2109 2192
2110 type = buffer_get_int(&m); 2193 if ((r = sshbuf_get_u32(m, &type)) != 0 ||
2111 if ((rid = buffer_get_int(&m)) != muxclient_request_id) 2194 (r = sshbuf_get_u32(m, &rid)) != 0)
2195 fatal("%s: decode: %s", __func__, ssh_err(r));
2196 if (rid != muxclient_request_id)
2112 fatal("%s: out of sequence reply: my id %u theirs %u", 2197 fatal("%s: out of sequence reply: my id %u theirs %u",
2113 __func__, muxclient_request_id, rid); 2198 __func__, muxclient_request_id, rid);
2114 switch (type) { 2199 switch (type) {
2115 case MUX_S_SESSION_OPENED: 2200 case MUX_S_SESSION_OPENED:
2116 sid = buffer_get_int(&m); 2201 if ((r = sshbuf_get_u32(m, &sid)) != 0)
2202 fatal("%s: decode ID: %s", __func__, ssh_err(r));
2117 debug("%s: master session id: %u", __func__, sid); 2203 debug("%s: master session id: %u", __func__, sid);
2118 break; 2204 break;
2119 case MUX_S_PERMISSION_DENIED: 2205 case MUX_S_PERMISSION_DENIED:
2120 e = buffer_get_string(&m, NULL); 2206 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
2121 buffer_free(&m); 2207 fatal("%s: decode error: %s", __func__, ssh_err(r));
2208 sshbuf_free(m);
2122 fatal("Master refused stdio forwarding request: %s", e); 2209 fatal("Master refused stdio forwarding request: %s", e);
2123 case MUX_S_FAILURE: 2210 case MUX_S_FAILURE:
2124 e = buffer_get_string(&m, NULL); 2211 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
2125 buffer_free(&m); 2212 fatal("%s: decode error: %s", __func__, ssh_err(r));
2213 sshbuf_free(m);
2126 fatal("Stdio forwarding request failed: %s", e); 2214 fatal("Stdio forwarding request failed: %s", e);
2127 default: 2215 default:
2128 buffer_free(&m); 2216 sshbuf_free(m);
2129 error("%s: unexpected response from master 0x%08x", 2217 error("%s: unexpected response from master 0x%08x",
2130 __func__, type); 2218 __func__, type);
2131 return -1; 2219 return -1;
@@ -2140,8 +2228,8 @@ mux_client_request_stdio_fwd(int fd)
2140 /* 2228 /*
2141 * Stick around until the controlee closes the client_fd. 2229 * Stick around until the controlee closes the client_fd.
2142 */ 2230 */
2143 buffer_clear(&m); 2231 sshbuf_reset(m);
2144 if (mux_client_read_packet(fd, &m) != 0) { 2232 if (mux_client_read_packet(fd, m) != 0) {
2145 if (errno == EPIPE || 2233 if (errno == EPIPE ||
2146 (errno == EINTR && muxclient_terminate != 0)) 2234 (errno == EINTR && muxclient_terminate != 0))
2147 return 0; 2235 return 0;
@@ -2154,44 +2242,52 @@ mux_client_request_stdio_fwd(int fd)
2154static void 2242static void
2155mux_client_request_stop_listening(int fd) 2243mux_client_request_stop_listening(int fd)
2156{ 2244{
2157 Buffer m; 2245 struct sshbuf *m;
2158 char *e; 2246 char *e;
2159 u_int type, rid; 2247 u_int type, rid;
2248 int r;
2160 2249
2161 debug3("%s: entering", __func__); 2250 debug3("%s: entering", __func__);
2162 2251
2163 buffer_init(&m); 2252 if ((m = sshbuf_new()) == NULL)
2164 buffer_put_int(&m, MUX_C_STOP_LISTENING); 2253 fatal("%s: sshbuf_new", __func__);
2165 buffer_put_int(&m, muxclient_request_id); 2254 if ((r = sshbuf_put_u32(m, MUX_C_STOP_LISTENING)) != 0 ||
2255 (r = sshbuf_put_u32(m, muxclient_request_id)) != 0)
2256 fatal("%s: request: %s", __func__, ssh_err(r));
2166 2257
2167 if (mux_client_write_packet(fd, &m) != 0) 2258 if (mux_client_write_packet(fd, m) != 0)
2168 fatal("%s: write packet: %s", __func__, strerror(errno)); 2259 fatal("%s: write packet: %s", __func__, strerror(errno));
2169 2260
2170 buffer_clear(&m); 2261 sshbuf_reset(m);
2171 2262
2172 /* Read their reply */ 2263 /* Read their reply */
2173 if (mux_client_read_packet(fd, &m) != 0) 2264 if (mux_client_read_packet(fd, m) != 0)
2174 fatal("%s: read from master failed: %s", 2265 fatal("%s: read from master failed: %s",
2175 __func__, strerror(errno)); 2266 __func__, strerror(errno));
2176 2267
2177 type = buffer_get_int(&m); 2268 if ((r = sshbuf_get_u32(m, &type)) != 0 ||
2178 if ((rid = buffer_get_int(&m)) != muxclient_request_id) 2269 (r = sshbuf_get_u32(m, &rid)) != 0)
2270 fatal("%s: decode: %s", __func__, ssh_err(r));
2271 if (rid != muxclient_request_id)
2179 fatal("%s: out of sequence reply: my id %u theirs %u", 2272 fatal("%s: out of sequence reply: my id %u theirs %u",
2180 __func__, muxclient_request_id, rid); 2273 __func__, muxclient_request_id, rid);
2274
2181 switch (type) { 2275 switch (type) {
2182 case MUX_S_OK: 2276 case MUX_S_OK:
2183 break; 2277 break;
2184 case MUX_S_PERMISSION_DENIED: 2278 case MUX_S_PERMISSION_DENIED:
2185 e = buffer_get_string(&m, NULL); 2279 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
2280 fatal("%s: decode error: %s", __func__, ssh_err(r));
2186 fatal("Master refused stop listening request: %s", e); 2281 fatal("Master refused stop listening request: %s", e);
2187 case MUX_S_FAILURE: 2282 case MUX_S_FAILURE:
2188 e = buffer_get_string(&m, NULL); 2283 if ((r = sshbuf_get_cstring(m, &e, NULL)) != 0)
2284 fatal("%s: decode error: %s", __func__, ssh_err(r));
2189 fatal("%s: stop listening request failed: %s", __func__, e); 2285 fatal("%s: stop listening request failed: %s", __func__, e);
2190 default: 2286 default:
2191 fatal("%s: unexpected response from master 0x%08x", 2287 fatal("%s: unexpected response from master 0x%08x",
2192 __func__, type); 2288 __func__, type);
2193 } 2289 }
2194 buffer_free(&m); 2290 sshbuf_free(m);
2195 muxclient_request_id++; 2291 muxclient_request_id++;
2196} 2292}
2197 2293
diff --git a/myproposal.h b/myproposal.h
index c255147aa..08782dd30 100644
--- a/myproposal.h
+++ b/myproposal.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: myproposal.h,v 1.55 2017/05/07 23:13:42 djm Exp $ */ 1/* $OpenBSD: myproposal.h,v 1.56 2018/07/03 11:39:54 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -107,6 +107,8 @@
107#define KEX_DEFAULT_PK_ALG \ 107#define KEX_DEFAULT_PK_ALG \
108 HOSTKEY_ECDSA_CERT_METHODS \ 108 HOSTKEY_ECDSA_CERT_METHODS \
109 "ssh-ed25519-cert-v01@openssh.com," \ 109 "ssh-ed25519-cert-v01@openssh.com," \
110 "rsa-sha2-512-cert-v01@openssh.com," \
111 "rsa-sha2-256-cert-v01@openssh.com," \
110 "ssh-rsa-cert-v01@openssh.com," \ 112 "ssh-rsa-cert-v01@openssh.com," \
111 HOSTKEY_ECDSA_METHODS \ 113 HOSTKEY_ECDSA_METHODS \
112 "ssh-ed25519," \ 114 "ssh-ed25519," \
diff --git a/opacket.c b/opacket.c
index fca48e5f5..e637d7a71 100644
--- a/opacket.c
+++ b/opacket.c
@@ -3,6 +3,8 @@
3 3
4#include "includes.h" 4#include "includes.h"
5 5
6#include <stdarg.h>
7
6#include "ssherr.h" 8#include "ssherr.h"
7#include "packet.h" 9#include "packet.h"
8#include "log.h" 10#include "log.h"
diff --git a/opacket.h b/opacket.h
index b2c2e7f6a..f92fe586e 100644
--- a/opacket.h
+++ b/opacket.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: opacket.h,v 1.12 2017/10/20 01:56:39 djm Exp $ */ 1/* $OpenBSD: opacket.h,v 1.13 2018/07/06 09:03:02 sf Exp $ */
2#ifndef _OPACKET_H 2#ifndef _OPACKET_H
3/* Written by Markus Friedl. Placed in the public domain. */ 3/* Written by Markus Friedl. Placed in the public domain. */
4 4
@@ -59,8 +59,6 @@ void packet_read_expect(int expected_type);
59 ssh_packet_set_protocol_flags(active_state, (protocol_flags)) 59 ssh_packet_set_protocol_flags(active_state, (protocol_flags))
60#define packet_get_protocol_flags() \ 60#define packet_get_protocol_flags() \
61 ssh_packet_get_protocol_flags(active_state) 61 ssh_packet_get_protocol_flags(active_state)
62#define packet_start_compression(level) \
63 ssh_packet_start_compression(active_state, (level))
64#define packet_start(type) \ 62#define packet_start(type) \
65 ssh_packet_start(active_state, (type)) 63 ssh_packet_start(active_state, (type))
66#define packet_put_char(value) \ 64#define packet_put_char(value) \
diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in
index 8e3b42991..2fd9b952b 100644
--- a/openbsd-compat/Makefile.in
+++ b/openbsd-compat/Makefile.in
@@ -68,6 +68,7 @@ COMPAT= arc4random.o \
68 bsd-cygwin_util.o \ 68 bsd-cygwin_util.o \
69 bsd-err.o \ 69 bsd-err.o \
70 bsd-flock.o \ 70 bsd-flock.o \
71 bsd-getline.o \
71 bsd-getpagesize.o \ 72 bsd-getpagesize.o \
72 bsd-getpeereid.o \ 73 bsd-getpeereid.o \
73 bsd-malloc.o \ 74 bsd-malloc.o \
diff --git a/openbsd-compat/arc4random.c b/openbsd-compat/arc4random.c
index b6256b4f8..578f69f4f 100644
--- a/openbsd-compat/arc4random.c
+++ b/openbsd-compat/arc4random.c
@@ -33,6 +33,10 @@
33#include <string.h> 33#include <string.h>
34#include <unistd.h> 34#include <unistd.h>
35 35
36#ifdef HAVE_SYS_RANDOM_H
37# include <sys/random.h>
38#endif
39
36#ifndef HAVE_ARC4RANDOM 40#ifndef HAVE_ARC4RANDOM
37 41
38#ifdef WITH_OPENSSL 42#ifdef WITH_OPENSSL
@@ -78,8 +82,9 @@ _rs_init(u_char *buf, size_t n)
78} 82}
79 83
80#ifndef WITH_OPENSSL 84#ifndef WITH_OPENSSL
81#define SSH_RANDOM_DEV "/dev/urandom" 85# ifndef SSH_RANDOM_DEV
82/* XXX use getrandom() if supported on Linux */ 86# define SSH_RANDOM_DEV "/dev/urandom"
87# endif /* SSH_RANDOM_DEV */
83static void 88static void
84getrnd(u_char *s, size_t len) 89getrnd(u_char *s, size_t len)
85{ 90{
@@ -87,6 +92,11 @@ getrnd(u_char *s, size_t len)
87 ssize_t r; 92 ssize_t r;
88 size_t o = 0; 93 size_t o = 0;
89 94
95#ifdef HAVE_GETRANDOM
96 if ((r = getrandom(s, len, 0)) > 0 && (size_t)r == len)
97 return;
98#endif /* HAVE_GETRANDOM */
99
90 if ((fd = open(SSH_RANDOM_DEV, O_RDONLY)) == -1) 100 if ((fd = open(SSH_RANDOM_DEV, O_RDONLY)) == -1)
91 fatal("Couldn't open %s: %s", SSH_RANDOM_DEV, strerror(errno)); 101 fatal("Couldn't open %s: %s", SSH_RANDOM_DEV, strerror(errno));
92 while (o < len) { 102 while (o < len) {
@@ -101,7 +111,7 @@ getrnd(u_char *s, size_t len)
101 } 111 }
102 close(fd); 112 close(fd);
103} 113}
104#endif 114#endif /* WITH_OPENSSL */
105 115
106static void 116static void
107_rs_stir(void) 117_rs_stir(void)
diff --git a/openbsd-compat/bcrypt_pbkdf.c b/openbsd-compat/bcrypt_pbkdf.c
index 0a07f9a0f..785234563 100644
--- a/openbsd-compat/bcrypt_pbkdf.c
+++ b/openbsd-compat/bcrypt_pbkdf.c
@@ -46,7 +46,7 @@
46 * function with the following modifications: 46 * function with the following modifications:
47 * 1. The input password and salt are preprocessed with SHA512. 47 * 1. The input password and salt are preprocessed with SHA512.
48 * 2. The output length is expanded to 256 bits. 48 * 2. The output length is expanded to 256 bits.
49 * 3. Subsequently the magic string to be encrypted is lengthened and modifed 49 * 3. Subsequently the magic string to be encrypted is lengthened and modified
50 * to "OxychromaticBlowfishSwatDynamite" 50 * to "OxychromaticBlowfishSwatDynamite"
51 * 4. The hash function is defined to perform 64 rounds of initial state 51 * 4. The hash function is defined to perform 64 rounds of initial state
52 * expansion. (More rounds are performed by iterating the hash.) 52 * expansion. (More rounds are performed by iterating the hash.)
diff --git a/openbsd-compat/bsd-closefrom.c b/openbsd-compat/bsd-closefrom.c
index 9380b33a7..b56476a2d 100644
--- a/openbsd-compat/bsd-closefrom.c
+++ b/openbsd-compat/bsd-closefrom.c
@@ -77,7 +77,7 @@ closefrom(int lowfd)
77 77
78 /* Check for a /proc/$$/fd directory. */ 78 /* Check for a /proc/$$/fd directory. */
79 len = snprintf(fdpath, sizeof(fdpath), "/proc/%ld/fd", (long)getpid()); 79 len = snprintf(fdpath, sizeof(fdpath), "/proc/%ld/fd", (long)getpid());
80 if (len > 0 && (size_t)len <= sizeof(fdpath) && (dirp = opendir(fdpath))) { 80 if (len > 0 && (size_t)len < sizeof(fdpath) && (dirp = opendir(fdpath))) {
81 while ((dent = readdir(dirp)) != NULL) { 81 while ((dent = readdir(dirp)) != NULL) {
82 fd = strtol(dent->d_name, &endp, 10); 82 fd = strtol(dent->d_name, &endp, 10);
83 if (dent->d_name != endp && *endp == '\0' && 83 if (dent->d_name != endp && *endp == '\0' &&
diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c
index 398a5f617..fb49e30f5 100644
--- a/openbsd-compat/bsd-cygwin_util.c
+++ b/openbsd-compat/bsd-cygwin_util.c
@@ -36,6 +36,7 @@
36#include <fcntl.h> 36#include <fcntl.h>
37#include <string.h> 37#include <string.h>
38#include <unistd.h> 38#include <unistd.h>
39#include <stdarg.h>
39 40
40#include "xmalloc.h" 41#include "xmalloc.h"
41 42
diff --git a/openbsd-compat/bsd-cygwin_util.h b/openbsd-compat/bsd-cygwin_util.h
index 9cef694b9..202c055db 100644
--- a/openbsd-compat/bsd-cygwin_util.h
+++ b/openbsd-compat/bsd-cygwin_util.h
@@ -41,7 +41,7 @@ typedef void *HANDLE;
41#define UNLEN 256 41#define UNLEN 256
42 42
43/* Cygwin functions for which declarations are only available when including 43/* Cygwin functions for which declarations are only available when including
44 windows headers, so we have to define them here explicitely. */ 44 windows headers, so we have to define them here explicitly. */
45extern HANDLE cygwin_logon_user (const struct passwd *, const char *); 45extern HANDLE cygwin_logon_user (const struct passwd *, const char *);
46extern void cygwin_set_impersonation_token (const HANDLE); 46extern void cygwin_set_impersonation_token (const HANDLE);
47 47
diff --git a/openbsd-compat/bsd-getline.c b/openbsd-compat/bsd-getline.c
new file mode 100644
index 000000000..d676f4cef
--- /dev/null
+++ b/openbsd-compat/bsd-getline.c
@@ -0,0 +1,113 @@
1/* $NetBSD: getline.c,v 1.1.1.6 2015/01/02 20:34:27 christos Exp $ */
2
3/* NetBSD: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp */
4
5/*-
6 * Copyright (c) 2011 The NetBSD Foundation, Inc.
7 * All rights reserved.
8 *
9 * This code is derived from software contributed to The NetBSD Foundation
10 * by Christos Zoulas.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
22 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
23 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34/* NETBSD ORIGINAL: external/bsd/file/dist/src/getline.c */
35
36#include "includes.h"
37
38#if 0
39#include "file.h"
40#endif
41
42#if !HAVE_GETLINE
43#include <stdlib.h>
44#include <stdio.h>
45#include <unistd.h>
46#include <errno.h>
47#include <string.h>
48
49static ssize_t
50getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
51{
52 char *ptr, *eptr;
53
54
55 if (*buf == NULL || *bufsiz == 0) {
56 if ((*buf = malloc(BUFSIZ)) == NULL)
57 return -1;
58 *bufsiz = BUFSIZ;
59 }
60
61 for (ptr = *buf, eptr = *buf + *bufsiz;;) {
62 int c = fgetc(fp);
63 if (c == -1) {
64 if (feof(fp)) {
65 ssize_t diff = (ssize_t)(ptr - *buf);
66 if (diff != 0) {
67 *ptr = '\0';
68 return diff;
69 }
70 }
71 return -1;
72 }
73 *ptr++ = c;
74 if (c == delimiter) {
75 *ptr = '\0';
76 return ptr - *buf;
77 }
78 if (ptr + 2 >= eptr) {
79 char *nbuf;
80 size_t nbufsiz = *bufsiz * 2;
81 ssize_t d = ptr - *buf;
82 if ((nbuf = realloc(*buf, nbufsiz)) == NULL)
83 return -1;
84 *buf = nbuf;
85 *bufsiz = nbufsiz;
86 eptr = nbuf + nbufsiz;
87 ptr = nbuf + d;
88 }
89 }
90}
91
92ssize_t
93getline(char **buf, size_t *bufsiz, FILE *fp)
94{
95 return getdelim(buf, bufsiz, '\n', fp);
96}
97
98#endif
99
100#ifdef TEST
101int
102main(int argc, char *argv[])
103{
104 char *p = NULL;
105 ssize_t len;
106 size_t n = 0;
107
108 while ((len = getline(&p, &n, stdin)) != -1)
109 (void)printf("%" SIZE_T_FORMAT "d %s", len, p);
110 free(p);
111 return 0;
112}
113#endif
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c
index 3daf61071..b6893e171 100644
--- a/openbsd-compat/bsd-misc.c
+++ b/openbsd-compat/bsd-misc.c
@@ -28,6 +28,7 @@
28#include <string.h> 28#include <string.h>
29#include <signal.h> 29#include <signal.h>
30#include <stdlib.h> 30#include <stdlib.h>
31#include <stdio.h>
31#include <time.h> 32#include <time.h>
32#include <unistd.h> 33#include <unistd.h>
33 34
diff --git a/openbsd-compat/bsd-nextstep.h b/openbsd-compat/bsd-nextstep.h
index 610f9e381..4a45b15af 100644
--- a/openbsd-compat/bsd-nextstep.h
+++ b/openbsd-compat/bsd-nextstep.h
@@ -36,7 +36,7 @@
36/* NeXT's readdir() is BSD (struct direct) not POSIX (struct dirent) */ 36/* NeXT's readdir() is BSD (struct direct) not POSIX (struct dirent) */
37#define dirent direct 37#define dirent direct
38 38
39/* Swap out NeXT's BSD wait() for a more POSIX complient one */ 39/* Swap out NeXT's BSD wait() for a more POSIX compliant one */
40pid_t posix_wait(int *); 40pid_t posix_wait(int *);
41#define wait(a) posix_wait(a) 41#define wait(a) posix_wait(a)
42 42
diff --git a/openbsd-compat/bsd-snprintf.c b/openbsd-compat/bsd-snprintf.c
index d95b6a401..f27b9d808 100644
--- a/openbsd-compat/bsd-snprintf.c
+++ b/openbsd-compat/bsd-snprintf.c
@@ -30,7 +30,7 @@
30 * probably requires libm on most operating systems. Don't yet 30 * probably requires libm on most operating systems. Don't yet
31 * support the exponent (e,E) and sigfig (g,G). Also, fmtint() 31 * support the exponent (e,E) and sigfig (g,G). Also, fmtint()
32 * was pretty badly broken, it just wasn't being exercised in ways 32 * was pretty badly broken, it just wasn't being exercised in ways
33 * which showed it, so that's been fixed. Also, formated the code 33 * which showed it, so that's been fixed. Also, formatted the code
34 * to mutt conventions, and removed dead code left over from the 34 * to mutt conventions, and removed dead code left over from the
35 * original. Also, there is now a builtin-test, just compile with: 35 * original. Also, there is now a builtin-test, just compile with:
36 * gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm 36 * gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm
diff --git a/openbsd-compat/bsd-waitpid.h b/openbsd-compat/bsd-waitpid.h
index 5ce3ee4b5..b551268ab 100644
--- a/openbsd-compat/bsd-waitpid.h
+++ b/openbsd-compat/bsd-waitpid.h
@@ -27,7 +27,7 @@
27#define _BSD_WAITPID_H 27#define _BSD_WAITPID_H
28 28
29#ifndef HAVE_WAITPID 29#ifndef HAVE_WAITPID
30/* Clean out any potental issues */ 30/* Clean out any potential issues */
31#undef WIFEXITED 31#undef WIFEXITED
32#undef WIFSTOPPED 32#undef WIFSTOPPED
33#undef WIFSIGNALED 33#undef WIFSIGNALED
diff --git a/openbsd-compat/explicit_bzero.c b/openbsd-compat/explicit_bzero.c
index 53a003472..6ef9825a9 100644
--- a/openbsd-compat/explicit_bzero.c
+++ b/openbsd-compat/explicit_bzero.c
@@ -41,7 +41,7 @@ explicit_bzero(void *p, size_t n)
41 /* 41 /*
42 * clang -fsanitize=memory needs to intercept memset-like functions 42 * clang -fsanitize=memory needs to intercept memset-like functions
43 * to correctly detect memory initialisation. Make sure one is called 43 * to correctly detect memory initialisation. Make sure one is called
44 * directly since our indirection trick above sucessfully confuses it. 44 * directly since our indirection trick above successfully confuses it.
45 */ 45 */
46#if defined(__has_feature) 46#if defined(__has_feature)
47# if __has_feature(memory_sanitizer) 47# if __has_feature(memory_sanitizer)
diff --git a/openbsd-compat/fmt_scaled.c b/openbsd-compat/fmt_scaled.c
index 7c5193e26..2f76ef931 100644
--- a/openbsd-compat/fmt_scaled.c
+++ b/openbsd-compat/fmt_scaled.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: fmt_scaled.c,v 1.16 2017/03/16 02:40:46 dtucker Exp $ */ 1/* $OpenBSD: fmt_scaled.c,v 1.17 2018/05/14 04:39:04 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001, 2002, 2003 Ian F. Darwin. All rights reserved. 4 * Copyright (c) 2001, 2002, 2003 Ian F. Darwin. All rights reserved.
@@ -188,7 +188,7 @@ scan_scaled(char *scaled, long long *result)
188 /* scale whole part */ 188 /* scale whole part */
189 whole *= scale_fact; 189 whole *= scale_fact;
190 190
191 /* truncate fpart so it does't overflow. 191 /* truncate fpart so it doesn't overflow.
192 * then scale fractional part. 192 * then scale fractional part.
193 */ 193 */
194 while (fpart >= LLONG_MAX / scale_fact) { 194 while (fpart >= LLONG_MAX / scale_fact) {
@@ -246,12 +246,15 @@ fmt_scaled(long long number, char *result)
246 246
247 fract = (10 * fract + 512) / 1024; 247 fract = (10 * fract + 512) / 1024;
248 /* if the result would be >= 10, round main number */ 248 /* if the result would be >= 10, round main number */
249 if (fract == 10) { 249 if (fract >= 10) {
250 if (number >= 0) 250 if (number >= 0)
251 number++; 251 number++;
252 else 252 else
253 number--; 253 number--;
254 fract = 0; 254 fract = 0;
255 } else if (fract < 0) {
256 /* shouldn't happen */
257 fract = 0;
255 } 258 }
256 259
257 if (number == 0) 260 if (number == 0)
diff --git a/openbsd-compat/freezero.c b/openbsd-compat/freezero.c
index 90b9d3813..bad018ff0 100644
--- a/openbsd-compat/freezero.c
+++ b/openbsd-compat/freezero.c
@@ -16,6 +16,7 @@
16 16
17#include "includes.h" 17#include "includes.h"
18 18
19#include <stdlib.h>
19#include <string.h> 20#include <string.h>
20 21
21#ifndef HAVE_FREEZERO 22#ifndef HAVE_FREEZERO
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index b48fb9342..f5c833bf2 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -60,6 +60,10 @@ int bindresvport_sa(int sd, struct sockaddr *sa);
60void closefrom(int); 60void closefrom(int);
61#endif 61#endif
62 62
63#ifndef HAVE_GETLINE
64ssize_t getline(char **, size_t *, FILE *);
65#endif
66
63#ifndef HAVE_GETPAGESIZE 67#ifndef HAVE_GETPAGESIZE
64int getpagesize(void); 68int getpagesize(void);
65#endif 69#endif
diff --git a/openbsd-compat/port-aix.c b/openbsd-compat/port-aix.c
index 79c868966..943177c70 100644
--- a/openbsd-compat/port-aix.c
+++ b/openbsd-compat/port-aix.c
@@ -27,8 +27,9 @@
27#include "includes.h" 27#include "includes.h"
28 28
29#include "xmalloc.h" 29#include "xmalloc.h"
30#include "buffer.h" 30#include "sshbuf.h"
31#include "key.h" 31#include "ssherr.h"
32#include "sshkey.h"
32#include "hostfile.h" 33#include "hostfile.h"
33#include "auth.h" 34#include "auth.h"
34#include "ssh.h" 35#include "ssh.h"
@@ -176,7 +177,7 @@ sys_auth_passwd(struct ssh *ssh, const char *password)
176{ 177{
177 Authctxt *ctxt = ssh->authctxt; 178 Authctxt *ctxt = ssh->authctxt;
178 char *authmsg = NULL, *msg = NULL, *name = ctxt->pw->pw_name; 179 char *authmsg = NULL, *msg = NULL, *name = ctxt->pw->pw_name;
179 int authsuccess = 0, expired, reenter, result; 180 int r, authsuccess = 0, expired, reenter, result;
180 181
181 do { 182 do {
182 result = authenticate((char *)name, (char *)password, &reenter, 183 result = authenticate((char *)name, (char *)password, &reenter,
@@ -203,7 +204,10 @@ sys_auth_passwd(struct ssh *ssh, const char *password)
203 */ 204 */
204 expired = passwdexpired(name, &msg); 205 expired = passwdexpired(name, &msg);
205 if (msg && *msg) { 206 if (msg && *msg) {
206 buffer_append(ctxt->loginmsg, msg, strlen(msg)); 207 if ((r = sshbuf_put(ctxt->loginmsg,
208 msg, strlen(msg))) != 0)
209 fatal("%s: buffer error: %s",
210 __func__, ssh_err(r));
207 aix_remove_embedded_newlines(msg); 211 aix_remove_embedded_newlines(msg);
208 } 212 }
209 debug3("AIX/passwdexpired returned %d msg %.100s", expired, msg); 213 debug3("AIX/passwdexpired returned %d msg %.100s", expired, msg);
@@ -234,10 +238,10 @@ sys_auth_passwd(struct ssh *ssh, const char *password)
234 * Returns 1 if login is allowed, 0 if not allowed. 238 * Returns 1 if login is allowed, 0 if not allowed.
235 */ 239 */
236int 240int
237sys_auth_allowed_user(struct passwd *pw, Buffer *loginmsg) 241sys_auth_allowed_user(struct passwd *pw, struct sshbuf *loginmsg)
238{ 242{
239 char *msg = NULL; 243 char *msg = NULL;
240 int result, permitted = 0; 244 int r, result, permitted = 0;
241 struct stat st; 245 struct stat st;
242 246
243 /* 247 /*
@@ -260,8 +264,10 @@ sys_auth_allowed_user(struct passwd *pw, Buffer *loginmsg)
260 */ 264 */
261 if (result == -1 && errno == EPERM && stat(_PATH_NOLOGIN, &st) == 0) 265 if (result == -1 && errno == EPERM && stat(_PATH_NOLOGIN, &st) == 0)
262 permitted = 1; 266 permitted = 1;
263 else if (msg != NULL) 267 else if (msg != NULL) {
264 buffer_append(loginmsg, msg, strlen(msg)); 268 if ((r = sshbuf_put(loginmsg, msg, strlen(msg))) != 0)
269 fatal("%s: buffer error: %s", __func__, ssh_err(r));
270 }
265 if (msg == NULL) 271 if (msg == NULL)
266 msg = xstrdup("(none)"); 272 msg = xstrdup("(none)");
267 aix_remove_embedded_newlines(msg); 273 aix_remove_embedded_newlines(msg);
@@ -275,7 +281,7 @@ sys_auth_allowed_user(struct passwd *pw, Buffer *loginmsg)
275 281
276int 282int
277sys_auth_record_login(const char *user, const char *host, const char *ttynm, 283sys_auth_record_login(const char *user, const char *host, const char *ttynm,
278 Buffer *loginmsg) 284 struct sshbuf *loginmsg)
279{ 285{
280 char *msg = NULL; 286 char *msg = NULL;
281 int success = 0; 287 int success = 0;
diff --git a/openbsd-compat/port-aix.h b/openbsd-compat/port-aix.h
index 9c0a4dd3e..748c0e4e3 100644
--- a/openbsd-compat/port-aix.h
+++ b/openbsd-compat/port-aix.h
@@ -30,7 +30,7 @@
30# include <sys/socket.h> 30# include <sys/socket.h>
31#endif 31#endif
32 32
33#include "buffer.h" 33struct sshbuf;
34 34
35/* These should be in the system headers but are not. */ 35/* These should be in the system headers but are not. */
36int usrinfo(int, char *, int); 36int usrinfo(int, char *, int);
@@ -87,9 +87,10 @@ void aix_usrinfo(struct passwd *);
87#ifdef WITH_AIXAUTHENTICATE 87#ifdef WITH_AIXAUTHENTICATE
88# define CUSTOM_SYS_AUTH_PASSWD 1 88# define CUSTOM_SYS_AUTH_PASSWD 1
89# define CUSTOM_SYS_AUTH_ALLOWED_USER 1 89# define CUSTOM_SYS_AUTH_ALLOWED_USER 1
90int sys_auth_allowed_user(struct passwd *, Buffer *); 90int sys_auth_allowed_user(struct passwd *, struct sshbuf *);
91# define CUSTOM_SYS_AUTH_RECORD_LOGIN 1 91# define CUSTOM_SYS_AUTH_RECORD_LOGIN 1
92int sys_auth_record_login(const char *, const char *, const char *, Buffer *); 92int sys_auth_record_login(const char *, const char *,
93 const char *, struct sshbuf *);
93# define CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG 94# define CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG
94char *sys_auth_get_lastlogin_msg(const char *, uid_t); 95char *sys_auth_get_lastlogin_msg(const char *, uid_t);
95# define CUSTOM_FAILED_LOGIN 1 96# define CUSTOM_FAILED_LOGIN 1
diff --git a/openbsd-compat/port-net.c b/openbsd-compat/port-net.c
index 7050629c3..bb535626f 100644
--- a/openbsd-compat/port-net.c
+++ b/openbsd-compat/port-net.c
@@ -185,7 +185,7 @@ sys_tun_open(int tun, int mode, char **ifname)
185 else 185 else
186 debug("%s: %s mode %d fd %d", __func__, ifr.ifr_name, mode, fd); 186 debug("%s: %s mode %d fd %d", __func__, ifr.ifr_name, mode, fd);
187 187
188 if (ifname != NULL && (*ifname = strdup(ifr.ifr_name))) 188 if (ifname != NULL && (*ifname = strdup(ifr.ifr_name)) == NULL)
189 goto failed; 189 goto failed;
190 190
191 return (fd); 191 return (fd);
@@ -272,7 +272,7 @@ sys_tun_open(int tun, int mode, char **ifname)
272 goto failed; 272 goto failed;
273 } 273 }
274 274
275 if (ifname != NULL && (*ifname = strdup(ifr.ifr_name))) 275 if (ifname != NULL && (*ifname = strdup(ifr.ifr_name)) == NULL)
276 goto failed; 276 goto failed;
277 277
278 close(sock); 278 close(sock);
diff --git a/openbsd-compat/port-uw.c b/openbsd-compat/port-uw.c
index 014cac264..9edb1b481 100644
--- a/openbsd-compat/port-uw.c
+++ b/openbsd-compat/port-uw.c
@@ -38,8 +38,6 @@
38 38
39#include "xmalloc.h" 39#include "xmalloc.h"
40#include "packet.h" 40#include "packet.h"
41#include "buffer.h"
42#include "key.h"
43#include "auth-options.h" 41#include "auth-options.h"
44#include "log.h" 42#include "log.h"
45#include "misc.h" /* servconf.h needs misc.h for struct ForwardOptions */ 43#include "misc.h" /* servconf.h needs misc.h for struct ForwardOptions */
@@ -99,7 +97,7 @@ nischeck(char *namep)
99 97
100 if ((fd = fopen (password_file, "r")) == NULL) { 98 if ((fd = fopen (password_file, "r")) == NULL) {
101 /* 99 /*
102 * If the passwd file has dissapeared we are in a bad state. 100 * If the passwd file has disappeared we are in a bad state.
103 * However, returning 0 will send us back through the 101 * However, returning 0 will send us back through the
104 * authentication scheme that has checked the ia database for 102 * authentication scheme that has checked the ia database for
105 * passwords earlier. 103 * passwords earlier.
diff --git a/openbsd-compat/sha2.c b/openbsd-compat/sha2.c
index a22099bbe..b55ea30ac 100644
--- a/openbsd-compat/sha2.c
+++ b/openbsd-compat/sha2.c
@@ -72,7 +72,7 @@
72 * Please make sure that your system defines BYTE_ORDER. If your 72 * Please make sure that your system defines BYTE_ORDER. If your
73 * architecture is little-endian, make sure it also defines 73 * architecture is little-endian, make sure it also defines
74 * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are 74 * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are
75 * equivilent. 75 * equivalent.
76 * 76 *
77 * If your system does not define the above, then you can do so by 77 * If your system does not define the above, then you can do so by
78 * hand like this: 78 * hand like this:
diff --git a/openbsd-compat/strndup.c b/openbsd-compat/strndup.c
index ebb4eccfb..30ac6f046 100644
--- a/openbsd-compat/strndup.c
+++ b/openbsd-compat/strndup.c
@@ -16,7 +16,7 @@
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */ 17 */
18 18
19#include "config.h" 19#include "includes.h"
20#if !defined(HAVE_STRNDUP) || defined(BROKEN_STRNDUP) 20#if !defined(HAVE_STRNDUP) || defined(BROKEN_STRNDUP)
21#include <sys/types.h> 21#include <sys/types.h>
22 22
diff --git a/openbsd-compat/strnlen.c b/openbsd-compat/strnlen.c
index 8cc6b96b5..7ad3573a6 100644
--- a/openbsd-compat/strnlen.c
+++ b/openbsd-compat/strnlen.c
@@ -18,7 +18,7 @@
18 18
19/* OPENBSD ORIGINAL: lib/libc/string/strnlen.c */ 19/* OPENBSD ORIGINAL: lib/libc/string/strnlen.c */
20 20
21#include "config.h" 21#include "includes.h"
22#if !defined(HAVE_STRNLEN) || defined(BROKEN_STRNLEN) 22#if !defined(HAVE_STRNLEN) || defined(BROKEN_STRNLEN)
23#include <sys/types.h> 23#include <sys/types.h>
24 24
diff --git a/openbsd-compat/sys-queue.h b/openbsd-compat/sys-queue.h
index 28aaaa37a..af93d6814 100644
--- a/openbsd-compat/sys-queue.h
+++ b/openbsd-compat/sys-queue.h
@@ -45,6 +45,7 @@
45#undef SLIST_HEAD_INITIALIZER 45#undef SLIST_HEAD_INITIALIZER
46#undef SLIST_ENTRY 46#undef SLIST_ENTRY
47#undef SLIST_FOREACH_PREVPTR 47#undef SLIST_FOREACH_PREVPTR
48#undef SLIST_FOREACH_SAFE
48#undef SLIST_FIRST 49#undef SLIST_FIRST
49#undef SLIST_END 50#undef SLIST_END
50#undef SLIST_EMPTY 51#undef SLIST_EMPTY
@@ -54,6 +55,7 @@
54#undef SLIST_INSERT_AFTER 55#undef SLIST_INSERT_AFTER
55#undef SLIST_INSERT_HEAD 56#undef SLIST_INSERT_HEAD
56#undef SLIST_REMOVE_HEAD 57#undef SLIST_REMOVE_HEAD
58#undef SLIST_REMOVE_AFTER
57#undef SLIST_REMOVE 59#undef SLIST_REMOVE
58#undef SLIST_REMOVE_NEXT 60#undef SLIST_REMOVE_NEXT
59#undef LIST_HEAD 61#undef LIST_HEAD
@@ -64,6 +66,7 @@
64#undef LIST_EMPTY 66#undef LIST_EMPTY
65#undef LIST_NEXT 67#undef LIST_NEXT
66#undef LIST_FOREACH 68#undef LIST_FOREACH
69#undef LIST_FOREACH_SAFE
67#undef LIST_INIT 70#undef LIST_INIT
68#undef LIST_INSERT_AFTER 71#undef LIST_INSERT_AFTER
69#undef LIST_INSERT_BEFORE 72#undef LIST_INSERT_BEFORE
@@ -94,6 +97,8 @@
94#undef TAILQ_EMPTY 97#undef TAILQ_EMPTY
95#undef TAILQ_FOREACH 98#undef TAILQ_FOREACH
96#undef TAILQ_FOREACH_REVERSE 99#undef TAILQ_FOREACH_REVERSE
100#undef TAILQ_FOREACH_SAFE
101#undef TAILQ_FOREACH_REVERSE_SAFE
97#undef TAILQ_INIT 102#undef TAILQ_INIT
98#undef TAILQ_INSERT_HEAD 103#undef TAILQ_INSERT_HEAD
99#undef TAILQ_INSERT_TAIL 104#undef TAILQ_INSERT_TAIL
diff --git a/packet.c b/packet.c
index 4bfb50726..dcf35e6e6 100644
--- a/packet.c
+++ b/packet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.c,v 1.269 2017/12/18 23:13:42 djm Exp $ */ 1/* $OpenBSD: packet.c,v 1.277 2018/07/16 03:09:13 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -61,10 +61,19 @@
61#include <signal.h> 61#include <signal.h>
62#include <time.h> 62#include <time.h>
63 63
64#include <zlib.h> 64/*
65 * Explicitly include OpenSSL before zlib as some versions of OpenSSL have
66 * "free_func" in their headers, which zlib typedefs.
67 */
68#ifdef WITH_OPENSSL
69# include <openssl/bn.h>
70# include <openssl/evp.h>
71# ifdef OPENSSL_HAS_ECC
72# include <openssl/ec.h>
73# endif
74#endif
65 75
66#include "buffer.h" /* typedefs XXX */ 76#include <zlib.h>
67#include "key.h" /* typedefs XXX */
68 77
69#include "xmalloc.h" 78#include "xmalloc.h"
70#include "crc32.h" 79#include "crc32.h"
@@ -147,12 +156,6 @@ struct session_state {
147 int compression_in_failures; 156 int compression_in_failures;
148 int compression_out_failures; 157 int compression_out_failures;
149 158
150 /*
151 * Flag indicating whether packet compression/decompression is
152 * enabled.
153 */
154 int packet_compression;
155
156 /* default maximum packet size */ 159 /* default maximum packet size */
157 u_int max_packet_size; 160 u_int max_packet_size;
158 161
@@ -418,13 +421,16 @@ ssh_packet_start_discard(struct ssh *ssh, struct sshenc *enc,
418int 421int
419ssh_packet_connection_is_on_socket(struct ssh *ssh) 422ssh_packet_connection_is_on_socket(struct ssh *ssh)
420{ 423{
421 struct session_state *state = ssh->state; 424 struct session_state *state;
422 struct sockaddr_storage from, to; 425 struct sockaddr_storage from, to;
423 socklen_t fromlen, tolen; 426 socklen_t fromlen, tolen;
424 427
425 if (state->connection_in == -1 || state->connection_out == -1) 428 if (ssh == NULL || ssh->state == NULL)
426 return 0; 429 return 0;
427 430
431 state = ssh->state;
432 if (state->connection_in == -1 || state->connection_out == -1)
433 return 0;
428 /* filedescriptors in and out are the same, so it's a socket */ 434 /* filedescriptors in and out are the same, so it's a socket */
429 if (state->connection_in == state->connection_out) 435 if (state->connection_in == state->connection_out)
430 return 1; 436 return 1;
@@ -508,11 +514,12 @@ ssh_packet_get_connection_out(struct ssh *ssh)
508const char * 514const char *
509ssh_remote_ipaddr(struct ssh *ssh) 515ssh_remote_ipaddr(struct ssh *ssh)
510{ 516{
511 const int sock = ssh->state->connection_in; 517 int sock;
512 518
513 /* Check whether we have cached the ipaddr. */ 519 /* Check whether we have cached the ipaddr. */
514 if (ssh->remote_ipaddr == NULL) { 520 if (ssh->remote_ipaddr == NULL) {
515 if (ssh_packet_connection_is_on_socket(ssh)) { 521 if (ssh_packet_connection_is_on_socket(ssh)) {
522 sock = ssh->state->connection_in;
516 ssh->remote_ipaddr = get_peer_ipaddr(sock); 523 ssh->remote_ipaddr = get_peer_ipaddr(sock);
517 ssh->remote_port = get_peer_port(sock); 524 ssh->remote_port = get_peer_port(sock);
518 ssh->local_ipaddr = get_local_ipaddr(sock); 525 ssh->local_ipaddr = get_local_ipaddr(sock);
@@ -597,7 +604,7 @@ ssh_packet_close_internal(struct ssh *ssh, int do_close)
597 state->newkeys[mode] = NULL; 604 state->newkeys[mode] = NULL;
598 ssh_clear_newkeys(ssh, mode); /* next keys */ 605 ssh_clear_newkeys(ssh, mode); /* next keys */
599 } 606 }
600 /* comression state is in shared mem, so we can only release it once */ 607 /* compression state is in shared mem, so we can only release it once */
601 if (do_close && state->compression_buffer) { 608 if (do_close && state->compression_buffer) {
602 sshbuf_free(state->compression_buffer); 609 sshbuf_free(state->compression_buffer);
603 if (state->compression_out_started) { 610 if (state->compression_out_started) {
@@ -627,6 +634,8 @@ ssh_packet_close_internal(struct ssh *ssh, int do_close)
627 cipher_free(state->receive_context); 634 cipher_free(state->receive_context);
628 state->send_context = state->receive_context = NULL; 635 state->send_context = state->receive_context = NULL;
629 if (do_close) { 636 if (do_close) {
637 free(ssh->local_ipaddr);
638 ssh->local_ipaddr = NULL;
630 free(ssh->remote_ipaddr); 639 free(ssh->remote_ipaddr);
631 ssh->remote_ipaddr = NULL; 640 ssh->remote_ipaddr = NULL;
632 free(ssh->state); 641 free(ssh->state);
@@ -713,21 +722,6 @@ start_compression_in(struct ssh *ssh)
713 return 0; 722 return 0;
714} 723}
715 724
716int
717ssh_packet_start_compression(struct ssh *ssh, int level)
718{
719 int r;
720
721 if (ssh->state->packet_compression)
722 return SSH_ERR_INTERNAL_ERROR;
723 ssh->state->packet_compression = 1;
724 if ((r = ssh_packet_init_compression(ssh)) != 0 ||
725 (r = start_compression_in(ssh)) != 0 ||
726 (r = start_compression_out(ssh, level)) != 0)
727 return r;
728 return 0;
729}
730
731/* XXX remove need for separate compression buffer */ 725/* XXX remove need for separate compression buffer */
732static int 726static int
733compress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out) 727compress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out)
@@ -965,7 +959,7 @@ ssh_packet_need_rekeying(struct ssh *ssh, u_int outbound_packet_len)
965 state->p_read.packets > MAX_PACKETS) 959 state->p_read.packets > MAX_PACKETS)
966 return 1; 960 return 1;
967 961
968 /* Rekey after (cipher-specific) maxiumum blocks */ 962 /* Rekey after (cipher-specific) maximum blocks */
969 out_blocks = ROUNDUP(outbound_packet_len, 963 out_blocks = ROUNDUP(outbound_packet_len,
970 state->newkeys[MODE_OUT]->enc.block_size); 964 state->newkeys[MODE_OUT]->enc.block_size);
971 return (state->max_blocks_out && 965 return (state->max_blocks_out &&
@@ -1338,8 +1332,10 @@ ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1338 NULL, NULL, timeoutp)) >= 0) 1332 NULL, NULL, timeoutp)) >= 0)
1339 break; 1333 break;
1340 if (errno != EAGAIN && errno != EINTR && 1334 if (errno != EAGAIN && errno != EINTR &&
1341 errno != EWOULDBLOCK) 1335 errno != EWOULDBLOCK) {
1342 break; 1336 r = SSH_ERR_SYSTEM_ERROR;
1337 goto out;
1338 }
1343 if (state->packet_timeout_ms == -1) 1339 if (state->packet_timeout_ms == -1)
1344 continue; 1340 continue;
1345 ms_subtract_diff(&start, &ms_remain); 1341 ms_subtract_diff(&start, &ms_remain);
diff --git a/packet.h b/packet.h
index a2ece6786..170203cab 100644
--- a/packet.h
+++ b/packet.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.h,v 1.84 2017/12/10 05:55:29 dtucker Exp $ */ 1/* $OpenBSD: packet.h,v 1.86 2018/07/09 21:20:26 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -107,7 +107,6 @@ void ssh_clear_newkeys(struct ssh *, int);
107int ssh_packet_is_rekeying(struct ssh *); 107int ssh_packet_is_rekeying(struct ssh *);
108void ssh_packet_set_protocol_flags(struct ssh *, u_int); 108void ssh_packet_set_protocol_flags(struct ssh *, u_int);
109u_int ssh_packet_get_protocol_flags(struct ssh *); 109u_int ssh_packet_get_protocol_flags(struct ssh *);
110int ssh_packet_start_compression(struct ssh *, int);
111void ssh_packet_set_tos(struct ssh *, int); 110void ssh_packet_set_tos(struct ssh *, int);
112void ssh_packet_set_interactive(struct ssh *, int, int, int); 111void ssh_packet_set_interactive(struct ssh *, int, int, int);
113int ssh_packet_is_interactive(struct ssh *); 112int ssh_packet_is_interactive(struct ssh *);
@@ -148,8 +147,8 @@ int ssh_packet_not_very_much_data_to_write(struct ssh *);
148int ssh_packet_connection_is_on_socket(struct ssh *); 147int ssh_packet_connection_is_on_socket(struct ssh *);
149int ssh_packet_remaining(struct ssh *); 148int ssh_packet_remaining(struct ssh *);
150 149
151void tty_make_modes(int, struct termios *); 150void ssh_tty_make_modes(struct ssh *, int, struct termios *);
152void tty_parse_modes(int, int *); 151void ssh_tty_parse_modes(struct ssh *, int);
153 152
154void ssh_packet_set_alive_timeouts(struct ssh *, int); 153void ssh_packet_set_alive_timeouts(struct ssh *, int);
155int ssh_packet_inc_alive_timeouts(struct ssh *); 154int ssh_packet_inc_alive_timeouts(struct ssh *);
diff --git a/platform.c b/platform.c
index 18c7751de..41acc9370 100644
--- a/platform.c
+++ b/platform.c
@@ -20,10 +20,9 @@
20#include <unistd.h> 20#include <unistd.h>
21 21
22#include "log.h" 22#include "log.h"
23#include "buffer.h"
24#include "misc.h" 23#include "misc.h"
25#include "servconf.h" 24#include "servconf.h"
26#include "key.h" 25#include "sshkey.h"
27#include "hostfile.h" 26#include "hostfile.h"
28#include "auth.h" 27#include "auth.h"
29#include "auth-pam.h" 28#include "auth-pam.h"
diff --git a/readconf.c b/readconf.c
index 88051db57..db5f2d547 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.c,v 1.283 2018/02/23 15:58:37 markus Exp $ */ 1/* $OpenBSD: readconf.c,v 1.297 2018/08/12 20:19:13 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -53,6 +53,7 @@
53 53
54#include "xmalloc.h" 54#include "xmalloc.h"
55#include "ssh.h" 55#include "ssh.h"
56#include "ssherr.h"
56#include "compat.h" 57#include "compat.h"
57#include "cipher.h" 58#include "cipher.h"
58#include "pathnames.h" 59#include "pathnames.h"
@@ -161,7 +162,7 @@ typedef enum {
161 oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, 162 oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout,
162 oAddressFamily, oGssAuthentication, oGssDelegateCreds, 163 oAddressFamily, oGssAuthentication, oGssDelegateCreds,
163 oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly, 164 oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly,
164 oSendEnv, oControlPath, oControlMaster, oControlPersist, 165 oSendEnv, oSetEnv, oControlPath, oControlMaster, oControlPersist,
165 oHashKnownHosts, 166 oHashKnownHosts,
166 oTunnel, oTunnelDevice, 167 oTunnel, oTunnelDevice,
167 oLocalCommand, oPermitLocalCommand, oRemoteCommand, 168 oLocalCommand, oPermitLocalCommand, oRemoteCommand,
@@ -190,6 +191,7 @@ static struct {
190 { "userknownhostsfile2", oDeprecated }, 191 { "userknownhostsfile2", oDeprecated },
191 { "useroaming", oDeprecated }, 192 { "useroaming", oDeprecated },
192 { "usersh", oDeprecated }, 193 { "usersh", oDeprecated },
194 { "useprivilegedport", oDeprecated },
193 195
194 /* Unsupported options */ 196 /* Unsupported options */
195 { "afstokenpassing", oUnsupported }, 197 { "afstokenpassing", oUnsupported },
@@ -222,7 +224,6 @@ static struct {
222 { "exitonforwardfailure", oExitOnForwardFailure }, 224 { "exitonforwardfailure", oExitOnForwardFailure },
223 { "xauthlocation", oXAuthLocation }, 225 { "xauthlocation", oXAuthLocation },
224 { "gatewayports", oGatewayPorts }, 226 { "gatewayports", oGatewayPorts },
225 { "useprivilegedport", oUsePrivilegedPort },
226 { "passwordauthentication", oPasswordAuthentication }, 227 { "passwordauthentication", oPasswordAuthentication },
227 { "kbdinteractiveauthentication", oKbdInteractiveAuthentication }, 228 { "kbdinteractiveauthentication", oKbdInteractiveAuthentication },
228 { "kbdinteractivedevices", oKbdInteractiveDevices }, 229 { "kbdinteractivedevices", oKbdInteractiveDevices },
@@ -230,7 +231,7 @@ static struct {
230 { "dsaauthentication", oPubkeyAuthentication }, /* alias */ 231 { "dsaauthentication", oPubkeyAuthentication }, /* alias */
231 { "hostbasedauthentication", oHostbasedAuthentication }, 232 { "hostbasedauthentication", oHostbasedAuthentication },
232 { "challengeresponseauthentication", oChallengeResponseAuthentication }, 233 { "challengeresponseauthentication", oChallengeResponseAuthentication },
233 { "skeyauthentication", oChallengeResponseAuthentication }, /* alias */ 234 { "skeyauthentication", oUnsupported },
234 { "tisauthentication", oChallengeResponseAuthentication }, /* alias */ 235 { "tisauthentication", oChallengeResponseAuthentication }, /* alias */
235 { "identityfile", oIdentityFile }, 236 { "identityfile", oIdentityFile },
236 { "identityfile2", oIdentityFile }, /* obsolete */ 237 { "identityfile2", oIdentityFile }, /* obsolete */
@@ -277,6 +278,7 @@ static struct {
277 { "serveraliveinterval", oServerAliveInterval }, 278 { "serveraliveinterval", oServerAliveInterval },
278 { "serveralivecountmax", oServerAliveCountMax }, 279 { "serveralivecountmax", oServerAliveCountMax },
279 { "sendenv", oSendEnv }, 280 { "sendenv", oSendEnv },
281 { "setenv", oSetEnv },
280 { "controlpath", oControlPath }, 282 { "controlpath", oControlPath },
281 { "controlmaster", oControlMaster }, 283 { "controlmaster", oControlMaster },
282 { "controlpersist", oControlPersist }, 284 { "controlpersist", oControlPersist },
@@ -319,12 +321,8 @@ void
319add_local_forward(Options *options, const struct Forward *newfwd) 321add_local_forward(Options *options, const struct Forward *newfwd)
320{ 322{
321 struct Forward *fwd; 323 struct Forward *fwd;
322 extern uid_t original_real_uid;
323 int i; 324 int i;
324 325
325 if (!bind_permitted(newfwd->listen_port, original_real_uid) &&
326 newfwd->listen_path == NULL)
327 fatal("Privileged ports can only be forwarded by root.");
328 /* Don't add duplicates */ 326 /* Don't add duplicates */
329 for (i = 0; i < options->num_local_forwards; i++) { 327 for (i = 0; i < options->num_local_forwards; i++) {
330 if (forward_equals(newfwd, options->local_forwards + i)) 328 if (forward_equals(newfwd, options->local_forwards + i))
@@ -482,7 +480,6 @@ execute_in_shell(const char *cmd)
482 char *shell; 480 char *shell;
483 pid_t pid; 481 pid_t pid;
484 int devnull, status; 482 int devnull, status;
485 extern uid_t original_real_uid;
486 483
487 if ((shell = getenv("SHELL")) == NULL) 484 if ((shell = getenv("SHELL")) == NULL)
488 shell = _PATH_BSHELL; 485 shell = _PATH_BSHELL;
@@ -497,9 +494,6 @@ execute_in_shell(const char *cmd)
497 if ((pid = fork()) == 0) { 494 if ((pid = fork()) == 0) {
498 char *argv[4]; 495 char *argv[4];
499 496
500 /* Child. Permanently give up superuser privileges. */
501 permanently_drop_suid(original_real_uid);
502
503 /* Redirect child stdin and stdout. Leave stderr */ 497 /* Redirect child stdin and stdout. Leave stderr */
504 if (dup2(devnull, STDIN_FILENO) == -1) 498 if (dup2(devnull, STDIN_FILENO) == -1)
505 fatal("dup2: %s", strerror(errno)); 499 fatal("dup2: %s", strerror(errno));
@@ -551,6 +545,7 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
551 const char *ruser; 545 const char *ruser;
552 int r, port, this_result, result = 1, attributes = 0, negate; 546 int r, port, this_result, result = 1, attributes = 0, negate;
553 char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV]; 547 char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV];
548 char uidstr[32];
554 549
555 /* 550 /*
556 * Configuration is likely to be incomplete at this point so we 551 * Configuration is likely to be incomplete at this point so we
@@ -631,6 +626,8 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
631 strlcpy(shorthost, thishost, sizeof(shorthost)); 626 strlcpy(shorthost, thishost, sizeof(shorthost));
632 shorthost[strcspn(thishost, ".")] = '\0'; 627 shorthost[strcspn(thishost, ".")] = '\0';
633 snprintf(portstr, sizeof(portstr), "%d", port); 628 snprintf(portstr, sizeof(portstr), "%d", port);
629 snprintf(uidstr, sizeof(uidstr), "%llu",
630 (unsigned long long)pw->pw_uid);
634 631
635 cmd = percent_expand(arg, 632 cmd = percent_expand(arg,
636 "L", shorthost, 633 "L", shorthost,
@@ -641,6 +638,7 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
641 "p", portstr, 638 "p", portstr,
642 "r", ruser, 639 "r", ruser,
643 "u", pw->pw_name, 640 "u", pw->pw_name,
641 "i", uidstr,
644 (char *)NULL); 642 (char *)NULL);
645 if (result != 1) { 643 if (result != 1) {
646 /* skip execution if prior predicate failed */ 644 /* skip execution if prior predicate failed */
@@ -684,6 +682,35 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
684 return result; 682 return result;
685} 683}
686 684
685/* Remove environment variable by pattern */
686static void
687rm_env(Options *options, const char *arg, const char *filename, int linenum)
688{
689 int i, j;
690 char *cp;
691
692 /* Remove an environment variable */
693 for (i = 0; i < options->num_send_env; ) {
694 cp = xstrdup(options->send_env[i]);
695 if (!match_pattern(cp, arg + 1)) {
696 free(cp);
697 i++;
698 continue;
699 }
700 debug3("%s line %d: removing environment %s",
701 filename, linenum, cp);
702 free(cp);
703 free(options->send_env[i]);
704 options->send_env[i] = NULL;
705 for (j = i; j < options->num_send_env - 1; j++) {
706 options->send_env[j] = options->send_env[j + 1];
707 options->send_env[j + 1] = NULL;
708 }
709 options->num_send_env--;
710 /* NB. don't increment i */
711 }
712}
713
687/* 714/*
688 * Returns the number of the token pointed to by cp or oBadOption. 715 * Returns the number of the token pointed to by cp or oBadOption.
689 */ 716 */
@@ -918,10 +945,6 @@ parse_time:
918 intptr = &options->exit_on_forward_failure; 945 intptr = &options->exit_on_forward_failure;
919 goto parse_flag; 946 goto parse_flag;
920 947
921 case oUsePrivilegedPort:
922 intptr = &options->use_privileged_port;
923 goto parse_flag;
924
925 case oPasswordAuthentication: 948 case oPasswordAuthentication:
926 intptr = &options->password_authentication; 949 intptr = &options->password_authentication;
927 goto parse_flag; 950 goto parse_flag;
@@ -1359,11 +1382,41 @@ parse_keytypes:
1359 filename, linenum); 1382 filename, linenum);
1360 if (!*activep) 1383 if (!*activep)
1361 continue; 1384 continue;
1362 if (options->num_send_env >= MAX_SEND_ENV) 1385 if (*arg == '-') {
1363 fatal("%s line %d: too many send env.", 1386 /* Removing an env var */
1387 rm_env(options, arg, filename, linenum);
1388 continue;
1389 } else {
1390 /* Adding an env var */
1391 if (options->num_send_env >= INT_MAX)
1392 fatal("%s line %d: too many send env.",
1393 filename, linenum);
1394 options->send_env = xrecallocarray(
1395 options->send_env, options->num_send_env,
1396 options->num_send_env + 1,
1397 sizeof(*options->send_env));
1398 options->send_env[options->num_send_env++] =
1399 xstrdup(arg);
1400 }
1401 }
1402 break;
1403
1404 case oSetEnv:
1405 value = options->num_setenv;
1406 while ((arg = strdelimw(&s)) != NULL && *arg != '\0') {
1407 if (strchr(arg, '=') == NULL)
1408 fatal("%s line %d: Invalid SetEnv.",
1409 filename, linenum);
1410 if (!*activep || value != 0)
1411 continue;
1412 /* Adding a setenv var */
1413 if (options->num_setenv >= INT_MAX)
1414 fatal("%s line %d: too many SetEnv.",
1364 filename, linenum); 1415 filename, linenum);
1365 options->send_env[options->num_send_env++] = 1416 options->setenv = xrecallocarray(
1366 xstrdup(arg); 1417 options->setenv, options->num_setenv,
1418 options->num_setenv + 1, sizeof(*options->setenv));
1419 options->setenv[options->num_setenv++] = xstrdup(arg);
1367 } 1420 }
1368 break; 1421 break;
1369 1422
@@ -1688,7 +1741,8 @@ read_config_file_depth(const char *filename, struct passwd *pw,
1688 int flags, int *activep, int depth) 1741 int flags, int *activep, int depth)
1689{ 1742{
1690 FILE *f; 1743 FILE *f;
1691 char line[4096]; 1744 char *line = NULL;
1745 size_t linesize = 0;
1692 int linenum; 1746 int linenum;
1693 int bad_options = 0; 1747 int bad_options = 0;
1694 1748
@@ -1715,15 +1769,14 @@ read_config_file_depth(const char *filename, struct passwd *pw,
1715 * on/off by Host specifications. 1769 * on/off by Host specifications.
1716 */ 1770 */
1717 linenum = 0; 1771 linenum = 0;
1718 while (fgets(line, sizeof(line), f)) { 1772 while (getline(&line, &linesize, f) != -1) {
1719 /* Update line number counter. */ 1773 /* Update line number counter. */
1720 linenum++; 1774 linenum++;
1721 if (strlen(line) == sizeof(line) - 1)
1722 fatal("%s line %d too long", filename, linenum);
1723 if (process_config_line_depth(options, pw, host, original_host, 1775 if (process_config_line_depth(options, pw, host, original_host,
1724 line, filename, linenum, activep, flags, depth) != 0) 1776 line, filename, linenum, activep, flags, depth) != 0)
1725 bad_options++; 1777 bad_options++;
1726 } 1778 }
1779 free(line);
1727 fclose(f); 1780 fclose(f);
1728 if (bad_options > 0) 1781 if (bad_options > 0)
1729 fatal("%s: terminating, %d bad configuration options", 1782 fatal("%s: terminating, %d bad configuration options",
@@ -1761,7 +1814,6 @@ initialize_options(Options * options)
1761 options->fwd_opts.gateway_ports = -1; 1814 options->fwd_opts.gateway_ports = -1;
1762 options->fwd_opts.streamlocal_bind_mask = (mode_t)-1; 1815 options->fwd_opts.streamlocal_bind_mask = (mode_t)-1;
1763 options->fwd_opts.streamlocal_bind_unlink = -1; 1816 options->fwd_opts.streamlocal_bind_unlink = -1;
1764 options->use_privileged_port = -1;
1765 options->pubkey_authentication = -1; 1817 options->pubkey_authentication = -1;
1766 options->challenge_response_authentication = -1; 1818 options->challenge_response_authentication = -1;
1767 options->gss_authentication = -1; 1819 options->gss_authentication = -1;
@@ -1815,7 +1867,10 @@ initialize_options(Options * options)
1815 options->verify_host_key_dns = -1; 1867 options->verify_host_key_dns = -1;
1816 options->server_alive_interval = -1; 1868 options->server_alive_interval = -1;
1817 options->server_alive_count_max = -1; 1869 options->server_alive_count_max = -1;
1870 options->send_env = NULL;
1818 options->num_send_env = 0; 1871 options->num_send_env = 0;
1872 options->setenv = NULL;
1873 options->num_setenv = 0;
1819 options->control_path = NULL; 1874 options->control_path = NULL;
1820 options->control_master = -1; 1875 options->control_master = -1;
1821 options->control_persist = -1; 1876 options->control_persist = -1;
@@ -1869,6 +1924,9 @@ fill_default_options_for_canonicalization(Options *options)
1869void 1924void
1870fill_default_options(Options * options) 1925fill_default_options(Options * options)
1871{ 1926{
1927 char *all_cipher, *all_mac, *all_kex, *all_key;
1928 int r;
1929
1872 if (options->forward_agent == -1) 1930 if (options->forward_agent == -1)
1873 options->forward_agent = 0; 1931 options->forward_agent = 0;
1874 if (options->forward_x11 == -1) 1932 if (options->forward_x11 == -1)
@@ -1898,8 +1956,6 @@ fill_default_options(Options * options)
1898 options->fwd_opts.streamlocal_bind_mask = 0177; 1956 options->fwd_opts.streamlocal_bind_mask = 0177;
1899 if (options->fwd_opts.streamlocal_bind_unlink == -1) 1957 if (options->fwd_opts.streamlocal_bind_unlink == -1)
1900 options->fwd_opts.streamlocal_bind_unlink = 0; 1958 options->fwd_opts.streamlocal_bind_unlink = 0;
1901 if (options->use_privileged_port == -1)
1902 options->use_privileged_port = 0;
1903 if (options->pubkey_authentication == -1) 1959 if (options->pubkey_authentication == -1)
1904 options->pubkey_authentication = 1; 1960 options->pubkey_authentication = 1;
1905 if (options->challenge_response_authentication == -1) 1961 if (options->challenge_response_authentication == -1)
@@ -1998,9 +2054,9 @@ fill_default_options(Options * options)
1998 if (options->visual_host_key == -1) 2054 if (options->visual_host_key == -1)
1999 options->visual_host_key = 0; 2055 options->visual_host_key = 0;
2000 if (options->ip_qos_interactive == -1) 2056 if (options->ip_qos_interactive == -1)
2001 options->ip_qos_interactive = IPTOS_LOWDELAY; 2057 options->ip_qos_interactive = IPTOS_DSCP_AF21;
2002 if (options->ip_qos_bulk == -1) 2058 if (options->ip_qos_bulk == -1)
2003 options->ip_qos_bulk = IPTOS_THROUGHPUT; 2059 options->ip_qos_bulk = IPTOS_DSCP_CS1;
2004 if (options->request_tty == -1) 2060 if (options->request_tty == -1)
2005 options->request_tty = REQUEST_TTY_AUTO; 2061 options->request_tty = REQUEST_TTY_AUTO;
2006 if (options->proxy_use_fdpass == -1) 2062 if (options->proxy_use_fdpass == -1)
@@ -2015,14 +2071,28 @@ fill_default_options(Options * options)
2015 options->fingerprint_hash = SSH_FP_HASH_DEFAULT; 2071 options->fingerprint_hash = SSH_FP_HASH_DEFAULT;
2016 if (options->update_hostkeys == -1) 2072 if (options->update_hostkeys == -1)
2017 options->update_hostkeys = 0; 2073 options->update_hostkeys = 0;
2018 if (kex_assemble_names(KEX_CLIENT_ENCRYPT, &options->ciphers) != 0 || 2074
2019 kex_assemble_names(KEX_CLIENT_MAC, &options->macs) != 0 || 2075 /* Expand KEX name lists */
2020 kex_assemble_names(KEX_CLIENT_KEX, &options->kex_algorithms) != 0 || 2076 all_cipher = cipher_alg_list(',', 0);
2021 kex_assemble_names(KEX_DEFAULT_PK_ALG, 2077 all_mac = mac_alg_list(',');
2022 &options->hostbased_key_types) != 0 || 2078 all_kex = kex_alg_list(',');
2023 kex_assemble_names(KEX_DEFAULT_PK_ALG, 2079 all_key = sshkey_alg_list(0, 0, 1, ',');
2024 &options->pubkey_key_types) != 0) 2080#define ASSEMBLE(what, defaults, all) \
2025 fatal("%s: kex_assemble_names failed", __func__); 2081 do { \
2082 if ((r = kex_assemble_names(&options->what, \
2083 defaults, all)) != 0) \
2084 fatal("%s: %s: %s", __func__, #what, ssh_err(r)); \
2085 } while (0)
2086 ASSEMBLE(ciphers, KEX_SERVER_ENCRYPT, all_cipher);
2087 ASSEMBLE(macs, KEX_SERVER_MAC, all_mac);
2088 ASSEMBLE(kex_algorithms, KEX_SERVER_KEX, all_kex);
2089 ASSEMBLE(hostbased_key_types, KEX_DEFAULT_PK_ALG, all_key);
2090 ASSEMBLE(pubkey_key_types, KEX_DEFAULT_PK_ALG, all_key);
2091#undef ASSEMBLE
2092 free(all_cipher);
2093 free(all_mac);
2094 free(all_kex);
2095 free(all_key);
2026 2096
2027#define CLEAR_ON_NONE(v) \ 2097#define CLEAR_ON_NONE(v) \
2028 do { \ 2098 do { \
@@ -2036,6 +2106,12 @@ fill_default_options(Options * options)
2036 CLEAR_ON_NONE(options->proxy_command); 2106 CLEAR_ON_NONE(options->proxy_command);
2037 CLEAR_ON_NONE(options->control_path); 2107 CLEAR_ON_NONE(options->control_path);
2038 CLEAR_ON_NONE(options->revoked_host_keys); 2108 CLEAR_ON_NONE(options->revoked_host_keys);
2109 if (options->jump_host != NULL &&
2110 strcmp(options->jump_host, "none") == 0 &&
2111 options->jump_port == 0 && options->jump_user == NULL) {
2112 free(options->jump_host);
2113 options->jump_host = NULL;
2114 }
2039 /* options->identity_agent distinguishes NULL from 'none' */ 2115 /* options->identity_agent distinguishes NULL from 'none' */
2040 /* options->user will be set in the main program if appropriate */ 2116 /* options->user will be set in the main program if appropriate */
2041 /* options->hostname will be set in the main program if appropriate */ 2117 /* options->hostname will be set in the main program if appropriate */
@@ -2264,6 +2340,8 @@ parse_jump(const char *s, Options *o, int active)
2264 orig = sdup = xstrdup(s); 2340 orig = sdup = xstrdup(s);
2265 first = active; 2341 first = active;
2266 do { 2342 do {
2343 if (strcasecmp(s, "none") == 0)
2344 break;
2267 if ((cp = strrchr(sdup, ',')) == NULL) 2345 if ((cp = strrchr(sdup, ',')) == NULL)
2268 cp = sdup; /* last */ 2346 cp = sdup; /* last */
2269 else 2347 else
@@ -2284,14 +2362,19 @@ parse_jump(const char *s, Options *o, int active)
2284 } while (cp != sdup); 2362 } while (cp != sdup);
2285 /* success */ 2363 /* success */
2286 if (active) { 2364 if (active) {
2287 o->jump_user = user; 2365 if (strcasecmp(s, "none") == 0) {
2288 o->jump_host = host; 2366 o->jump_host = xstrdup("none");
2289 o->jump_port = port; 2367 o->jump_port = 0;
2290 o->proxy_command = xstrdup("none"); 2368 } else {
2291 user = host = NULL; 2369 o->jump_user = user;
2292 if ((cp = strrchr(s, ',')) != NULL && cp != s) { 2370 o->jump_host = host;
2293 o->jump_extra = xstrdup(s); 2371 o->jump_port = port;
2294 o->jump_extra[cp - s] = '\0'; 2372 o->proxy_command = xstrdup("none");
2373 user = host = NULL;
2374 if ((cp = strrchr(s, ',')) != NULL && cp != s) {
2375 o->jump_extra = xstrdup(s);
2376 o->jump_extra[cp - s] = '\0';
2377 }
2295 } 2378 }
2296 } 2379 }
2297 ret = 0; 2380 ret = 0;
@@ -2348,6 +2431,8 @@ fmt_intarg(OpCodes code, int val)
2348 return fmt_multistate_int(val, multistate_requesttty); 2431 return fmt_multistate_int(val, multistate_requesttty);
2349 case oCanonicalizeHostname: 2432 case oCanonicalizeHostname:
2350 return fmt_multistate_int(val, multistate_canonicalizehostname); 2433 return fmt_multistate_int(val, multistate_canonicalizehostname);
2434 case oAddKeysToAgent:
2435 return fmt_multistate_int(val, multistate_yesnoaskconfirm);
2351 case oFingerprintHash: 2436 case oFingerprintHash:
2352 return ssh_digest_alg_name(val); 2437 return ssh_digest_alg_name(val);
2353 default: 2438 default:
@@ -2455,11 +2540,14 @@ void
2455dump_client_config(Options *o, const char *host) 2540dump_client_config(Options *o, const char *host)
2456{ 2541{
2457 int i; 2542 int i;
2458 char buf[8]; 2543 char buf[8], *all_key;
2459 2544
2460 /* This is normally prepared in ssh_kex2 */ 2545 /* This is normally prepared in ssh_kex2 */
2461 if (kex_assemble_names(KEX_DEFAULT_PK_ALG, &o->hostkeyalgorithms) != 0) 2546 all_key = sshkey_alg_list(0, 0, 1, ',');
2547 if (kex_assemble_names( &o->hostkeyalgorithms,
2548 KEX_DEFAULT_PK_ALG, all_key) != 0)
2462 fatal("%s: kex_assemble_names failed", __func__); 2549 fatal("%s: kex_assemble_names failed", __func__);
2550 free(all_key);
2463 2551
2464 /* Most interesting options first: user, host, port */ 2552 /* Most interesting options first: user, host, port */
2465 dump_cfg_string(oUser, o->user); 2553 dump_cfg_string(oUser, o->user);
@@ -2467,6 +2555,7 @@ dump_client_config(Options *o, const char *host)
2467 dump_cfg_int(oPort, o->port); 2555 dump_cfg_int(oPort, o->port);
2468 2556
2469 /* Flag options */ 2557 /* Flag options */
2558 dump_cfg_fmtint(oAddKeysToAgent, o->add_keys_to_agent);
2470 dump_cfg_fmtint(oAddressFamily, o->address_family); 2559 dump_cfg_fmtint(oAddressFamily, o->address_family);
2471 dump_cfg_fmtint(oBatchMode, o->batch_mode); 2560 dump_cfg_fmtint(oBatchMode, o->batch_mode);
2472 dump_cfg_fmtint(oCanonicalizeFallbackLocal, o->canonicalize_fallback_local); 2561 dump_cfg_fmtint(oCanonicalizeFallbackLocal, o->canonicalize_fallback_local);
@@ -2501,7 +2590,6 @@ dump_client_config(Options *o, const char *host)
2501 dump_cfg_fmtint(oStrictHostKeyChecking, o->strict_host_key_checking); 2590 dump_cfg_fmtint(oStrictHostKeyChecking, o->strict_host_key_checking);
2502 dump_cfg_fmtint(oTCPKeepAlive, o->tcp_keep_alive); 2591 dump_cfg_fmtint(oTCPKeepAlive, o->tcp_keep_alive);
2503 dump_cfg_fmtint(oTunnel, o->tun_open); 2592 dump_cfg_fmtint(oTunnel, o->tun_open);
2504 dump_cfg_fmtint(oUsePrivilegedPort, o->use_privileged_port);
2505 dump_cfg_fmtint(oVerifyHostKeyDNS, o->verify_host_key_dns); 2593 dump_cfg_fmtint(oVerifyHostKeyDNS, o->verify_host_key_dns);
2506 dump_cfg_fmtint(oVisualHostKey, o->visual_host_key); 2594 dump_cfg_fmtint(oVisualHostKey, o->visual_host_key);
2507 dump_cfg_fmtint(oUpdateHostkeys, o->update_hostkeys); 2595 dump_cfg_fmtint(oUpdateHostkeys, o->update_hostkeys);
@@ -2523,6 +2611,7 @@ dump_client_config(Options *o, const char *host)
2523 dump_cfg_string(oHostKeyAlias, o->host_key_alias); 2611 dump_cfg_string(oHostKeyAlias, o->host_key_alias);
2524 dump_cfg_string(oHostbasedKeyTypes, o->hostbased_key_types); 2612 dump_cfg_string(oHostbasedKeyTypes, o->hostbased_key_types);
2525 dump_cfg_string(oIdentityAgent, o->identity_agent); 2613 dump_cfg_string(oIdentityAgent, o->identity_agent);
2614 dump_cfg_string(oIgnoreUnknown, o->ignored_unknown);
2526 dump_cfg_string(oKbdInteractiveDevices, o->kbd_interactive_devices); 2615 dump_cfg_string(oKbdInteractiveDevices, o->kbd_interactive_devices);
2527 dump_cfg_string(oKexAlgorithms, o->kex_algorithms ? o->kex_algorithms : KEX_CLIENT_KEX); 2616 dump_cfg_string(oKexAlgorithms, o->kex_algorithms ? o->kex_algorithms : KEX_CLIENT_KEX);
2528 dump_cfg_string(oLocalCommand, o->local_command); 2617 dump_cfg_string(oLocalCommand, o->local_command);
@@ -2545,9 +2634,11 @@ dump_client_config(Options *o, const char *host)
2545 /* String array options */ 2634 /* String array options */
2546 dump_cfg_strarray(oIdentityFile, o->num_identity_files, o->identity_files); 2635 dump_cfg_strarray(oIdentityFile, o->num_identity_files, o->identity_files);
2547 dump_cfg_strarray_oneline(oCanonicalDomains, o->num_canonical_domains, o->canonical_domains); 2636 dump_cfg_strarray_oneline(oCanonicalDomains, o->num_canonical_domains, o->canonical_domains);
2637 dump_cfg_strarray(oCertificateFile, o->num_certificate_files, o->certificate_files);
2548 dump_cfg_strarray_oneline(oGlobalKnownHostsFile, o->num_system_hostfiles, o->system_hostfiles); 2638 dump_cfg_strarray_oneline(oGlobalKnownHostsFile, o->num_system_hostfiles, o->system_hostfiles);
2549 dump_cfg_strarray_oneline(oUserKnownHostsFile, o->num_user_hostfiles, o->user_hostfiles); 2639 dump_cfg_strarray_oneline(oUserKnownHostsFile, o->num_user_hostfiles, o->user_hostfiles);
2550 dump_cfg_strarray(oSendEnv, o->num_send_env, o->send_env); 2640 dump_cfg_strarray(oSendEnv, o->num_send_env, o->send_env);
2641 dump_cfg_strarray(oSetEnv, o->num_setenv, o->setenv);
2551 2642
2552 /* Special cases */ 2643 /* Special cases */
2553 2644
@@ -2605,6 +2696,9 @@ dump_client_config(Options *o, const char *host)
2605 printf("streamlocalbindmask 0%o\n", 2696 printf("streamlocalbindmask 0%o\n",
2606 o->fwd_opts.streamlocal_bind_mask); 2697 o->fwd_opts.streamlocal_bind_mask);
2607 2698
2699 /* oLogFacility */
2700 printf("syslogfacility %s\n", log_facility_name(o->log_facility));
2701
2608 /* oProxyCommand / oProxyJump */ 2702 /* oProxyCommand / oProxyJump */
2609 if (o->jump_host == NULL) 2703 if (o->jump_host == NULL)
2610 dump_cfg_string(oProxyCommand, o->proxy_command); 2704 dump_cfg_string(oProxyCommand, o->proxy_command);
diff --git a/readconf.h b/readconf.h
index f4d9e2b26..c56887816 100644
--- a/readconf.h
+++ b/readconf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.h,v 1.125 2018/02/23 02:34:33 djm Exp $ */ 1/* $OpenBSD: readconf.h,v 1.127 2018/07/19 10:28:47 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -18,7 +18,6 @@
18 18
19/* Data structure for representing option data. */ 19/* Data structure for representing option data. */
20 20
21#define MAX_SEND_ENV 256
22#define SSH_MAX_HOSTS_FILES 32 21#define SSH_MAX_HOSTS_FILES 32
23#define MAX_CANON_DOMAINS 32 22#define MAX_CANON_DOMAINS 32
24#define PATH_MAX_SUN (sizeof((struct sockaddr_un *)0)->sun_path) 23#define PATH_MAX_SUN (sizeof((struct sockaddr_un *)0)->sun_path)
@@ -36,7 +35,6 @@ typedef struct {
36 int exit_on_forward_failure; /* Exit if bind(2) fails for -L/-R */ 35 int exit_on_forward_failure; /* Exit if bind(2) fails for -L/-R */
37 char *xauth_location; /* Location for xauth program */ 36 char *xauth_location; /* Location for xauth program */
38 struct ForwardOptions fwd_opts; /* forwarding options */ 37 struct ForwardOptions fwd_opts; /* forwarding options */
39 int use_privileged_port; /* Don't use privileged port if false. */
40 int pubkey_authentication; /* Try ssh2 pubkey authentication. */ 38 int pubkey_authentication; /* Try ssh2 pubkey authentication. */
41 int hostbased_authentication; /* ssh2's rhosts_rsa */ 39 int hostbased_authentication; /* ssh2's rhosts_rsa */
42 int challenge_response_authentication; 40 int challenge_response_authentication;
@@ -120,7 +118,9 @@ typedef struct {
120 int server_alive_count_max; 118 int server_alive_count_max;
121 119
122 int num_send_env; 120 int num_send_env;
123 char *send_env[MAX_SEND_ENV]; 121 char **send_env;
122 int num_setenv;
123 char **setenv;
124 124
125 char *control_path; 125 char *control_path;
126 int control_master; 126 int control_master;
diff --git a/readpass.c b/readpass.c
index 05c8cac1c..f160f866b 100644
--- a/readpass.c
+++ b/readpass.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readpass.c,v 1.51 2015/12/11 00:20:04 mmcc Exp $ */ 1/* $OpenBSD: readpass.c,v 1.52 2018/07/18 11:34:04 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -72,7 +72,6 @@ ssh_askpass(char *askpass, const char *msg)
72 return NULL; 72 return NULL;
73 } 73 }
74 if (pid == 0) { 74 if (pid == 0) {
75 permanently_drop_suid(getuid());
76 close(p[0]); 75 close(p[0]);
77 if (dup2(p[1], STDOUT_FILENO) < 0) 76 if (dup2(p[1], STDOUT_FILENO) < 0)
78 fatal("ssh_askpass: dup2: %s", strerror(errno)); 77 fatal("ssh_askpass: dup2: %s", strerror(errno));
diff --git a/regress/Makefile b/regress/Makefile
index d15898ad0..647b4a049 100644
--- a/regress/Makefile
+++ b/regress/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.96 2017/10/24 19:33:32 millert Exp $ 1# $OpenBSD: Makefile,v 1.97 2018/06/07 04:46:34 djm Exp $
2 2
3REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec 3REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec
4tests: prep $(REGRESS_TARGETS) 4tests: prep $(REGRESS_TARGETS)
@@ -61,6 +61,7 @@ LTESTS= connect \
61 sshcfgparse \ 61 sshcfgparse \
62 cfgparse \ 62 cfgparse \
63 cfgmatch \ 63 cfgmatch \
64 cfgmatchlisten \
64 addrmatch \ 65 addrmatch \
65 localcommand \ 66 localcommand \
66 forcecommand \ 67 forcecommand \
diff --git a/regress/allow-deny-users.sh b/regress/allow-deny-users.sh
index 4165111e0..5c3895122 100644
--- a/regress/allow-deny-users.sh
+++ b/regress/allow-deny-users.sh
@@ -1,6 +1,6 @@
1# Public Domain 1# Public Domain
2# Zev Weiss, 2016 2# Zev Weiss, 2016
3# $OpenBSD: allow-deny-users.sh,v 1.4 2017/10/20 02:13:41 djm Exp $ 3# $OpenBSD: allow-deny-users.sh,v 1.5 2018/07/13 02:13:50 djm Exp $
4 4
5tid="AllowUsers/DenyUsers" 5tid="AllowUsers/DenyUsers"
6 6
@@ -10,6 +10,8 @@ if [ "x$me" = "x" ]; then
10fi 10fi
11other="nobody" 11other="nobody"
12 12
13cp $OBJ/sshd_proxy $OBJ/sshd_proxy.orig
14
13test_auth() 15test_auth()
14{ 16{
15 deny="$1" 17 deny="$1"
@@ -17,17 +19,19 @@ test_auth()
17 should_succeed="$3" 19 should_succeed="$3"
18 failmsg="$4" 20 failmsg="$4"
19 21
22 cp $OBJ/sshd_proxy.orig $OBJ/sshd_proxy
23 echo DenyUsers="$deny" >> $OBJ/sshd_proxy
24 echo AllowUsers="$allow" >> $OBJ/sshd_proxy
25
20 start_sshd -oDenyUsers="$deny" -oAllowUsers="$allow" 26 start_sshd -oDenyUsers="$deny" -oAllowUsers="$allow"
21 27
22 ${SSH} -F $OBJ/ssh_config "$me@somehost" true 28 ${SSH} -F $OBJ/ssh_proxy "$me@somehost" true
23 status=$? 29 status=$?
24 30
25 if (test $status -eq 0 && ! $should_succeed) \ 31 if (test $status -eq 0 && ! $should_succeed) \
26 || (test $status -ne 0 && $should_succeed); then 32 || (test $status -ne 0 && $should_succeed); then
27 fail "$failmsg" 33 fail "$failmsg"
28 fi 34 fi
29
30 stop_sshd
31} 35}
32 36
33# DenyUsers AllowUsers should_succeed failure_message 37# DenyUsers AllowUsers should_succeed failure_message
diff --git a/regress/authinfo.sh b/regress/authinfo.sh
index 3caf89478..693424afa 100644
--- a/regress/authinfo.sh
+++ b/regress/authinfo.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: authinfo.sh,v 1.2 2017/10/25 20:08:36 millert Exp $ 1# $OpenBSD: authinfo.sh,v 1.3 2018/04/10 00:13:27 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="authinfo" 4tid="authinfo"
diff --git a/regress/cert-file.sh b/regress/cert-file.sh
index 8fd62c773..1157a3582 100644
--- a/regress/cert-file.sh
+++ b/regress/cert-file.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: cert-file.sh,v 1.6 2017/04/30 23:34:55 djm Exp $ 1# $OpenBSD: cert-file.sh,v 1.7 2018/04/10 00:14:10 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="ssh with certificates" 4tid="ssh with certificates"
@@ -52,7 +52,7 @@ echo "cert-authority $(cat $OBJ/user_ca_key1.pub)" > $OBJ/authorized_keys_$USER
52cat $OBJ/ssh_proxy | grep -v IdentityFile > $OBJ/no_identity_config 52cat $OBJ/ssh_proxy | grep -v IdentityFile > $OBJ/no_identity_config
53 53
54# XXX: verify that certificate used was what we expect. Needs exposure of 54# XXX: verify that certificate used was what we expect. Needs exposure of
55# keys via enviornment variable or similar. 55# keys via environment variable or similar.
56 56
57 # Key with no .pub should work - finding the equivalent *-cert.pub. 57 # Key with no .pub should work - finding the equivalent *-cert.pub.
58verbose "identity cert with no plain public file" 58verbose "identity cert with no plain public file"
@@ -138,7 +138,7 @@ fi
138 138
139# try ssh with the agent and certificates 139# try ssh with the agent and certificates
140opts="-F $OBJ/ssh_proxy" 140opts="-F $OBJ/ssh_proxy"
141# with no certificates, shoud fail 141# with no certificates, should fail
142${SSH} $opts somehost exit 52 142${SSH} $opts somehost exit 52
143if [ $? -eq 52 ]; then 143if [ $? -eq 52 ]; then
144 fail "ssh connect with agent in succeeded with no cert" 144 fail "ssh connect with agent in succeeded with no cert"
diff --git a/regress/cert-hostkey.sh b/regress/cert-hostkey.sh
index 3d5732a5d..d2ecd318b 100644
--- a/regress/cert-hostkey.sh
+++ b/regress/cert-hostkey.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: cert-hostkey.sh,v 1.15 2017/04/30 23:34:55 djm Exp $ 1# $OpenBSD: cert-hostkey.sh,v 1.16 2018/07/03 11:43:49 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="certified host keys" 4tid="certified host keys"
@@ -14,6 +14,13 @@ for i in `$SSH -Q key`; do
14 continue 14 continue
15 fi 15 fi
16 case "$i" in 16 case "$i" in
17 # Special treatment for RSA keys.
18 *rsa*cert*)
19 types="rsa-sha2-256-cert-v01@openssh.com,$i,$types"
20 types="rsa-sha2-512-cert-v01@openssh.com,$types";;
21 *rsa*)
22 types="$types,rsa-sha2-512,rsa-sha2-256,$i";;
23 # Prefer certificate to plain keys.
17 *cert*) types="$i,$types";; 24 *cert*) types="$i,$types";;
18 *) types="$types,$i";; 25 *) types="$types,$i";;
19 esac 26 esac
diff --git a/regress/cfgmatchlisten.sh b/regress/cfgmatchlisten.sh
new file mode 100644
index 000000000..a4fd66b32
--- /dev/null
+++ b/regress/cfgmatchlisten.sh
@@ -0,0 +1,202 @@
1# $OpenBSD: cfgmatchlisten.sh,v 1.3 2018/07/02 14:13:30 dtucker Exp $
2# Placed in the Public Domain.
3
4tid="sshd_config matchlisten"
5
6pidfile=$OBJ/remote_pid
7fwdport=3301
8fwdspec="localhost:${fwdport}"
9fwd="-R $fwdport:127.0.0.1:$PORT"
10
11echo "ExitOnForwardFailure=yes" >> $OBJ/ssh_config
12echo "ExitOnForwardFailure=yes" >> $OBJ/ssh_proxy
13
14start_client()
15{
16 rm -f $pidfile
17 ${SSH} -vvv $fwd "$@" somehost true >>$TEST_REGRESS_LOGFILE 2>&1
18 r=$?
19 if [ $r -ne 0 ]; then
20 return $r
21 fi
22 ${SSH} -vvv $fwd "$@" somehost \
23 exec sh -c \'"echo \$\$ > $pidfile; exec sleep 100"\' \
24 >>$TEST_REGRESS_LOGFILE 2>&1 &
25 client_pid=$!
26 # Wait for remote end
27 n=0
28 while test ! -f $pidfile ; do
29 sleep 1
30 n=`expr $n + 1`
31 if test $n -gt 60; then
32 kill $client_pid
33 fatal "timeout waiting for background ssh"
34 fi
35 done
36 return $r
37}
38
39expect_client_ok()
40{
41 start_client "$@" ||
42 fail "client did not start"
43}
44
45expect_client_fail()
46{
47 local failmsg="$1"
48 shift
49 start_client "$@" &&
50 fail $failmsg
51}
52
53stop_client()
54{
55 pid=`cat $pidfile`
56 if [ ! -z "$pid" ]; then
57 kill $pid
58 fi
59 wait
60}
61
62cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak
63echo "PermitListen 127.0.0.1:1" >>$OBJ/sshd_config
64echo "Match Address 127.0.0.1" >>$OBJ/sshd_config
65echo "PermitListen 127.0.0.1:2 127.0.0.1:3 $fwdspec" >>$OBJ/sshd_config
66
67grep -v AuthorizedKeysFile $OBJ/sshd_proxy_bak > $OBJ/sshd_proxy
68echo "AuthorizedKeysFile /dev/null" >>$OBJ/sshd_proxy
69echo "PermitListen 127.0.0.1:1" >>$OBJ/sshd_proxy
70echo "Match user $USER" >>$OBJ/sshd_proxy
71echo "AuthorizedKeysFile /dev/null $OBJ/authorized_keys_%u" >>$OBJ/sshd_proxy
72echo "Match Address 127.0.0.1" >>$OBJ/sshd_proxy
73echo "PermitListen 127.0.0.1:2 127.0.0.1:3 $fwdspec" >>$OBJ/sshd_proxy
74
75start_sshd
76
77#set -x
78
79# Test Match + PermitListen in sshd_config. This should be permitted
80trace "match permitlisten localhost"
81expect_client_ok -F $OBJ/ssh_config
82${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \
83 fail "match permitlisten permit"
84stop_client
85
86# Same but from different source. This should not be permitted
87trace "match permitlisten proxy"
88expect_client_fail "match permitlisten deny" \
89 -F $OBJ/ssh_proxy
90
91# Retry previous with key option, should also be denied.
92cp /dev/null $OBJ/authorized_keys_$USER
93for t in ${SSH_KEYTYPES}; do
94 printf 'permitlisten="'$fwdspec'" ' >> $OBJ/authorized_keys_$USER
95 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
96done
97trace "match permitlisten proxy w/key opts"
98expect_client_fail "match permitlisten deny w/key opt"\
99 -F $OBJ/ssh_proxy
100
101# Test both sshd_config and key options permitting the same dst/port pair.
102# Should be permitted.
103trace "match permitlisten localhost"
104expect_client_ok -F $OBJ/ssh_config
105${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \
106 fail "match permitlisten permit"
107stop_client
108
109# Test that a bare port number is accepted in PermitListen
110cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
111echo "PermitListen 127.0.0.1:1 $fwdport 127.0.0.2:2" >>$OBJ/sshd_proxy
112trace "match permitlisten bare"
113expect_client_ok -F $OBJ/ssh_config
114${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \
115 fail "match permitlisten bare"
116stop_client
117
118# Test that an incorrect bare port number is denied as expected
119cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
120echo "PermitListen 1 2 99" >>$OBJ/sshd_proxy
121trace "match permitlisten bare"
122expect_client_fail -F $OBJ/ssh_config
123
124cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
125echo "PermitListen 127.0.0.1:1 $fwdspec 127.0.0.2:2" >>$OBJ/sshd_proxy
126echo "Match User $USER" >>$OBJ/sshd_proxy
127echo "PermitListen 127.0.0.1:1 127.0.0.1:2" >>$OBJ/sshd_proxy
128
129# Test that a Match overrides a PermitListen in the global section
130trace "match permitlisten proxy w/key opts"
131expect_client_fail "match override permitlisten" \
132 -F $OBJ/ssh_proxy
133
134cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
135echo "PermitListen 127.0.0.1:1 $fwdspec 127.0.0.2:2" >>$OBJ/sshd_proxy
136echo "Match User NoSuchUser" >>$OBJ/sshd_proxy
137echo "PermitListen 127.0.0.1:1 127.0.0.1:2" >>$OBJ/sshd_proxy
138
139# Test that a rule that doesn't match doesn't override, plus test a
140# PermitListen entry that's not at the start of the list
141trace "nomatch permitlisten proxy w/key opts"
142expect_client_ok -F $OBJ/ssh_proxy
143${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \
144 fail "nomatch override permitlisten"
145stop_client
146
147# bind to 127.0.0.1 instead of default localhost
148fwdspec2="127.0.0.1:${fwdport}"
149fwd="-R ${fwdspec2}:127.0.0.1:$PORT"
150
151# first try w/ old fwdspec both in server config and key opts
152cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
153echo "PermitListen 127.0.0.1:1 $fwdspec 127.0.0.2:2" >>$OBJ/sshd_proxy
154cp /dev/null $OBJ/authorized_keys_$USER
155for t in ${SSH_KEYTYPES}; do
156 printf 'permitlisten="'$fwdspec'" ' >> $OBJ/authorized_keys_$USER
157 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
158done
159trace "nomatch permitlisten 127.0.0.1 server config and userkey"
160expect_client_fail "nomatch 127.0.0.1 server config and userkey" \
161 -F $OBJ/ssh_config
162
163# correct server config, denied by key opts
164cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
165echo "PermitListen 127.0.0.1:1 ${fwdspec2} 127.0.0.2:2" >>$OBJ/sshd_proxy
166trace "nomatch permitlisten 127.0.0.1 w/key opts"
167expect_client_fail "nomatch 127.0.0.1 w/key opts" \
168 -F $OBJ/ssh_config
169
170# fix key opts
171cp /dev/null $OBJ/authorized_keys_$USER
172for t in ${SSH_KEYTYPES}; do
173 printf 'permitlisten="'$fwdspec2'" ' >> $OBJ/authorized_keys_$USER
174 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
175done
176trace "match permitlisten 127.0.0.1 server config w/key opts"
177expect_client_ok -F $OBJ/ssh_proxy
178${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \
179 fail "match 127.0.0.1 server config w/key opts"
180stop_client
181
182# key opts with bare port number
183cp /dev/null $OBJ/authorized_keys_$USER
184for t in ${SSH_KEYTYPES}; do
185 printf 'permitlisten="'$fwdport'" ' >> $OBJ/authorized_keys_$USER
186 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
187done
188trace "match permitlisten 127.0.0.1 server config w/key opts (bare)"
189expect_client_ok -F $OBJ/ssh_proxy
190${SSH} -q -p $fwdport -F $OBJ/ssh_config somehost true || \
191 fail "match 127.0.0.1 server config w/key opts (bare)"
192stop_client
193
194# key opts with incorrect bare port number
195cp /dev/null $OBJ/authorized_keys_$USER
196for t in ${SSH_KEYTYPES}; do
197 printf 'permitlisten="99" ' >> $OBJ/authorized_keys_$USER
198 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
199done
200trace "match permitlisten 127.0.0.1 server config w/key opts (wrong bare)"
201expect_client_fail "nomatch 127.0.0.1 w/key opts (wrong bare)" \
202 -F $OBJ/ssh_config
diff --git a/regress/cfgparse.sh b/regress/cfgparse.sh
index ccf511f6b..a9e5c6b09 100644
--- a/regress/cfgparse.sh
+++ b/regress/cfgparse.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: cfgparse.sh,v 1.6 2016/06/03 03:47:59 dtucker Exp $ 1# $OpenBSD: cfgparse.sh,v 1.7 2018/05/11 03:51:06 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="sshd config parse" 4tid="sshd config parse"
@@ -10,8 +10,8 @@ fi
10 10
11# We need to use the keys generated for the regression test because sshd -T 11# We need to use the keys generated for the regression test because sshd -T
12# will fail if we're not running with SUDO (no permissions for real keys) or 12# will fail if we're not running with SUDO (no permissions for real keys) or
13# if we are # running tests on a system that has never had sshd installed 13# if we are running tests on a system that has never had sshd installed
14# (keys won't exist). 14# because the keys won't exist.
15 15
16grep "HostKey " $OBJ/sshd_config > $OBJ/sshd_config_minimal 16grep "HostKey " $OBJ/sshd_config > $OBJ/sshd_config_minimal
17SSHD_KEYS="`cat $OBJ/sshd_config_minimal`" 17SSHD_KEYS="`cat $OBJ/sshd_config_minimal`"
diff --git a/regress/forward-control.sh b/regress/forward-control.sh
index 93d05cf63..3b1f69a71 100644
--- a/regress/forward-control.sh
+++ b/regress/forward-control.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: forward-control.sh,v 1.5 2018/03/02 02:51:55 djm Exp $ 1# $OpenBSD: forward-control.sh,v 1.7 2018/06/07 14:29:43 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="sshd control of local and remote forwarding" 4tid="sshd control of local and remote forwarding"
@@ -67,7 +67,7 @@ check_rfwd() {
67 _message=$2 67 _message=$2
68 rm -f $READY 68 rm -f $READY
69 ${SSH} -F $OBJ/ssh_proxy \ 69 ${SSH} -F $OBJ/ssh_proxy \
70 -R$RFWD_PORT:127.0.0.1:$PORT \ 70 -R127.0.0.1:$RFWD_PORT:127.0.0.1:$PORT \
71 -o ExitOnForwardFailure=yes \ 71 -o ExitOnForwardFailure=yes \
72 -n host exec sh -c \'"sleep 60 & echo \$! > $READY ; wait "\' \ 72 -n host exec sh -c \'"sleep 60 & echo \$! > $READY ; wait "\' \
73 >/dev/null 2>&1 & 73 >/dev/null 2>&1 &
@@ -100,8 +100,8 @@ cp ${OBJ}/authorized_keys_${USER} ${OBJ}/authorized_keys_${USER}.bak
100check_lfwd Y "default configuration" 100check_lfwd Y "default configuration"
101check_rfwd Y "default configuration" 101check_rfwd Y "default configuration"
102 102
103# Usage: all_tests yes|local|remote|no Y|N Y|N Y|N Y|N Y|N Y|N 103# Usage: lperm_tests yes|local|remote|no Y|N Y|N Y|N Y|N Y|N Y|N
104all_tests() { 104lperm_tests() {
105 _tcpfwd=$1 105 _tcpfwd=$1
106 _plain_lfwd=$2 106 _plain_lfwd=$2
107 _plain_rfwd=$3 107 _plain_rfwd=$3
@@ -109,32 +109,39 @@ all_tests() {
109 _nopermit_rfwd=$5 109 _nopermit_rfwd=$5
110 _permit_lfwd=$6 110 _permit_lfwd=$6
111 _permit_rfwd=$7 111 _permit_rfwd=$7
112 _badfwd=127.0.0.1:22 112 _badfwd1=127.0.0.1:22
113 _badfwd2=127.0.0.2:22
113 _goodfwd=127.0.0.1:${PORT} 114 _goodfwd=127.0.0.1:${PORT}
114 cp ${OBJ}/authorized_keys_${USER}.bak ${OBJ}/authorized_keys_${USER} 115 cp ${OBJ}/authorized_keys_${USER}.bak ${OBJ}/authorized_keys_${USER}
115 _prefix="AllowTcpForwarding=$_tcpfwd" 116 _prefix="AllowTcpForwarding=$_tcpfwd"
117
116 # No PermitOpen 118 # No PermitOpen
117 ( cat ${OBJ}/sshd_proxy.bak ; 119 ( cat ${OBJ}/sshd_proxy.bak ;
118 echo "AllowTcpForwarding $_tcpfwd" ) \ 120 echo "AllowTcpForwarding $_tcpfwd" ) \
119 > ${OBJ}/sshd_proxy 121 > ${OBJ}/sshd_proxy
120 check_lfwd $_plain_lfwd "$_prefix" 122 check_lfwd $_plain_lfwd "$_prefix"
121 check_rfwd $_plain_rfwd "$_prefix" 123 check_rfwd $_plain_rfwd "$_prefix"
124
122 # PermitOpen via sshd_config that doesn't match 125 # PermitOpen via sshd_config that doesn't match
123 ( cat ${OBJ}/sshd_proxy.bak ; 126 ( cat ${OBJ}/sshd_proxy.bak ;
124 echo "AllowTcpForwarding $_tcpfwd" ; 127 echo "AllowTcpForwarding $_tcpfwd" ;
125 echo "PermitOpen $_badfwd" ) \ 128 echo "PermitOpen $_badfwd1 $_badfwd2" ) \
126 > ${OBJ}/sshd_proxy 129 > ${OBJ}/sshd_proxy
127 check_lfwd $_nopermit_lfwd "$_prefix, !PermitOpen" 130 check_lfwd $_nopermit_lfwd "$_prefix, !PermitOpen"
128 check_rfwd $_nopermit_rfwd "$_prefix, !PermitOpen" 131 check_rfwd $_nopermit_rfwd "$_prefix, !PermitOpen"
129 # PermitOpen via sshd_config that does match 132 # PermitOpen via sshd_config that does match
130 ( cat ${OBJ}/sshd_proxy.bak ; 133 ( cat ${OBJ}/sshd_proxy.bak ;
131 echo "AllowTcpForwarding $_tcpfwd" ; 134 echo "AllowTcpForwarding $_tcpfwd" ;
132 echo "PermitOpen $_badfwd $_goodfwd" ) \ 135 echo "PermitOpen $_badfwd1 $_goodfwd $_badfwd2" ) \
133 > ${OBJ}/sshd_proxy 136 > ${OBJ}/sshd_proxy
137 check_lfwd $_plain_lfwd "$_prefix, PermitOpen"
138 check_rfwd $_plain_rfwd "$_prefix, PermitOpen"
139
140 # permitopen keys option.
134 # NB. permitopen via authorized_keys should have same 141 # NB. permitopen via authorized_keys should have same
135 # success/fail as via sshd_config 142 # success/fail as via sshd_config
136 # permitopen via authorized_keys that doesn't match 143 # permitopen via authorized_keys that doesn't match
137 sed "s/^/permitopen=\"$_badfwd\" /" \ 144 sed "s/^/permitopen=\"$_badfwd1\",permitopen=\"$_badfwd2\" /" \
138 < ${OBJ}/authorized_keys_${USER}.bak \ 145 < ${OBJ}/authorized_keys_${USER}.bak \
139 > ${OBJ}/authorized_keys_${USER} || fatal "sed 1 fail" 146 > ${OBJ}/authorized_keys_${USER} || fatal "sed 1 fail"
140 ( cat ${OBJ}/sshd_proxy.bak ; 147 ( cat ${OBJ}/sshd_proxy.bak ;
@@ -143,7 +150,7 @@ all_tests() {
143 check_lfwd $_nopermit_lfwd "$_prefix, !permitopen" 150 check_lfwd $_nopermit_lfwd "$_prefix, !permitopen"
144 check_rfwd $_nopermit_rfwd "$_prefix, !permitopen" 151 check_rfwd $_nopermit_rfwd "$_prefix, !permitopen"
145 # permitopen via authorized_keys that does match 152 # permitopen via authorized_keys that does match
146 sed "s/^/permitopen=\"$_badfwd\",permitopen=\"$_goodfwd\" /" \ 153 sed "s/^/permitopen=\"$_badfwd1\",permitopen=\"$_goodfwd\" /" \
147 < ${OBJ}/authorized_keys_${USER}.bak \ 154 < ${OBJ}/authorized_keys_${USER}.bak \
148 > ${OBJ}/authorized_keys_${USER} || fatal "sed 2 fail" 155 > ${OBJ}/authorized_keys_${USER} || fatal "sed 2 fail"
149 ( cat ${OBJ}/sshd_proxy.bak ; 156 ( cat ${OBJ}/sshd_proxy.bak ;
@@ -151,6 +158,7 @@ all_tests() {
151 > ${OBJ}/sshd_proxy 158 > ${OBJ}/sshd_proxy
152 check_lfwd $_permit_lfwd "$_prefix, permitopen" 159 check_lfwd $_permit_lfwd "$_prefix, permitopen"
153 check_rfwd $_permit_rfwd "$_prefix, permitopen" 160 check_rfwd $_permit_rfwd "$_prefix, permitopen"
161
154 # Check port-forwarding flags in authorized_keys. 162 # Check port-forwarding flags in authorized_keys.
155 # These two should refuse all. 163 # These two should refuse all.
156 sed "s/^/no-port-forwarding /" \ 164 sed "s/^/no-port-forwarding /" \
@@ -180,9 +188,48 @@ all_tests() {
180 check_rfwd $_plain_rfwd "$_prefix, restrict,port-forwarding" 188 check_rfwd $_plain_rfwd "$_prefix, restrict,port-forwarding"
181} 189}
182 190
183# no-permitopen mismatch-permitopen match-permitopen 191# permit-open none mismatch match
184# AllowTcpForwarding local remote local remote local remote 192# AllowTcpForwarding local remote local remote local remote
185all_tests yes Y Y N Y Y Y 193lperm_tests yes Y Y N Y Y Y
186all_tests local Y N N N Y N 194lperm_tests local Y N N N Y N
187all_tests remote N Y N Y N Y 195lperm_tests remote N Y N Y N Y
188all_tests no N N N N N N 196lperm_tests no N N N N N N
197
198# Usage: rperm_tests yes|local|remote|no Y|N Y|N Y|N Y|N Y|N Y|N
199rperm_tests() {
200 _tcpfwd=$1
201 _plain_lfwd=$2
202 _plain_rfwd=$3
203 _nopermit_lfwd=$4
204 _nopermit_rfwd=$5
205 _permit_lfwd=$6
206 _permit_rfwd=$7
207 _badfwd1=127.0.0.1:22
208 _badfwd2=127.0.0.2:${RFWD_PORT}
209 _goodfwd=127.0.0.1:${RFWD_PORT}
210 cp ${OBJ}/authorized_keys_${USER}.bak ${OBJ}/authorized_keys_${USER}
211 _prefix="AllowTcpForwarding=$_tcpfwd"
212
213 # PermitListen via sshd_config that doesn't match
214 ( cat ${OBJ}/sshd_proxy.bak ;
215 echo "AllowTcpForwarding $_tcpfwd" ;
216 echo "PermitListen $_badfwd1 $_badfwd2" ) \
217 > ${OBJ}/sshd_proxy
218 check_lfwd $_nopermit_lfwd "$_prefix, !PermitListen"
219 check_rfwd $_nopermit_rfwd "$_prefix, !PermitListen"
220 # PermitListen via sshd_config that does match
221 ( cat ${OBJ}/sshd_proxy.bak ;
222 echo "AllowTcpForwarding $_tcpfwd" ;
223 echo "PermitListen $_badfwd1 $_goodfwd $_badfwd2" ) \
224 > ${OBJ}/sshd_proxy
225 check_lfwd $_plain_lfwd "$_prefix, PermitListen"
226 check_rfwd $_plain_rfwd "$_prefix, PermitListen"
227}
228
229# permit-remote-open none mismatch match
230# AllowTcpForwarding local remote local remote local remote
231rperm_tests yes Y Y Y N Y Y
232rperm_tests local Y N Y N Y N
233rperm_tests remote N Y N N N Y
234rperm_tests no N N N N N N
235
diff --git a/regress/forwarding.sh b/regress/forwarding.sh
index 39fccba73..7d0fae114 100644
--- a/regress/forwarding.sh
+++ b/regress/forwarding.sh
@@ -10,7 +10,8 @@ start_sshd
10base=33 10base=33
11last=$PORT 11last=$PORT
12fwd="" 12fwd=""
13CTL=/tmp/openssh.regress.ctl-sock.$$ 13make_tmpdir
14CTL=${SSH_REGRESS_TMP}/ctl-sock
14 15
15for j in 0 1 2; do 16for j in 0 1 2; do
16 for i in 0 1 2; do 17 for i in 0 1 2; do
diff --git a/regress/key-options.sh b/regress/key-options.sh
index d680737c1..112c9bd8e 100644
--- a/regress/key-options.sh
+++ b/regress/key-options.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: key-options.sh,v 1.8 2018/03/14 05:35:40 djm Exp $ 1# $OpenBSD: key-options.sh,v 1.9 2018/07/03 13:53:26 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="key options" 4tid="key options"
@@ -27,6 +27,7 @@ expect_pty_succeed() {
27 rm -f $OBJ/data 27 rm -f $OBJ/data
28 sed "s/.*/$opts &/" $origkeys >$authkeys 28 sed "s/.*/$opts &/" $origkeys >$authkeys
29 verbose "key option pty $which" 29 verbose "key option pty $which"
30 config_defined HAVE_OPENPTY || verbose "skipped for no openpty(3)"
30 ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0" 31 ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0"
31 if [ $? -ne 0 ] ; then 32 if [ $? -ne 0 ] ; then
32 fail "key option failed $which" 33 fail "key option failed $which"
@@ -44,6 +45,7 @@ expect_pty_fail() {
44 rm -f $OBJ/data 45 rm -f $OBJ/data
45 sed "s/.*/$opts &/" $origkeys >$authkeys 46 sed "s/.*/$opts &/" $origkeys >$authkeys
46 verbose "key option pty $which" 47 verbose "key option pty $which"
48 config_defined HAVE_OPENPTY || verbose "skipped for no openpty(3)"
47 ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0" 49 ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0"
48 if [ $? -eq 0 ]; then 50 if [ $? -eq 0 ]; then
49 r=`cat $OBJ/data` 51 r=`cat $OBJ/data`
@@ -63,6 +65,7 @@ expect_pty_fail "restrict" "restrict"
63expect_pty_succeed "restrict,pty" "restrict,pty" 65expect_pty_succeed "restrict,pty" "restrict,pty"
64 66
65# Test environment= 67# Test environment=
68# XXX this can fail if ~/.ssh/environment exists for the user running the test
66echo 'PermitUserEnvironment yes' >> $OBJ/sshd_proxy 69echo 'PermitUserEnvironment yes' >> $OBJ/sshd_proxy
67sed 's/.*/environment="FOO=bar" &/' $origkeys >$authkeys 70sed 's/.*/environment="FOO=bar" &/' $origkeys >$authkeys
68verbose "key option environment" 71verbose "key option environment"
diff --git a/regress/keygen-knownhosts.sh b/regress/keygen-knownhosts.sh
index 693cd0e75..37af34769 100644
--- a/regress/keygen-knownhosts.sh
+++ b/regress/keygen-knownhosts.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: keygen-knownhosts.sh,v 1.3 2015/07/17 03:34:27 djm Exp $ 1# $OpenBSD: keygen-knownhosts.sh,v 1.4 2018/06/01 03:52:37 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="ssh-keygen known_hosts" 4tid="ssh-keygen known_hosts"
@@ -55,13 +55,24 @@ expect_key() {
55check_find() { 55check_find() {
56 _host=$1 56 _host=$1
57 _name=$2 57 _name=$2
58 _keygenopt=$3 58 shift; shift
59 ${SSHKEYGEN} $_keygenopt -f $OBJ/kh.invalid -F $_host > $OBJ/kh.result 59 ${SSHKEYGEN} "$@" -f $OBJ/kh.invalid -F $_host > $OBJ/kh.result
60 if ! diff -w $OBJ/kh.expect $OBJ/kh.result ; then 60 if ! diff -w $OBJ/kh.expect $OBJ/kh.result ; then
61 fail "didn't find $_name" 61 fail "didn't find $_name"
62 fi 62 fi
63} 63}
64 64
65check_find_exit_code() {
66 _host=$1
67 _name=$2
68 _keygenopt=$3
69 _exp_exit_code=$4
70 ${SSHKEYGEN} $_keygenopt -f $OBJ/kh.invalid -F $_host > /dev/null
71 if [ "$?" != "$_exp_exit_code" ] ; then
72 fail "Unexpected exit code $_name"
73 fi
74}
75
65# Find key 76# Find key
66rm -f $OBJ/kh.expect 77rm -f $OBJ/kh.expect
67expect_key host-a host-a host-a 2 78expect_key host-a host-a host-a 2
@@ -88,6 +99,18 @@ rm -f $OBJ/kh.expect
88expect_key host-h "host-f,host-g,host-h " host-f 17 99expect_key host-h "host-f,host-g,host-h " host-f 17
89check_find host-h "find multiple hosts" 100check_find host-h "find multiple hosts"
90 101
102# Check exit code, known host
103check_find_exit_code host-a "known host" "-q" "0"
104
105# Check exit code, unknown host
106check_find_exit_code host-aa "unknown host" "-q" "1"
107
108# Check exit code, the hash mode, known host
109check_find_exit_code host-a "known host" "-q -H" "0"
110
111# Check exit code, the hash mode, unknown host
112check_find_exit_code host-aa "unknown host" "-q -H" "1"
113
91check_hashed_find() { 114check_hashed_find() {
92 _host=$1 115 _host=$1
93 _name=$2 116 _name=$2
@@ -110,19 +133,19 @@ check_hashed_find host-a "find simple and hash"
110rm -f $OBJ/kh.expect 133rm -f $OBJ/kh.expect
111expect_key host-c host-c host-c "" CA 134expect_key host-c host-c host-c "" CA
112# CA key output is not hashed. 135# CA key output is not hashed.
113check_find host-c "find simple and hash" -H 136check_find host-c "find simple and hash" -Hq
114 137
115# Find revoked key and hash 138# Find revoked key and hash
116rm -f $OBJ/kh.expect 139rm -f $OBJ/kh.expect
117expect_key host-d host-d host-d "" REVOKED 140expect_key host-d host-d host-d "" REVOKED
118# Revoked key output is not hashed. 141# Revoked key output is not hashed.
119check_find host-d "find simple and hash" -H 142check_find host-d "find simple and hash" -Hq
120 143
121# find key with wildcard and hash 144# find key with wildcard and hash
122rm -f $OBJ/kh.expect 145rm -f $OBJ/kh.expect
123expect_key host-e "host-e*" host-e "" 146expect_key host-e "host-e*" host-e ""
124# Key with wildcard hostname should not be hashed. 147# Key with wildcard hostname should not be hashed.
125check_find host-e "find wildcard key" -H 148check_find host-e "find wildcard key" -Hq
126 149
127# find key among multiple hosts 150# find key among multiple hosts
128rm -f $OBJ/kh.expect 151rm -f $OBJ/kh.expect
diff --git a/regress/mkdtemp.c b/regress/mkdtemp.c
new file mode 100644
index 000000000..a7be1bdab
--- /dev/null
+++ b/regress/mkdtemp.c
@@ -0,0 +1,61 @@
1/*
2 * Copyright (c) 2017 Colin Watson <cjwatson@debian.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17/* Roughly equivalent to "mktemp -d -t TEMPLATE", but portable. */
18
19#include "includes.h"
20
21#include <limits.h>
22#include <stdarg.h>
23#include <stdio.h>
24#include <stdlib.h>
25#include <unistd.h>
26
27#include "log.h"
28
29static void
30usage(void)
31{
32 fprintf(stderr, "mkdtemp template\n");
33 exit(1);
34}
35
36int
37main(int argc, char **argv)
38{
39 const char *base;
40 const char *tmpdir;
41 char template[PATH_MAX];
42 int r;
43 char *dir;
44
45 if (argc != 2)
46 usage();
47 base = argv[1];
48
49 if ((tmpdir = getenv("TMPDIR")) == NULL)
50 tmpdir = "/tmp";
51 r = snprintf(template, sizeof(template), "%s/%s", tmpdir, base);
52 if (r < 0 || (size_t)r >= sizeof(template))
53 fatal("template string too long");
54 dir = mkdtemp(template);
55 if (dir == NULL) {
56 perror("mkdtemp");
57 exit(1);
58 }
59 puts(dir);
60 return 0;
61}
diff --git a/regress/multiplex.sh b/regress/multiplex.sh
index 078a53a88..a6fad8eb8 100644
--- a/regress/multiplex.sh
+++ b/regress/multiplex.sh
@@ -1,7 +1,8 @@
1# $OpenBSD: multiplex.sh,v 1.28 2017/04/30 23:34:55 djm Exp $ 1# $OpenBSD: multiplex.sh,v 1.28 2017/04/30 23:34:55 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4CTL=/tmp/openssh.regress.ctl-sock.$$ 4make_tmpdir
5CTL=${SSH_REGRESS_TMP}/ctl-sock
5 6
6tid="connection multiplexing" 7tid="connection multiplexing"
7 8
diff --git a/regress/rekey.sh b/regress/rekey.sh
index ae145bc8b..fd6a02cc7 100644
--- a/regress/rekey.sh
+++ b/regress/rekey.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: rekey.sh,v 1.17 2016/01/29 05:18:15 dtucker Exp $ 1# $OpenBSD: rekey.sh,v 1.18 2018/04/10 00:14:10 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="rekey" 4tid="rekey"
@@ -30,7 +30,7 @@ ssh_data_rekeying()
30 n=`expr $n - 1` 30 n=`expr $n - 1`
31 trace "$n rekeying(s)" 31 trace "$n rekeying(s)"
32 if [ $n -lt 1 ]; then 32 if [ $n -lt 1 ]; then
33 fail "no rekeying occured ($@)" 33 fail "no rekeying occurred ($@)"
34 fi 34 fi
35} 35}
36 36
@@ -80,7 +80,7 @@ for s in 5 10; do
80 n=`expr $n - 1` 80 n=`expr $n - 1`
81 trace "$n rekeying(s)" 81 trace "$n rekeying(s)"
82 if [ $n -lt 1 ]; then 82 if [ $n -lt 1 ]; then
83 fail "no rekeying occured" 83 fail "no rekeying occurred"
84 fi 84 fi
85done 85done
86 86
@@ -96,7 +96,7 @@ for s in 5 10; do
96 n=`expr $n - 1` 96 n=`expr $n - 1`
97 trace "$n rekeying(s)" 97 trace "$n rekeying(s)"
98 if [ $n -lt 1 ]; then 98 if [ $n -lt 1 ]; then
99 fail "no rekeying occured" 99 fail "no rekeying occurred"
100 fi 100 fi
101done 101done
102 102
@@ -115,7 +115,7 @@ for s in 16 1k 128k 256k; do
115 n=`expr $n - 1` 115 n=`expr $n - 1`
116 trace "$n rekeying(s)" 116 trace "$n rekeying(s)"
117 if [ $n -lt 1 ]; then 117 if [ $n -lt 1 ]; then
118 fail "no rekeying occured" 118 fail "no rekeying occurred"
119 fi 119 fi
120done 120done
121 121
@@ -132,7 +132,7 @@ for s in 5 10; do
132 n=`expr $n - 1` 132 n=`expr $n - 1`
133 trace "$n rekeying(s)" 133 trace "$n rekeying(s)"
134 if [ $n -lt 1 ]; then 134 if [ $n -lt 1 ]; then
135 fail "no rekeying occured" 135 fail "no rekeying occurred"
136 fi 136 fi
137done 137done
138 138
diff --git a/regress/setuid-allowed.c b/regress/setuid-allowed.c
index 7a0527fd0..d91d9f194 100644
--- a/regress/setuid-allowed.c
+++ b/regress/setuid-allowed.c
@@ -22,6 +22,7 @@
22#ifdef HAVE_SYS_STATVFS_H 22#ifdef HAVE_SYS_STATVFS_H
23# include <sys/statvfs.h> 23# include <sys/statvfs.h>
24#endif 24#endif
25#include <stdlib.h>
25#include <stdio.h> 26#include <stdio.h>
26#include <string.h> 27#include <string.h>
27#include <errno.h> 28#include <errno.h>
diff --git a/regress/sshcfgparse.sh b/regress/sshcfgparse.sh
index 010e02865..e0ce568d7 100644
--- a/regress/sshcfgparse.sh
+++ b/regress/sshcfgparse.sh
@@ -1,8 +1,27 @@
1# $OpenBSD: sshcfgparse.sh,v 1.2 2016/07/14 01:24:21 dtucker Exp $ 1# $OpenBSD: sshcfgparse.sh,v 1.4 2018/07/04 13:51:12 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="ssh config parse" 4tid="ssh config parse"
5 5
6expect_result_present() {
7 _str="$1" ; shift
8 for _expect in "$@" ; do
9 echo "$f" | tr ',' '\n' | grep "^$_expect\$" >/dev/null
10 if test $? -ne 0 ; then
11 fail "missing expected \"$_expect\" from \"$_str\""
12 fi
13 done
14}
15expect_result_absent() {
16 _str="$1" ; shift
17 for _expect in "$@" ; do
18 echo "$f" | tr ',' '\n' | grep "^$_expect\$" >/dev/null
19 if test $? -eq 0 ; then
20 fail "unexpected \"$_expect\" present in \"$_str\""
21 fi
22 done
23}
24
6verbose "reparse minimal config" 25verbose "reparse minimal config"
7(${SSH} -G -F $OBJ/ssh_config somehost >$OBJ/ssh_config.1 && 26(${SSH} -G -F $OBJ/ssh_config somehost >$OBJ/ssh_config.1 &&
8 ${SSH} -G -F $OBJ/ssh_config.1 somehost >$OBJ/ssh_config.2 && 27 ${SSH} -G -F $OBJ/ssh_config.1 somehost >$OBJ/ssh_config.2 &&
@@ -25,5 +44,46 @@ f=`${SSH} -GF $OBJ/ssh_config -W a:1 -o clearallforwardings=no h | \
25 awk '/clearallforwardings/{print $2}'` 44 awk '/clearallforwardings/{print $2}'`
26test "$f" = "no" || fail "clearallforwardings override" 45test "$f" = "no" || fail "clearallforwardings override"
27 46
47verbose "user first match"
48user=`awk '$1=="User" {print $2}' $OBJ/ssh_config`
49f=`${SSH} -GF $OBJ/ssh_config host | awk '/^user /{print $2}'`
50test "$f" = "$user" || fail "user from config, expected '$user' got '$f'"
51f=`${SSH} -GF $OBJ/ssh_config -o user=foo -l bar baz@host | awk '/^user /{print $2}'`
52test "$f" = "foo" || fail "user first match -oUser, expected 'foo' got '$f' "
53f=`${SSH} -GF $OBJ/ssh_config -lbar baz@host user=foo baz@host | awk '/^user /{print $2}'`
54test "$f" = "bar" || fail "user first match -l, expected 'bar' got '$f'"
55f=`${SSH} -GF $OBJ/ssh_config baz@host -o user=foo -l bar baz@host | awk '/^user /{print $2}'`
56test "$f" = "baz" || fail "user first match user@host, expected 'baz' got '$f'"
57
58verbose "pubkeyacceptedkeytypes"
59# Default set
60f=`${SSH} -GF none host | awk '/^pubkeyacceptedkeytypes /{print $2}'`
61expect_result_present "$f" "ssh-ed25519" "ssh-ed25519-cert-v01.*"
62expect_result_absent "$f" "ssh-dss"
63# Explicit override
64f=`${SSH} -GF none -opubkeyacceptedkeytypes=ssh-ed25519 host | \
65 awk '/^pubkeyacceptedkeytypes /{print $2}'`
66expect_result_present "$f" "ssh-ed25519"
67expect_result_absent "$f" "ssh-ed25519-cert-v01.*" "ssh-dss"
68# Removal from default set
69f=`${SSH} -GF none -opubkeyacceptedkeytypes=-ssh-ed25519-cert* host | \
70 awk '/^pubkeyacceptedkeytypes /{print $2}'`
71expect_result_present "$f" "ssh-ed25519"
72expect_result_absent "$f" "ssh-ed25519-cert-v01.*" "ssh-dss"
73f=`${SSH} -GF none -opubkeyacceptedkeytypes=-ssh-ed25519 host | \
74 awk '/^pubkeyacceptedkeytypes /{print $2}'`
75expect_result_present "$f" "ssh-ed25519-cert-v01.*"
76expect_result_absent "$f" "ssh-ed25519" "ssh-dss"
77# Append to default set.
78# XXX this will break for !WITH_OPENSSL
79f=`${SSH} -GF none -opubkeyacceptedkeytypes=+ssh-dss-cert* host | \
80 awk '/^pubkeyacceptedkeytypes /{print $2}'`
81expect_result_present "$f" "ssh-ed25519" "ssh-dss-cert-v01.*"
82expect_result_absent "$f" "ssh-dss"
83f=`${SSH} -GF none -opubkeyacceptedkeytypes=+ssh-dss host | \
84 awk '/^pubkeyacceptedkeytypes /{print $2}'`
85expect_result_present "$f" "ssh-ed25519" "ssh-ed25519-cert-v01.*" "ssh-dss"
86expect_result_absent "$f" "ssh-dss-cert-v01.*"
87
28# cleanup 88# cleanup
29rm -f $OBJ/ssh_config.[012] 89rm -f $OBJ/ssh_config.[012]
diff --git a/regress/test-exec.sh b/regress/test-exec.sh
index b6169f157..40d46e3cd 100644
--- a/regress/test-exec.sh
+++ b/regress/test-exec.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: test-exec.sh,v 1.62 2018/03/16 09:06:31 dtucker Exp $ 1# $OpenBSD: test-exec.sh,v 1.64 2018/08/10 01:35:49 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4#SUDO=sudo 4#SUDO=sudo
@@ -76,6 +76,9 @@ SFTP=sftp
76SFTPSERVER=/usr/libexec/openssh/sftp-server 76SFTPSERVER=/usr/libexec/openssh/sftp-server
77SCP=scp 77SCP=scp
78 78
79# Set by make_tmpdir() on demand (below).
80SSH_REGRESS_TMP=
81
79# Interop testing 82# Interop testing
80PLINK=plink 83PLINK=plink
81PUTTYGEN=puttygen 84PUTTYGEN=puttygen
@@ -163,9 +166,13 @@ if [ "x$USE_VALGRIND" != "x" ]; then
163 esac 166 esac
164 167
165 if [ x"$VG_SKIP" = "x" ]; then 168 if [ x"$VG_SKIP" = "x" ]; then
169 VG_LEAK="--leak-check=no"
170 if [ x"$VALGRIND_CHECK_LEAKS" != "x" ]; then
171 VG_LEAK="--leak-check=full"
172 fi
166 VG_IGNORE="/bin/*,/sbin/*,/usr/*,/var/*" 173 VG_IGNORE="/bin/*,/sbin/*,/usr/*,/var/*"
167 VG_LOG="$OBJ/valgrind-out/${VG_TEST}." 174 VG_LOG="$OBJ/valgrind-out/${VG_TEST}."
168 VG_OPTS="--track-origins=yes --leak-check=full" 175 VG_OPTS="--track-origins=yes $VG_LEAK"
169 VG_OPTS="$VG_OPTS --trace-children=yes" 176 VG_OPTS="$VG_OPTS --trace-children=yes"
170 VG_OPTS="$VG_OPTS --trace-children-skip=${VG_IGNORE}" 177 VG_OPTS="$VG_OPTS --trace-children-skip=${VG_IGNORE}"
171 VG_PATH="valgrind" 178 VG_PATH="valgrind"
@@ -318,6 +325,12 @@ stop_sshd ()
318 fi 325 fi
319} 326}
320 327
328make_tmpdir ()
329{
330 SSH_REGRESS_TMP="$($OBJ/mkdtemp openssh-XXXXXXXX)" || \
331 fatal "failed to create temporary directory"
332}
333
321# helper 334# helper
322cleanup () 335cleanup ()
323{ 336{
@@ -328,6 +341,9 @@ cleanup ()
328 kill $SSH_PID 341 kill $SSH_PID
329 fi 342 fi
330 fi 343 fi
344 if [ "x$SSH_REGRESS_TMP" != "x" ]; then
345 rm -rf "$SSH_REGRESS_TMP"
346 fi
331 stop_sshd 347 stop_sshd
332} 348}
333 349
@@ -375,7 +391,10 @@ fail ()
375 save_debug_log "FAIL: $@" 391 save_debug_log "FAIL: $@"
376 RESULT=1 392 RESULT=1
377 echo "$@" 393 echo "$@"
378 394 if test "x$TEST_SSH_FAIL_FATAL" != "x" ; then
395 cleanup
396 exit $RESULT
397 fi
379} 398}
380 399
381fatal () 400fatal ()
@@ -512,10 +531,13 @@ if test "$REGRESS_INTEROP_PUTTY" = "yes" ; then
512 >> $OBJ/authorized_keys_$USER 531 >> $OBJ/authorized_keys_$USER
513 532
514 # Convert rsa2 host key to PuTTY format 533 # Convert rsa2 host key to PuTTY format
515 ${SRC}/ssh2putty.sh 127.0.0.1 $PORT $OBJ/rsa > \ 534 cp $OBJ/rsa $OBJ/rsa_oldfmt
535 ${SSHKEYGEN} -p -N '' -m PEM -f $OBJ/rsa_oldfmt >/dev/null
536 ${SRC}/ssh2putty.sh 127.0.0.1 $PORT $OBJ/rsa_oldfmt > \
516 ${OBJ}/.putty/sshhostkeys 537 ${OBJ}/.putty/sshhostkeys
517 ${SRC}/ssh2putty.sh 127.0.0.1 22 $OBJ/rsa >> \ 538 ${SRC}/ssh2putty.sh 127.0.0.1 22 $OBJ/rsa_oldfmt >> \
518 ${OBJ}/.putty/sshhostkeys 539 ${OBJ}/.putty/sshhostkeys
540 rm -f $OBJ/rsa_oldfmt
519 541
520 # Setup proxied session 542 # Setup proxied session
521 mkdir -p ${OBJ}/.putty/sessions 543 mkdir -p ${OBJ}/.putty/sessions
diff --git a/regress/unittests/hostkeys/test_iterate.c b/regress/unittests/hostkeys/test_iterate.c
index 751825dda..d6963bd2a 100644
--- a/regress/unittests/hostkeys/test_iterate.c
+++ b/regress/unittests/hostkeys/test_iterate.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_iterate.c,v 1.5 2017/04/30 23:33:48 djm Exp $ */ 1/* $OpenBSD: test_iterate.c,v 1.6 2018/07/16 03:09:59 djm Exp $ */
2/* 2/*
3 * Regress test for hostfile.h hostkeys_foreach() 3 * Regress test for hostfile.h hostkeys_foreach()
4 * 4 *
@@ -152,6 +152,17 @@ prepare_expected(struct expected *expected, size_t n)
152 } 152 }
153} 153}
154 154
155static void
156cleanup_expected(struct expected *expected, size_t n)
157{
158 size_t i;
159
160 for (i = 0; i < n; i++) {
161 sshkey_free(expected[i].l.key);
162 expected[i].l.key = NULL;
163 }
164}
165
155struct expected expected_full[] = { 166struct expected expected_full[] = {
156 { NULL, -1, -1, 0, 0, 0, 0, -1, { 167 { NULL, -1, -1, 0, 0, 0, 0, -1, {
157 NULL, /* path, don't care */ 168 NULL, /* path, don't care */
@@ -825,6 +836,7 @@ test_iterate(void)
825 prepare_expected(expected_full, ctx.nexpected); 836 prepare_expected(expected_full, ctx.nexpected);
826 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 837 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
827 check, &ctx, NULL, NULL, ctx.flags), 0); 838 check, &ctx, NULL, NULL, ctx.flags), 0);
839 cleanup_expected(expected_full, ctx.nexpected);
828 TEST_DONE(); 840 TEST_DONE();
829 841
830 TEST_START("hostkeys_iterate all without key parse"); 842 TEST_START("hostkeys_iterate all without key parse");
@@ -835,6 +847,7 @@ test_iterate(void)
835 prepare_expected(expected_full, ctx.nexpected); 847 prepare_expected(expected_full, ctx.nexpected);
836 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 848 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
837 check, &ctx, NULL, NULL, ctx.flags), 0); 849 check, &ctx, NULL, NULL, ctx.flags), 0);
850 cleanup_expected(expected_full, ctx.nexpected);
838 TEST_DONE(); 851 TEST_DONE();
839 852
840 TEST_START("hostkeys_iterate specify host 1"); 853 TEST_START("hostkeys_iterate specify host 1");
@@ -846,6 +859,7 @@ test_iterate(void)
846 prepare_expected(expected_full, ctx.nexpected); 859 prepare_expected(expected_full, ctx.nexpected);
847 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 860 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
848 check, &ctx, "prometheus.example.com", NULL, ctx.flags), 0); 861 check, &ctx, "prometheus.example.com", NULL, ctx.flags), 0);
862 cleanup_expected(expected_full, ctx.nexpected);
849 TEST_DONE(); 863 TEST_DONE();
850 864
851 TEST_START("hostkeys_iterate specify host 2"); 865 TEST_START("hostkeys_iterate specify host 2");
@@ -857,6 +871,7 @@ test_iterate(void)
857 prepare_expected(expected_full, ctx.nexpected); 871 prepare_expected(expected_full, ctx.nexpected);
858 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 872 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
859 check, &ctx, "sisyphus.example.com", NULL, ctx.flags), 0); 873 check, &ctx, "sisyphus.example.com", NULL, ctx.flags), 0);
874 cleanup_expected(expected_full, ctx.nexpected);
860 TEST_DONE(); 875 TEST_DONE();
861 876
862 TEST_START("hostkeys_iterate match host 1"); 877 TEST_START("hostkeys_iterate match host 1");
@@ -868,6 +883,7 @@ test_iterate(void)
868 prepare_expected(expected_full, ctx.nexpected); 883 prepare_expected(expected_full, ctx.nexpected);
869 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 884 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
870 check, &ctx, "prometheus.example.com", NULL, ctx.flags), 0); 885 check, &ctx, "prometheus.example.com", NULL, ctx.flags), 0);
886 cleanup_expected(expected_full, ctx.nexpected);
871 TEST_DONE(); 887 TEST_DONE();
872 888
873 TEST_START("hostkeys_iterate match host 2"); 889 TEST_START("hostkeys_iterate match host 2");
@@ -879,6 +895,7 @@ test_iterate(void)
879 prepare_expected(expected_full, ctx.nexpected); 895 prepare_expected(expected_full, ctx.nexpected);
880 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 896 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
881 check, &ctx, "sisyphus.example.com", NULL, ctx.flags), 0); 897 check, &ctx, "sisyphus.example.com", NULL, ctx.flags), 0);
898 cleanup_expected(expected_full, ctx.nexpected);
882 TEST_DONE(); 899 TEST_DONE();
883 900
884 TEST_START("hostkeys_iterate specify host missing"); 901 TEST_START("hostkeys_iterate specify host missing");
@@ -889,6 +906,7 @@ test_iterate(void)
889 prepare_expected(expected_full, ctx.nexpected); 906 prepare_expected(expected_full, ctx.nexpected);
890 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 907 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
891 check, &ctx, "actaeon.example.org", NULL, ctx.flags), 0); 908 check, &ctx, "actaeon.example.org", NULL, ctx.flags), 0);
909 cleanup_expected(expected_full, ctx.nexpected);
892 TEST_DONE(); 910 TEST_DONE();
893 911
894 TEST_START("hostkeys_iterate match host missing"); 912 TEST_START("hostkeys_iterate match host missing");
@@ -899,6 +917,7 @@ test_iterate(void)
899 prepare_expected(expected_full, ctx.nexpected); 917 prepare_expected(expected_full, ctx.nexpected);
900 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 918 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
901 check, &ctx, "actaeon.example.org", NULL, ctx.flags), 0); 919 check, &ctx, "actaeon.example.org", NULL, ctx.flags), 0);
920 cleanup_expected(expected_full, ctx.nexpected);
902 TEST_DONE(); 921 TEST_DONE();
903 922
904 TEST_START("hostkeys_iterate specify IPv4"); 923 TEST_START("hostkeys_iterate specify IPv4");
@@ -910,6 +929,7 @@ test_iterate(void)
910 prepare_expected(expected_full, ctx.nexpected); 929 prepare_expected(expected_full, ctx.nexpected);
911 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 930 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
912 check, &ctx, "tiresias.example.org", "192.0.2.1", ctx.flags), 0); 931 check, &ctx, "tiresias.example.org", "192.0.2.1", ctx.flags), 0);
932 cleanup_expected(expected_full, ctx.nexpected);
913 TEST_DONE(); 933 TEST_DONE();
914 934
915 TEST_START("hostkeys_iterate specify IPv6"); 935 TEST_START("hostkeys_iterate specify IPv6");
@@ -921,6 +941,7 @@ test_iterate(void)
921 prepare_expected(expected_full, ctx.nexpected); 941 prepare_expected(expected_full, ctx.nexpected);
922 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 942 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
923 check, &ctx, "tiresias.example.org", "2001:db8::1", ctx.flags), 0); 943 check, &ctx, "tiresias.example.org", "2001:db8::1", ctx.flags), 0);
944 cleanup_expected(expected_full, ctx.nexpected);
924 TEST_DONE(); 945 TEST_DONE();
925 946
926 TEST_START("hostkeys_iterate match IPv4"); 947 TEST_START("hostkeys_iterate match IPv4");
@@ -932,6 +953,7 @@ test_iterate(void)
932 prepare_expected(expected_full, ctx.nexpected); 953 prepare_expected(expected_full, ctx.nexpected);
933 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 954 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
934 check, &ctx, "tiresias.example.org", "192.0.2.1", ctx.flags), 0); 955 check, &ctx, "tiresias.example.org", "192.0.2.1", ctx.flags), 0);
956 cleanup_expected(expected_full, ctx.nexpected);
935 TEST_DONE(); 957 TEST_DONE();
936 958
937 TEST_START("hostkeys_iterate match IPv6"); 959 TEST_START("hostkeys_iterate match IPv6");
@@ -943,6 +965,7 @@ test_iterate(void)
943 prepare_expected(expected_full, ctx.nexpected); 965 prepare_expected(expected_full, ctx.nexpected);
944 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 966 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
945 check, &ctx, "tiresias.example.org", "2001:db8::1", ctx.flags), 0); 967 check, &ctx, "tiresias.example.org", "2001:db8::1", ctx.flags), 0);
968 cleanup_expected(expected_full, ctx.nexpected);
946 TEST_DONE(); 969 TEST_DONE();
947 970
948 TEST_START("hostkeys_iterate specify addr missing"); 971 TEST_START("hostkeys_iterate specify addr missing");
@@ -953,6 +976,7 @@ test_iterate(void)
953 prepare_expected(expected_full, ctx.nexpected); 976 prepare_expected(expected_full, ctx.nexpected);
954 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 977 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
955 check, &ctx, "tiresias.example.org", "192.168.0.1", ctx.flags), 0); 978 check, &ctx, "tiresias.example.org", "192.168.0.1", ctx.flags), 0);
979 cleanup_expected(expected_full, ctx.nexpected);
956 TEST_DONE(); 980 TEST_DONE();
957 981
958 TEST_START("hostkeys_iterate match addr missing"); 982 TEST_START("hostkeys_iterate match addr missing");
@@ -963,6 +987,7 @@ test_iterate(void)
963 prepare_expected(expected_full, ctx.nexpected); 987 prepare_expected(expected_full, ctx.nexpected);
964 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 988 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
965 check, &ctx, "tiresias.example.org", "::1", ctx.flags), 0); 989 check, &ctx, "tiresias.example.org", "::1", ctx.flags), 0);
990 cleanup_expected(expected_full, ctx.nexpected);
966 TEST_DONE(); 991 TEST_DONE();
967 992
968 TEST_START("hostkeys_iterate specify host 2 and IPv4"); 993 TEST_START("hostkeys_iterate specify host 2 and IPv4");
@@ -975,6 +1000,7 @@ test_iterate(void)
975 prepare_expected(expected_full, ctx.nexpected); 1000 prepare_expected(expected_full, ctx.nexpected);
976 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 1001 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
977 check, &ctx, "sisyphus.example.com", "192.0.2.1", ctx.flags), 0); 1002 check, &ctx, "sisyphus.example.com", "192.0.2.1", ctx.flags), 0);
1003 cleanup_expected(expected_full, ctx.nexpected);
978 TEST_DONE(); 1004 TEST_DONE();
979 1005
980 TEST_START("hostkeys_iterate match host 1 and IPv6"); 1006 TEST_START("hostkeys_iterate match host 1 and IPv6");
@@ -986,7 +1012,9 @@ test_iterate(void)
986 ctx.match_ipv6 = 1; 1012 ctx.match_ipv6 = 1;
987 prepare_expected(expected_full, ctx.nexpected); 1013 prepare_expected(expected_full, ctx.nexpected);
988 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 1014 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
989 check, &ctx, "prometheus.example.com", "2001:db8::1", ctx.flags), 0); 1015 check, &ctx, "prometheus.example.com",
1016 "2001:db8::1", ctx.flags), 0);
1017 cleanup_expected(expected_full, ctx.nexpected);
990 TEST_DONE(); 1018 TEST_DONE();
991 1019
992 TEST_START("hostkeys_iterate specify host 2 and IPv4 w/ key parse"); 1020 TEST_START("hostkeys_iterate specify host 2 and IPv4 w/ key parse");
@@ -999,6 +1027,7 @@ test_iterate(void)
999 prepare_expected(expected_full, ctx.nexpected); 1027 prepare_expected(expected_full, ctx.nexpected);
1000 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 1028 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
1001 check, &ctx, "sisyphus.example.com", "192.0.2.1", ctx.flags), 0); 1029 check, &ctx, "sisyphus.example.com", "192.0.2.1", ctx.flags), 0);
1030 cleanup_expected(expected_full, ctx.nexpected);
1002 TEST_DONE(); 1031 TEST_DONE();
1003 1032
1004 TEST_START("hostkeys_iterate match host 1 and IPv6 w/ key parse"); 1033 TEST_START("hostkeys_iterate match host 1 and IPv6 w/ key parse");
@@ -1010,7 +1039,9 @@ test_iterate(void)
1010 ctx.match_ipv6 = 1; 1039 ctx.match_ipv6 = 1;
1011 prepare_expected(expected_full, ctx.nexpected); 1040 prepare_expected(expected_full, ctx.nexpected);
1012 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"), 1041 ASSERT_INT_EQ(hostkeys_foreach(test_data_file("known_hosts"),
1013 check, &ctx, "prometheus.example.com", "2001:db8::1", ctx.flags), 0); 1042 check, &ctx, "prometheus.example.com",
1043 "2001:db8::1", ctx.flags), 0);
1044 cleanup_expected(expected_full, ctx.nexpected);
1014 TEST_DONE(); 1045 TEST_DONE();
1015} 1046}
1016 1047
diff --git a/regress/unittests/match/tests.c b/regress/unittests/match/tests.c
index e1593367b..3d9af55f2 100644
--- a/regress/unittests/match/tests.c
+++ b/regress/unittests/match/tests.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tests.c,v 1.4 2017/02/03 23:01:42 djm Exp $ */ 1/* $OpenBSD: tests.c,v 1.5 2018/07/04 13:51:45 djm Exp $ */
2/* 2/*
3 * Regress test for matching functions 3 * Regress test for matching functions
4 * 4 *
@@ -105,7 +105,7 @@ tests(void)
105 105
106#define CHECK_FILTER(string,filter,expected) \ 106#define CHECK_FILTER(string,filter,expected) \
107 do { \ 107 do { \
108 char *result = match_filter_list((string), (filter)); \ 108 char *result = match_filter_blacklist((string), (filter)); \
109 ASSERT_STRING_EQ(result, expected); \ 109 ASSERT_STRING_EQ(result, expected); \
110 free(result); \ 110 free(result); \
111 } while (0) 111 } while (0)
diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c
index 1aa608f92..72367bde7 100644
--- a/regress/unittests/sshkey/test_sshkey.c
+++ b/regress/unittests/sshkey/test_sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_sshkey.c,v 1.13 2017/12/21 00:41:22 djm Exp $ */ 1/* $OpenBSD: test_sshkey.c,v 1.14 2018/07/13 02:13:19 djm Exp $ */
2/* 2/*
3 * Regress test for sshkey.h key management API 3 * Regress test for sshkey.h key management API
4 * 4 *
@@ -434,10 +434,13 @@ sshkey_tests(void)
434 ASSERT_PTR_NE(k1->cert->principals[1], NULL); 434 ASSERT_PTR_NE(k1->cert->principals[1], NULL);
435 ASSERT_PTR_NE(k1->cert->principals[2], NULL); 435 ASSERT_PTR_NE(k1->cert->principals[2], NULL);
436 ASSERT_PTR_NE(k1->cert->principals[3], NULL); 436 ASSERT_PTR_NE(k1->cert->principals[3], NULL);
437 k1->cert->nprincipals = 4;
437 k1->cert->valid_after = 0; 438 k1->cert->valid_after = 0;
438 k1->cert->valid_before = (u_int64_t)-1; 439 k1->cert->valid_before = (u_int64_t)-1;
440 sshbuf_free(k1->cert->critical);
439 k1->cert->critical = sshbuf_new(); 441 k1->cert->critical = sshbuf_new();
440 ASSERT_PTR_NE(k1->cert->critical, NULL); 442 ASSERT_PTR_NE(k1->cert->critical, NULL);
443 sshbuf_free(k1->cert->extensions);
441 k1->cert->extensions = sshbuf_new(); 444 k1->cert->extensions = sshbuf_new();
442 ASSERT_PTR_NE(k1->cert->extensions, NULL); 445 ASSERT_PTR_NE(k1->cert->extensions, NULL);
443 put_opt(k1->cert->critical, "force-command", "/usr/bin/true"); 446 put_opt(k1->cert->critical, "force-command", "/usr/bin/true");
diff --git a/regress/valgrind-unit.sh b/regress/valgrind-unit.sh
index 433cb069a..4143ead4b 100755
--- a/regress/valgrind-unit.sh
+++ b/regress/valgrind-unit.sh
@@ -7,10 +7,12 @@ UNIT_ARGS="$@"
7test "x$OBJ" = "x" && OBJ=$PWD 7test "x$OBJ" = "x" && OBJ=$PWD
8 8
9# This mostly replicates the logic in test-exec.sh for running the 9# This mostly replicates the logic in test-exec.sh for running the
10# regress tests under valgrind. 10# regress tests under valgrind, except that we unconditionally enable
11# leak checking because the unit tests should be clean.
12VG_LEAK="--leak-check=full"
11VG_TEST=`basename $UNIT_BINARY` 13VG_TEST=`basename $UNIT_BINARY`
12VG_LOG="$OBJ/valgrind-out/${VG_TEST}.%p" 14VG_LOG="$OBJ/valgrind-out/${VG_TEST}.%p"
13VG_OPTS="--track-origins=yes --leak-check=full --log-file=${VG_LOG}" 15VG_OPTS="--track-origins=yes $VG_LEAK --log-file=${VG_LOG}"
14VG_OPTS="$VG_OPTS --trace-children=yes" 16VG_OPTS="$VG_OPTS --trace-children=yes"
15VG_PATH="valgrind" 17VG_PATH="valgrind"
16if [ "x$VALGRIND_PATH" != "x" ]; then 18if [ "x$VALGRIND_PATH" != "x" ]; then
diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
index ca75cc719..12c4ee130 100644
--- a/sandbox-seccomp-filter.c
+++ b/sandbox-seccomp-filter.c
@@ -166,6 +166,12 @@ static const struct sock_filter preauth_insns[] = {
166#ifdef __NR_exit_group 166#ifdef __NR_exit_group
167 SC_ALLOW(__NR_exit_group), 167 SC_ALLOW(__NR_exit_group),
168#endif 168#endif
169#ifdef __NR_geteuid
170 SC_ALLOW(__NR_geteuid),
171#endif
172#ifdef __NR_geteuid32
173 SC_ALLOW(__NR_geteuid32),
174#endif
169#ifdef __NR_getpgid 175#ifdef __NR_getpgid
170 SC_ALLOW(__NR_getpgid), 176 SC_ALLOW(__NR_getpgid),
171#endif 177#endif
@@ -178,6 +184,12 @@ static const struct sock_filter preauth_insns[] = {
178#ifdef __NR_gettimeofday 184#ifdef __NR_gettimeofday
179 SC_ALLOW(__NR_gettimeofday), 185 SC_ALLOW(__NR_gettimeofday),
180#endif 186#endif
187#ifdef __NR_getuid
188 SC_ALLOW(__NR_getuid),
189#endif
190#ifdef __NR_getuid32
191 SC_ALLOW(__NR_getuid32),
192#endif
181#ifdef __NR_madvise 193#ifdef __NR_madvise
182 SC_ALLOW(__NR_madvise), 194 SC_ALLOW(__NR_madvise),
183#endif 195#endif
@@ -193,6 +205,9 @@ static const struct sock_filter preauth_insns[] = {
193#ifdef __NR_munmap 205#ifdef __NR_munmap
194 SC_ALLOW(__NR_munmap), 206 SC_ALLOW(__NR_munmap),
195#endif 207#endif
208#ifdef __NR_nanosleep
209 SC_ALLOW(__NR_nanosleep),
210#endif
196#ifdef __NR__newselect 211#ifdef __NR__newselect
197 SC_ALLOW(__NR__newselect), 212 SC_ALLOW(__NR__newselect),
198#endif 213#endif
diff --git a/sandbox-systrace.c b/sandbox-systrace.c
index b4d8d04ca..add4c46d0 100644
--- a/sandbox-systrace.c
+++ b/sandbox-systrace.c
@@ -59,6 +59,7 @@ static const struct sandbox_policy preauth_policy[] = {
59 { SYS_getpgid, SYSTR_POLICY_PERMIT }, 59 { SYS_getpgid, SYSTR_POLICY_PERMIT },
60 { SYS_clock_gettime, SYSTR_POLICY_PERMIT }, 60 { SYS_clock_gettime, SYSTR_POLICY_PERMIT },
61 { SYS_gettimeofday, SYSTR_POLICY_PERMIT }, 61 { SYS_gettimeofday, SYSTR_POLICY_PERMIT },
62 { SYS_nanosleep, SYSTR_POLICY_PERMIT },
62 { SYS_sigprocmask, SYSTR_POLICY_PERMIT }, 63 { SYS_sigprocmask, SYSTR_POLICY_PERMIT },
63 64
64#ifdef SYS_getentropy 65#ifdef SYS_getentropy
diff --git a/scp.0 b/scp.0
index 0089ed80f..11516924b 100644
--- a/scp.0
+++ b/scp.0
@@ -114,10 +114,10 @@ DESCRIPTION
114 SendEnv 114 SendEnv
115 ServerAliveInterval 115 ServerAliveInterval
116 ServerAliveCountMax 116 ServerAliveCountMax
117 SetEnv
117 StrictHostKeyChecking 118 StrictHostKeyChecking
118 TCPKeepAlive 119 TCPKeepAlive
119 UpdateHostKeys 120 UpdateHostKeys
120 UsePrivilegedPort
121 User 121 User
122 UserKnownHostsFile 122 UserKnownHostsFile
123 VerifyHostKeyDNS 123 VerifyHostKeyDNS
@@ -159,4 +159,4 @@ AUTHORS
159 Timo Rinne <tri@iki.fi> 159 Timo Rinne <tri@iki.fi>
160 Tatu Ylonen <ylo@cs.hut.fi> 160 Tatu Ylonen <ylo@cs.hut.fi>
161 161
162OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 162OpenBSD 6.4 July 19, 2018 OpenBSD 6.4
diff --git a/scp.1 b/scp.1
index 8d251e34a..92abcaf07 100644
--- a/scp.1
+++ b/scp.1
@@ -8,9 +8,9 @@
8.\" 8.\"
9.\" Created: Sun May 7 00:14:37 1995 ylo 9.\" Created: Sun May 7 00:14:37 1995 ylo
10.\" 10.\"
11.\" $OpenBSD: scp.1,v 1.77 2018/02/23 07:38:09 jmc Exp $ 11.\" $OpenBSD: scp.1,v 1.80 2018/07/19 10:28:47 dtucker Exp $
12.\" 12.\"
13.Dd $Mdocdate: February 23 2018 $ 13.Dd $Mdocdate: July 19 2018 $
14.Dt SCP 1 14.Dt SCP 1
15.Os 15.Os
16.Sh NAME 16.Sh NAME
@@ -173,10 +173,10 @@ For full details of the options listed below, and their possible values, see
173.It SendEnv 173.It SendEnv
174.It ServerAliveInterval 174.It ServerAliveInterval
175.It ServerAliveCountMax 175.It ServerAliveCountMax
176.It SetEnv
176.It StrictHostKeyChecking 177.It StrictHostKeyChecking
177.It TCPKeepAlive 178.It TCPKeepAlive
178.It UpdateHostKeys 179.It UpdateHostKeys
179.It UsePrivilegedPort
180.It User 180.It User
181.It UserKnownHostsFile 181.It UserKnownHostsFile
182.It VerifyHostKeyDNS 182.It VerifyHostKeyDNS
diff --git a/scp.c b/scp.c
index 31e6709fb..60682c687 100644
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: scp.c,v 1.195 2018/02/10 06:15:12 djm Exp $ */ 1/* $OpenBSD: scp.c,v 1.197 2018/06/01 04:31:48 dtucker Exp $ */
2/* 2/*
3 * scp - secure remote copy. This is basically patched BSD rcp which 3 * scp - secure remote copy. This is basically patched BSD rcp which
4 * uses ssh to do the data transfer (instead of using rcmd). 4 * uses ssh to do the data transfer (instead of using rcmd).
@@ -311,7 +311,7 @@ do_cmd(char *host, char *remuser, int port, char *cmd, int *fdin, int *fdout)
311} 311}
312 312
313/* 313/*
314 * This functions executes a command simlar to do_cmd(), but expects the 314 * This function executes a command similar to do_cmd(), but expects the
315 * input and output descriptors to be setup by a previous call to do_cmd(). 315 * input and output descriptors to be setup by a previous call to do_cmd().
316 * This way the input and output of two commands can be connected. 316 * This way the input and output of two commands can be connected.
317 */ 317 */
@@ -1092,6 +1092,8 @@ sink(int argc, char **argv)
1092 SCREWUP("bad mode"); 1092 SCREWUP("bad mode");
1093 mode = (mode << 3) | (*cp - '0'); 1093 mode = (mode << 3) | (*cp - '0');
1094 } 1094 }
1095 if (!pflag)
1096 mode &= ~mask;
1095 if (*cp++ != ' ') 1097 if (*cp++ != ' ')
1096 SCREWUP("mode not delimited"); 1098 SCREWUP("mode not delimited");
1097 1099
diff --git a/servconf.c b/servconf.c
index 0f0d09068..c0f6af0be 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
1 1
2/* $OpenBSD: servconf.c,v 1.326 2018/03/01 20:32:16 markus Exp $ */ 2/* $OpenBSD: servconf.c,v 1.340 2018/08/12 20:19:13 djm Exp $ */
3/* 3/*
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved 5 * All rights reserved
@@ -45,13 +45,13 @@
45#include "xmalloc.h" 45#include "xmalloc.h"
46#include "ssh.h" 46#include "ssh.h"
47#include "log.h" 47#include "log.h"
48#include "buffer.h" 48#include "sshbuf.h"
49#include "misc.h" 49#include "misc.h"
50#include "servconf.h" 50#include "servconf.h"
51#include "compat.h" 51#include "compat.h"
52#include "pathnames.h" 52#include "pathnames.h"
53#include "cipher.h" 53#include "cipher.h"
54#include "key.h" 54#include "sshkey.h"
55#include "kex.h" 55#include "kex.h"
56#include "mac.h" 56#include "mac.h"
57#include "match.h" 57#include "match.h"
@@ -59,6 +59,7 @@
59#include "groupaccess.h" 59#include "groupaccess.h"
60#include "canohost.h" 60#include "canohost.h"
61#include "packet.h" 61#include "packet.h"
62#include "ssherr.h"
62#include "hostfile.h" 63#include "hostfile.h"
63#include "auth.h" 64#include "auth.h"
64#include "myproposal.h" 65#include "myproposal.h"
@@ -71,7 +72,7 @@ static void add_one_listen_addr(ServerOptions *, const char *,
71 72
72/* Use of privilege separation or not */ 73/* Use of privilege separation or not */
73extern int use_privsep; 74extern int use_privsep;
74extern Buffer cfg; 75extern struct sshbuf *cfg;
75 76
76/* Initializes the server options to their default values. */ 77/* Initializes the server options to their default values. */
77 78
@@ -130,6 +131,7 @@ initialize_server_options(ServerOptions *options)
130 options->challenge_response_authentication = -1; 131 options->challenge_response_authentication = -1;
131 options->permit_empty_passwd = -1; 132 options->permit_empty_passwd = -1;
132 options->permit_user_env = -1; 133 options->permit_user_env = -1;
134 options->permit_user_env_whitelist = NULL;
133 options->compression = -1; 135 options->compression = -1;
134 options->rekey_limit = -1; 136 options->rekey_limit = -1;
135 options->rekey_interval = -1; 137 options->rekey_interval = -1;
@@ -158,8 +160,10 @@ initialize_server_options(ServerOptions *options)
158 options->client_alive_count_max = -1; 160 options->client_alive_count_max = -1;
159 options->num_authkeys_files = 0; 161 options->num_authkeys_files = 0;
160 options->num_accept_env = 0; 162 options->num_accept_env = 0;
163 options->num_setenv = 0;
161 options->permit_tun = -1; 164 options->permit_tun = -1;
162 options->permitted_opens = NULL; 165 options->permitted_opens = NULL;
166 options->permitted_listens = NULL;
163 options->adm_forced_command = NULL; 167 options->adm_forced_command = NULL;
164 options->chroot_directory = NULL; 168 options->chroot_directory = NULL;
165 options->authorized_keys_command = NULL; 169 options->authorized_keys_command = NULL;
@@ -187,15 +191,29 @@ option_clear_or_none(const char *o)
187static void 191static void
188assemble_algorithms(ServerOptions *o) 192assemble_algorithms(ServerOptions *o)
189{ 193{
190 if (kex_assemble_names(KEX_SERVER_ENCRYPT, &o->ciphers) != 0 || 194 char *all_cipher, *all_mac, *all_kex, *all_key;
191 kex_assemble_names(KEX_SERVER_MAC, &o->macs) != 0 || 195 int r;
192 kex_assemble_names(KEX_SERVER_KEX, &o->kex_algorithms) != 0 || 196
193 kex_assemble_names(KEX_DEFAULT_PK_ALG, 197 all_cipher = cipher_alg_list(',', 0);
194 &o->hostkeyalgorithms) != 0 || 198 all_mac = mac_alg_list(',');
195 kex_assemble_names(KEX_DEFAULT_PK_ALG, 199 all_kex = kex_alg_list(',');
196 &o->hostbased_key_types) != 0 || 200 all_key = sshkey_alg_list(0, 0, 1, ',');
197 kex_assemble_names(KEX_DEFAULT_PK_ALG, &o->pubkey_key_types) != 0) 201#define ASSEMBLE(what, defaults, all) \
198 fatal("kex_assemble_names failed"); 202 do { \
203 if ((r = kex_assemble_names(&o->what, defaults, all)) != 0) \
204 fatal("%s: %s: %s", __func__, #what, ssh_err(r)); \
205 } while (0)
206 ASSEMBLE(ciphers, KEX_SERVER_ENCRYPT, all_cipher);
207 ASSEMBLE(macs, KEX_SERVER_MAC, all_mac);
208 ASSEMBLE(kex_algorithms, KEX_SERVER_KEX, all_kex);
209 ASSEMBLE(hostkeyalgorithms, KEX_DEFAULT_PK_ALG, all_key);
210 ASSEMBLE(hostbased_key_types, KEX_DEFAULT_PK_ALG, all_key);
211 ASSEMBLE(pubkey_key_types, KEX_DEFAULT_PK_ALG, all_key);
212#undef ASSEMBLE
213 free(all_cipher);
214 free(all_mac);
215 free(all_kex);
216 free(all_key);
199} 217}
200 218
201static void 219static void
@@ -327,8 +345,10 @@ fill_default_server_options(ServerOptions *options)
327 options->challenge_response_authentication = 1; 345 options->challenge_response_authentication = 1;
328 if (options->permit_empty_passwd == -1) 346 if (options->permit_empty_passwd == -1)
329 options->permit_empty_passwd = 0; 347 options->permit_empty_passwd = 0;
330 if (options->permit_user_env == -1) 348 if (options->permit_user_env == -1) {
331 options->permit_user_env = 0; 349 options->permit_user_env = 0;
350 options->permit_user_env_whitelist = NULL;
351 }
332 if (options->compression == -1) 352 if (options->compression == -1)
333 options->compression = COMP_DELAYED; 353 options->compression = COMP_DELAYED;
334 if (options->rekey_limit == -1) 354 if (options->rekey_limit == -1)
@@ -372,9 +392,9 @@ fill_default_server_options(ServerOptions *options)
372 if (options->permit_tun == -1) 392 if (options->permit_tun == -1)
373 options->permit_tun = SSH_TUNMODE_NO; 393 options->permit_tun = SSH_TUNMODE_NO;
374 if (options->ip_qos_interactive == -1) 394 if (options->ip_qos_interactive == -1)
375 options->ip_qos_interactive = IPTOS_LOWDELAY; 395 options->ip_qos_interactive = IPTOS_DSCP_AF21;
376 if (options->ip_qos_bulk == -1) 396 if (options->ip_qos_bulk == -1)
377 options->ip_qos_bulk = IPTOS_THROUGHPUT; 397 options->ip_qos_bulk = IPTOS_DSCP_CS1;
378 if (options->version_addendum == NULL) 398 if (options->version_addendum == NULL)
379 options->version_addendum = xstrdup(""); 399 options->version_addendum = xstrdup("");
380 if (options->fwd_opts.streamlocal_bind_mask == (mode_t)-1) 400 if (options->fwd_opts.streamlocal_bind_mask == (mode_t)-1)
@@ -461,8 +481,8 @@ typedef enum {
461 sHostKeyAlgorithms, 481 sHostKeyAlgorithms,
462 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, 482 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile,
463 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, 483 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor,
464 sAcceptEnv, sPermitTunnel, 484 sAcceptEnv, sSetEnv, sPermitTunnel,
465 sMatch, sPermitOpen, sForceCommand, sChrootDirectory, 485 sMatch, sPermitOpen, sPermitListen, sForceCommand, sChrootDirectory,
466 sUsePrivilegeSeparation, sAllowAgentForwarding, 486 sUsePrivilegeSeparation, sAllowAgentForwarding,
467 sHostCertificate, 487 sHostCertificate,
468 sRevokedKeys, sTrustedUserCAKeys, sAuthorizedPrincipalsFile, 488 sRevokedKeys, sTrustedUserCAKeys, sAuthorizedPrincipalsFile,
@@ -544,7 +564,7 @@ static struct {
544 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, 564 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL },
545 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, 565 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL },
546 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, 566 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL },
547 { "skeyauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, /* alias */ 567 { "skeyauthentication", sDeprecated, SSHCFG_GLOBAL },
548 { "checkmail", sDeprecated, SSHCFG_GLOBAL }, 568 { "checkmail", sDeprecated, SSHCFG_GLOBAL },
549 { "listenaddress", sListenAddress, SSHCFG_GLOBAL }, 569 { "listenaddress", sListenAddress, SSHCFG_GLOBAL },
550 { "addressfamily", sAddressFamily, SSHCFG_GLOBAL }, 570 { "addressfamily", sAddressFamily, SSHCFG_GLOBAL },
@@ -592,11 +612,13 @@ static struct {
592 { "authorizedkeysfile2", sDeprecated, SSHCFG_ALL }, 612 { "authorizedkeysfile2", sDeprecated, SSHCFG_ALL },
593 { "useprivilegeseparation", sDeprecated, SSHCFG_GLOBAL}, 613 { "useprivilegeseparation", sDeprecated, SSHCFG_GLOBAL},
594 { "acceptenv", sAcceptEnv, SSHCFG_ALL }, 614 { "acceptenv", sAcceptEnv, SSHCFG_ALL },
615 { "setenv", sSetEnv, SSHCFG_ALL },
595 { "permittunnel", sPermitTunnel, SSHCFG_ALL }, 616 { "permittunnel", sPermitTunnel, SSHCFG_ALL },
596 { "permittty", sPermitTTY, SSHCFG_ALL }, 617 { "permittty", sPermitTTY, SSHCFG_ALL },
597 { "permituserrc", sPermitUserRC, SSHCFG_ALL }, 618 { "permituserrc", sPermitUserRC, SSHCFG_ALL },
598 { "match", sMatch, SSHCFG_ALL }, 619 { "match", sMatch, SSHCFG_ALL },
599 { "permitopen", sPermitOpen, SSHCFG_ALL }, 620 { "permitopen", sPermitOpen, SSHCFG_ALL },
621 { "permitlisten", sPermitListen, SSHCFG_ALL },
600 { "forcecommand", sForceCommand, SSHCFG_ALL }, 622 { "forcecommand", sForceCommand, SSHCFG_ALL },
601 { "chrootdirectory", sChrootDirectory, SSHCFG_ALL }, 623 { "chrootdirectory", sChrootDirectory, SSHCFG_ALL },
602 { "hostcertificate", sHostCertificate, SSHCFG_GLOBAL }, 624 { "hostcertificate", sHostCertificate, SSHCFG_GLOBAL },
@@ -632,6 +654,20 @@ static struct {
632 { -1, NULL } 654 { -1, NULL }
633}; 655};
634 656
657/* Returns an opcode name from its number */
658
659static const char *
660lookup_opcode_name(ServerOpCodes code)
661{
662 u_int i;
663
664 for (i = 0; keywords[i].name != NULL; i++)
665 if (keywords[i].opcode == code)
666 return(keywords[i].name);
667 return "UNKNOWN";
668}
669
670
635/* 671/*
636 * Returns the number of the token pointed to by cp or sBadOption. 672 * Returns the number of the token pointed to by cp or sBadOption.
637 */ 673 */
@@ -814,43 +850,59 @@ process_queued_listen_addrs(ServerOptions *options)
814} 850}
815 851
816/* 852/*
817 * Inform channels layer of permitopen options from configuration. 853 * Inform channels layer of permitopen options for a single forwarding
854 * direction (local/remote).
818 */ 855 */
819void 856static void
820process_permitopen(struct ssh *ssh, ServerOptions *options) 857process_permitopen_list(struct ssh *ssh, ServerOpCodes opcode,
858 char **opens, u_int num_opens)
821{ 859{
822 u_int i; 860 u_int i;
823 int port; 861 int port;
824 char *host, *arg, *oarg; 862 char *host, *arg, *oarg;
863 int where = opcode == sPermitOpen ? FORWARD_LOCAL : FORWARD_REMOTE;
864 const char *what = lookup_opcode_name(opcode);
825 865
826 channel_clear_adm_permitted_opens(ssh); 866 channel_clear_permission(ssh, FORWARD_ADM, where);
827 if (options->num_permitted_opens == 0) 867 if (num_opens == 0)
828 return; /* permit any */ 868 return; /* permit any */
829 869
830 /* handle keywords: "any" / "none" */ 870 /* handle keywords: "any" / "none" */
831 if (options->num_permitted_opens == 1 && 871 if (num_opens == 1 && strcmp(opens[0], "any") == 0)
832 strcmp(options->permitted_opens[0], "any") == 0)
833 return; 872 return;
834 if (options->num_permitted_opens == 1 && 873 if (num_opens == 1 && strcmp(opens[0], "none") == 0) {
835 strcmp(options->permitted_opens[0], "none") == 0) { 874 channel_disable_admin(ssh, where);
836 channel_disable_adm_local_opens(ssh);
837 return; 875 return;
838 } 876 }
839 /* Otherwise treat it as a list of permitted host:port */ 877 /* Otherwise treat it as a list of permitted host:port */
840 for (i = 0; i < options->num_permitted_opens; i++) { 878 for (i = 0; i < num_opens; i++) {
841 oarg = arg = xstrdup(options->permitted_opens[i]); 879 oarg = arg = xstrdup(opens[i]);
842 host = hpdelim(&arg); 880 host = hpdelim(&arg);
843 if (host == NULL) 881 if (host == NULL)
844 fatal("%s: missing host in PermitOpen", __func__); 882 fatal("%s: missing host in %s", __func__, what);
845 host = cleanhostname(host); 883 host = cleanhostname(host);
846 if (arg == NULL || ((port = permitopen_port(arg)) < 0)) 884 if (arg == NULL || ((port = permitopen_port(arg)) < 0))
847 fatal("%s: bad port number in PermitOpen", __func__); 885 fatal("%s: bad port number in %s", __func__, what);
848 /* Send it to channels layer */ 886 /* Send it to channels layer */
849 channel_add_adm_permitted_opens(ssh, host, port); 887 channel_add_permission(ssh, FORWARD_ADM,
888 where, host, port);
850 free(oarg); 889 free(oarg);
851 } 890 }
852} 891}
853 892
893/*
894 * Inform channels layer of permitopen options from configuration.
895 */
896void
897process_permitopen(struct ssh *ssh, ServerOptions *options)
898{
899 process_permitopen_list(ssh, sPermitOpen,
900 options->permitted_opens, options->num_permitted_opens);
901 process_permitopen_list(ssh, sPermitListen,
902 options->permitted_listens,
903 options->num_permitted_listens);
904}
905
854struct connection_info * 906struct connection_info *
855get_connection_info(int populate, int use_dns) 907get_connection_info(int populate, int use_dns)
856{ 908{
@@ -1144,12 +1196,12 @@ process_server_config_line(ServerOptions *options, char *line,
1144 const char *filename, int linenum, int *activep, 1196 const char *filename, int linenum, int *activep,
1145 struct connection_info *connectinfo) 1197 struct connection_info *connectinfo)
1146{ 1198{
1147 char *cp, **charptr, *arg, *arg2, *p; 1199 char *cp, ***chararrayptr, **charptr, *arg, *arg2, *p;
1148 int cmdline = 0, *intptr, value, value2, n, port; 1200 int cmdline = 0, *intptr, value, value2, n, port;
1149 SyslogFacility *log_facility_ptr; 1201 SyslogFacility *log_facility_ptr;
1150 LogLevel *log_level_ptr; 1202 LogLevel *log_level_ptr;
1151 ServerOpCodes opcode; 1203 ServerOpCodes opcode;
1152 u_int i, flags = 0; 1204 u_int i, *uintptr, uvalue, flags = 0;
1153 size_t len; 1205 size_t len;
1154 long long val64; 1206 long long val64;
1155 const struct multistate *multistate_ptr; 1207 const struct multistate *multistate_ptr;
@@ -1480,7 +1532,29 @@ process_server_config_line(ServerOptions *options, char *line,
1480 1532
1481 case sPermitUserEnvironment: 1533 case sPermitUserEnvironment:
1482 intptr = &options->permit_user_env; 1534 intptr = &options->permit_user_env;
1483 goto parse_flag; 1535 charptr = &options->permit_user_env_whitelist;
1536 arg = strdelim(&cp);
1537 if (!arg || *arg == '\0')
1538 fatal("%s line %d: missing argument.",
1539 filename, linenum);
1540 value = 0;
1541 p = NULL;
1542 if (strcmp(arg, "yes") == 0)
1543 value = 1;
1544 else if (strcmp(arg, "no") == 0)
1545 value = 0;
1546 else {
1547 /* Pattern-list specified */
1548 value = 1;
1549 p = xstrdup(arg);
1550 }
1551 if (*activep && *intptr == -1) {
1552 *intptr = value;
1553 *charptr = p;
1554 p = NULL;
1555 }
1556 free(p);
1557 break;
1484 1558
1485 case sCompression: 1559 case sCompression:
1486 intptr = &options->compression; 1560 intptr = &options->compression;
@@ -1769,6 +1843,19 @@ process_server_config_line(ServerOptions *options, char *line,
1769 } 1843 }
1770 break; 1844 break;
1771 1845
1846 case sSetEnv:
1847 uvalue = options->num_setenv;
1848 while ((arg = strdelimw(&cp)) && *arg != '\0') {
1849 if (strchr(arg, '=') == NULL)
1850 fatal("%s line %d: Invalid environment.",
1851 filename, linenum);
1852 if (!*activep || uvalue != 0)
1853 continue;
1854 array_append(filename, linenum, "SetEnv",
1855 &options->setenv, &options->num_setenv, arg);
1856 }
1857 break;
1858
1772 case sPermitTunnel: 1859 case sPermitTunnel:
1773 intptr = &options->permit_tun; 1860 intptr = &options->permit_tun;
1774 arg = strdelim(&cp); 1861 arg = strdelim(&cp);
@@ -1799,36 +1886,57 @@ process_server_config_line(ServerOptions *options, char *line,
1799 *activep = value; 1886 *activep = value;
1800 break; 1887 break;
1801 1888
1889 case sPermitListen:
1802 case sPermitOpen: 1890 case sPermitOpen:
1891 if (opcode == sPermitListen) {
1892 uintptr = &options->num_permitted_listens;
1893 chararrayptr = &options->permitted_listens;
1894 } else {
1895 uintptr = &options->num_permitted_opens;
1896 chararrayptr = &options->permitted_opens;
1897 }
1803 arg = strdelim(&cp); 1898 arg = strdelim(&cp);
1804 if (!arg || *arg == '\0') 1899 if (!arg || *arg == '\0')
1805 fatal("%s line %d: missing PermitOpen specification", 1900 fatal("%s line %d: missing %s specification",
1806 filename, linenum); 1901 filename, linenum, lookup_opcode_name(opcode));
1807 value = options->num_permitted_opens; /* modified later */ 1902 uvalue = *uintptr; /* modified later */
1808 if (strcmp(arg, "any") == 0 || strcmp(arg, "none") == 0) { 1903 if (strcmp(arg, "any") == 0 || strcmp(arg, "none") == 0) {
1809 if (*activep && value == 0) { 1904 if (*activep && uvalue == 0) {
1810 options->num_permitted_opens = 1; 1905 *uintptr = 1;
1811 options->permitted_opens = xcalloc(1, 1906 *chararrayptr = xcalloc(1,
1812 sizeof(*options->permitted_opens)); 1907 sizeof(**chararrayptr));
1813 options->permitted_opens[0] = xstrdup(arg); 1908 (*chararrayptr)[0] = xstrdup(arg);
1814 } 1909 }
1815 break; 1910 break;
1816 } 1911 }
1817 for (; arg != NULL && *arg != '\0'; arg = strdelim(&cp)) { 1912 for (; arg != NULL && *arg != '\0'; arg = strdelim(&cp)) {
1818 arg2 = xstrdup(arg); 1913 if (opcode == sPermitListen &&
1819 p = hpdelim(&arg); 1914 strchr(arg, ':') == NULL) {
1820 if (p == NULL) 1915 /*
1821 fatal("%s line %d: missing host in PermitOpen", 1916 * Allow bare port number for PermitListen
1822 filename, linenum); 1917 * to indicate a wildcard listen host.
1823 p = cleanhostname(p); 1918 */
1824 if (arg == NULL || ((port = permitopen_port(arg)) < 0)) 1919 xasprintf(&arg2, "*:%s", arg);
1825 fatal("%s line %d: bad port number in " 1920 } else {
1826 "PermitOpen", filename, linenum); 1921 arg2 = xstrdup(arg);
1827 if (*activep && value == 0) { 1922 p = hpdelim(&arg);
1923 if (p == NULL) {
1924 fatal("%s line %d: missing host in %s",
1925 filename, linenum,
1926 lookup_opcode_name(opcode));
1927 }
1928 p = cleanhostname(p);
1929 }
1930 if (arg == NULL ||
1931 ((port = permitopen_port(arg)) < 0)) {
1932 fatal("%s line %d: bad port number in %s",
1933 filename, linenum,
1934 lookup_opcode_name(opcode));
1935 }
1936 if (*activep && uvalue == 0) {
1828 array_append(filename, linenum, 1937 array_append(filename, linenum,
1829 "PermitOpen", 1938 lookup_opcode_name(opcode),
1830 &options->permitted_opens, 1939 chararrayptr, uintptr, arg2);
1831 &options->num_permitted_opens, arg2);
1832 } 1940 }
1833 free(arg2); 1941 free(arg2);
1834 } 1942 }
@@ -1951,7 +2059,7 @@ process_server_config_line(ServerOptions *options, char *line,
1951 case sAuthenticationMethods: 2059 case sAuthenticationMethods:
1952 if (options->num_auth_methods == 0) { 2060 if (options->num_auth_methods == 0) {
1953 value = 0; /* seen "any" pseudo-method */ 2061 value = 0; /* seen "any" pseudo-method */
1954 value2 = 0; /* sucessfully parsed any method */ 2062 value2 = 0; /* successfully parsed any method */
1955 while ((arg = strdelim(&cp)) && *arg != '\0') { 2063 while ((arg = strdelim(&cp)) && *arg != '\0') {
1956 if (strcmp(arg, "any") == 0) { 2064 if (strcmp(arg, "any") == 0) {
1957 if (options->num_auth_methods > 0) { 2065 if (options->num_auth_methods > 0) {
@@ -2056,22 +2164,21 @@ process_server_config_line(ServerOptions *options, char *line,
2056/* Reads the server configuration file. */ 2164/* Reads the server configuration file. */
2057 2165
2058void 2166void
2059load_server_config(const char *filename, Buffer *conf) 2167load_server_config(const char *filename, struct sshbuf *conf)
2060{ 2168{
2061 char line[4096], *cp; 2169 char *line = NULL, *cp;
2170 size_t linesize = 0;
2062 FILE *f; 2171 FILE *f;
2063 int lineno = 0; 2172 int r, lineno = 0;
2064 2173
2065 debug2("%s: filename %s", __func__, filename); 2174 debug2("%s: filename %s", __func__, filename);
2066 if ((f = fopen(filename, "r")) == NULL) { 2175 if ((f = fopen(filename, "r")) == NULL) {
2067 perror(filename); 2176 perror(filename);
2068 exit(1); 2177 exit(1);
2069 } 2178 }
2070 buffer_clear(conf); 2179 sshbuf_reset(conf);
2071 while (fgets(line, sizeof(line), f)) { 2180 while (getline(&line, &linesize, f) != -1) {
2072 lineno++; 2181 lineno++;
2073 if (strlen(line) == sizeof(line) - 1)
2074 fatal("%s line %d too long", filename, lineno);
2075 /* 2182 /*
2076 * Trim out comments and strip whitespace 2183 * Trim out comments and strip whitespace
2077 * NB - preserve newlines, they are needed to reproduce 2184 * NB - preserve newlines, they are needed to reproduce
@@ -2080,12 +2187,14 @@ load_server_config(const char *filename, Buffer *conf)
2080 if ((cp = strchr(line, '#')) != NULL) 2187 if ((cp = strchr(line, '#')) != NULL)
2081 memcpy(cp, "\n", 2); 2188 memcpy(cp, "\n", 2);
2082 cp = line + strspn(line, " \t\r"); 2189 cp = line + strspn(line, " \t\r");
2083 2190 if ((r = sshbuf_put(conf, cp, strlen(cp))) != 0)
2084 buffer_append(conf, cp, strlen(cp)); 2191 fatal("%s: buffer error: %s", __func__, ssh_err(r));
2085 } 2192 }
2086 buffer_append(conf, "\0", 1); 2193 free(line);
2194 if ((r = sshbuf_put_u8(conf, 0)) != 0)
2195 fatal("%s: buffer error: %s", __func__, ssh_err(r));
2087 fclose(f); 2196 fclose(f);
2088 debug2("%s: done config len = %d", __func__, buffer_len(conf)); 2197 debug2("%s: done config len = %zu", __func__, sshbuf_len(conf));
2089} 2198}
2090 2199
2091void 2200void
@@ -2095,7 +2204,7 @@ parse_server_match_config(ServerOptions *options,
2095 ServerOptions mo; 2204 ServerOptions mo;
2096 2205
2097 initialize_server_options(&mo); 2206 initialize_server_options(&mo);
2098 parse_server_config(&mo, "reprocess config", &cfg, connectinfo); 2207 parse_server_config(&mo, "reprocess config", cfg, connectinfo);
2099 copy_set_server_options(options, &mo, 0); 2208 copy_set_server_options(options, &mo, 0);
2100} 2209}
2101 2210
@@ -2135,7 +2244,7 @@ int parse_server_match_testspec(struct connection_info *ci, char *spec)
2135 * 2244 *
2136 * If the preauth flag is set, we do not bother copying the string or 2245 * If the preauth flag is set, we do not bother copying the string or
2137 * array values that are not used pre-authentication, because any that we 2246 * array values that are not used pre-authentication, because any that we
2138 * do use must be explictly sent in mm_getpwnamallow(). 2247 * do use must be explicitly sent in mm_getpwnamallow().
2139 */ 2248 */
2140void 2249void
2141copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth) 2250copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
@@ -2239,13 +2348,13 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
2239#undef M_CP_STRARRAYOPT 2348#undef M_CP_STRARRAYOPT
2240 2349
2241void 2350void
2242parse_server_config(ServerOptions *options, const char *filename, Buffer *conf, 2351parse_server_config(ServerOptions *options, const char *filename,
2243 struct connection_info *connectinfo) 2352 struct sshbuf *conf, struct connection_info *connectinfo)
2244{ 2353{
2245 int active, linenum, bad_options = 0; 2354 int active, linenum, bad_options = 0;
2246 char *cp, *obuf, *cbuf; 2355 char *cp, *obuf, *cbuf;
2247 2356
2248 debug2("%s: config %s len %d", __func__, filename, buffer_len(conf)); 2357 debug2("%s: config %s len %zu", __func__, filename, sshbuf_len(conf));
2249 2358
2250 if ((obuf = cbuf = sshbuf_dup_string(conf)) == NULL) 2359 if ((obuf = cbuf = sshbuf_dup_string(conf)) == NULL)
2251 fatal("%s: sshbuf_dup_string failed", __func__); 2360 fatal("%s: sshbuf_dup_string failed", __func__);
@@ -2307,17 +2416,6 @@ fmt_intarg(ServerOpCodes code, int val)
2307 } 2416 }
2308} 2417}
2309 2418
2310static const char *
2311lookup_opcode_name(ServerOpCodes code)
2312{
2313 u_int i;
2314
2315 for (i = 0; keywords[i].name != NULL; i++)
2316 if (keywords[i].opcode == code)
2317 return(keywords[i].name);
2318 return "UNKNOWN";
2319}
2320
2321static void 2419static void
2322dump_cfg_int(ServerOpCodes code, int val) 2420dump_cfg_int(ServerOpCodes code, int val)
2323{ 2421{
@@ -2471,7 +2569,6 @@ dump_config(ServerOptions *o)
2471 dump_cfg_fmtint(sStrictModes, o->strict_modes); 2569 dump_cfg_fmtint(sStrictModes, o->strict_modes);
2472 dump_cfg_fmtint(sTCPKeepAlive, o->tcp_keep_alive); 2570 dump_cfg_fmtint(sTCPKeepAlive, o->tcp_keep_alive);
2473 dump_cfg_fmtint(sEmptyPasswd, o->permit_empty_passwd); 2571 dump_cfg_fmtint(sEmptyPasswd, o->permit_empty_passwd);
2474 dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env);
2475 dump_cfg_fmtint(sCompression, o->compression); 2572 dump_cfg_fmtint(sCompression, o->compression);
2476 dump_cfg_fmtint(sGatewayPorts, o->fwd_opts.gateway_ports); 2573 dump_cfg_fmtint(sGatewayPorts, o->fwd_opts.gateway_ports);
2477 dump_cfg_fmtint(sUseDNS, o->use_dns); 2574 dump_cfg_fmtint(sUseDNS, o->use_dns);
@@ -2528,6 +2625,7 @@ dump_config(ServerOptions *o)
2528 dump_cfg_strarray(sAllowGroups, o->num_allow_groups, o->allow_groups); 2625 dump_cfg_strarray(sAllowGroups, o->num_allow_groups, o->allow_groups);
2529 dump_cfg_strarray(sDenyGroups, o->num_deny_groups, o->deny_groups); 2626 dump_cfg_strarray(sDenyGroups, o->num_deny_groups, o->deny_groups);
2530 dump_cfg_strarray(sAcceptEnv, o->num_accept_env, o->accept_env); 2627 dump_cfg_strarray(sAcceptEnv, o->num_accept_env, o->accept_env);
2628 dump_cfg_strarray(sSetEnv, o->num_setenv, o->setenv);
2531 dump_cfg_strarray_oneline(sAuthenticationMethods, 2629 dump_cfg_strarray_oneline(sAuthenticationMethods,
2532 o->num_auth_methods, o->auth_methods); 2630 o->num_auth_methods, o->auth_methods);
2533 2631
@@ -2562,4 +2660,20 @@ dump_config(ServerOptions *o)
2562 printf(" %s", o->permitted_opens[i]); 2660 printf(" %s", o->permitted_opens[i]);
2563 } 2661 }
2564 printf("\n"); 2662 printf("\n");
2663 printf("permitlisten");
2664 if (o->num_permitted_listens == 0)
2665 printf(" any");
2666 else {
2667 for (i = 0; i < o->num_permitted_listens; i++)
2668 printf(" %s", o->permitted_listens[i]);
2669 }
2670 printf("\n");
2671
2672 if (o->permit_user_env_whitelist == NULL) {
2673 dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env);
2674 } else {
2675 printf("permituserenvironment %s\n",
2676 o->permit_user_env_whitelist);
2677 }
2678
2565} 2679}
diff --git a/servconf.h b/servconf.h
index 37a0fb1a3..557521d73 100644
--- a/servconf.h
+++ b/servconf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: servconf.h,v 1.130 2017/10/25 00:19:47 djm Exp $ */ 1/* $OpenBSD: servconf.h,v 1.136 2018/07/09 21:26:02 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -32,12 +32,6 @@
32#define PRIVSEP_ON 1 32#define PRIVSEP_ON 1
33#define PRIVSEP_NOSANDBOX 2 33#define PRIVSEP_NOSANDBOX 2
34 34
35/* AllowTCPForwarding */
36#define FORWARD_DENY 0
37#define FORWARD_REMOTE (1)
38#define FORWARD_LOCAL (1<<1)
39#define FORWARD_ALLOW (FORWARD_REMOTE|FORWARD_LOCAL)
40
41/* PermitOpen */ 35/* PermitOpen */
42#define PERMITOPEN_ANY 0 36#define PERMITOPEN_ANY 0
43#define PERMITOPEN_NONE -2 37#define PERMITOPEN_NONE -2
@@ -139,6 +133,7 @@ typedef struct {
139 int permit_empty_passwd; /* If false, do not permit empty 133 int permit_empty_passwd; /* If false, do not permit empty
140 * passwords. */ 134 * passwords. */
141 int permit_user_env; /* If true, read ~/.ssh/environment */ 135 int permit_user_env; /* If true, read ~/.ssh/environment */
136 char *permit_user_env_whitelist; /* pattern-list whitelist */
142 int compression; /* If true, compression is allowed */ 137 int compression; /* If true, compression is allowed */
143 int allow_tcp_forwarding; /* One of FORWARD_* */ 138 int allow_tcp_forwarding; /* One of FORWARD_* */
144 int allow_streamlocal_forwarding; /* One of FORWARD_* */ 139 int allow_streamlocal_forwarding; /* One of FORWARD_* */
@@ -160,6 +155,8 @@ typedef struct {
160 155
161 u_int num_accept_env; 156 u_int num_accept_env;
162 char **accept_env; 157 char **accept_env;
158 u_int num_setenv;
159 char **setenv;
163 160
164 int max_startups_begin; 161 int max_startups_begin;
165 int max_startups_rate; 162 int max_startups_rate;
@@ -187,8 +184,10 @@ typedef struct {
187 184
188 int permit_tun; 185 int permit_tun;
189 186
190 char **permitted_opens; 187 char **permitted_opens; /* May also be one of PERMITOPEN_* */
191 u_int num_permitted_opens; /* May also be one of PERMITOPEN_* */ 188 u_int num_permitted_opens;
189 char **permitted_listens; /* May also be one of PERMITOPEN_* */
190 u_int num_permitted_listens;
192 191
193 char *chroot_directory; 192 char *chroot_directory;
194 char *revoked_keys_file; 193 char *revoked_keys_file;
@@ -209,6 +208,7 @@ typedef struct {
209 208
210 int fingerprint_hash; 209 int fingerprint_hash;
211 int expose_userauth_info; 210 int expose_userauth_info;
211 u_int64_t timing_secret;
212} ServerOptions; 212} ServerOptions;
213 213
214/* Information about the incoming connection as used by Match */ 214/* Information about the incoming connection as used by Match */
@@ -243,6 +243,7 @@ struct connection_info {
243 M_CP_STROPT(hostbased_key_types); \ 243 M_CP_STROPT(hostbased_key_types); \
244 M_CP_STROPT(pubkey_key_types); \ 244 M_CP_STROPT(pubkey_key_types); \
245 M_CP_STROPT(routing_domain); \ 245 M_CP_STROPT(routing_domain); \
246 M_CP_STROPT(permit_user_env_whitelist); \
246 M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \ 247 M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \
247 M_CP_STRARRAYOPT(allow_users, num_allow_users); \ 248 M_CP_STRARRAYOPT(allow_users, num_allow_users); \
248 M_CP_STRARRAYOPT(deny_users, num_deny_users); \ 249 M_CP_STRARRAYOPT(deny_users, num_deny_users); \
@@ -251,6 +252,7 @@ struct connection_info {
251 M_CP_STRARRAYOPT(accept_env, num_accept_env); \ 252 M_CP_STRARRAYOPT(accept_env, num_accept_env); \
252 M_CP_STRARRAYOPT(auth_methods, num_auth_methods); \ 253 M_CP_STRARRAYOPT(auth_methods, num_auth_methods); \
253 M_CP_STRARRAYOPT(permitted_opens, num_permitted_opens); \ 254 M_CP_STRARRAYOPT(permitted_opens, num_permitted_opens); \
255 M_CP_STRARRAYOPT(permitted_listens, num_permitted_listens); \
254 } while (0) 256 } while (0)
255 257
256struct connection_info *get_connection_info(int, int); 258struct connection_info *get_connection_info(int, int);
@@ -259,8 +261,8 @@ void fill_default_server_options(ServerOptions *);
259int process_server_config_line(ServerOptions *, char *, const char *, int, 261int process_server_config_line(ServerOptions *, char *, const char *, int,
260 int *, struct connection_info *); 262 int *, struct connection_info *);
261void process_permitopen(struct ssh *ssh, ServerOptions *options); 263void process_permitopen(struct ssh *ssh, ServerOptions *options);
262void load_server_config(const char *, Buffer *); 264void load_server_config(const char *, struct sshbuf *);
263void parse_server_config(ServerOptions *, const char *, Buffer *, 265void parse_server_config(ServerOptions *, const char *, struct sshbuf *,
264 struct connection_info *); 266 struct connection_info *);
265void parse_server_match_config(ServerOptions *, struct connection_info *); 267void parse_server_match_config(ServerOptions *, struct connection_info *);
266int parse_server_match_testspec(struct connection_info *, char *); 268int parse_server_match_testspec(struct connection_info *, char *);
diff --git a/serverloop.c b/serverloop.c
index d6fe24cc1..7be83e2d3 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: serverloop.c,v 1.205 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: serverloop.c,v 1.209 2018/07/27 05:13:02 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -58,7 +58,7 @@
58#include "openbsd-compat/sys-queue.h" 58#include "openbsd-compat/sys-queue.h"
59#include "xmalloc.h" 59#include "xmalloc.h"
60#include "packet.h" 60#include "packet.h"
61#include "buffer.h" 61#include "sshbuf.h"
62#include "log.h" 62#include "log.h"
63#include "misc.h" 63#include "misc.h"
64#include "servconf.h" 64#include "servconf.h"
@@ -67,7 +67,7 @@
67#include "channels.h" 67#include "channels.h"
68#include "compat.h" 68#include "compat.h"
69#include "ssh2.h" 69#include "ssh2.h"
70#include "key.h" 70#include "sshkey.h"
71#include "cipher.h" 71#include "cipher.h"
72#include "kex.h" 72#include "kex.h"
73#include "hostfile.h" 73#include "hostfile.h"
@@ -103,6 +103,17 @@ static void server_init_dispatch(void);
103/* requested tunnel forwarding interface(s), shared with session.c */ 103/* requested tunnel forwarding interface(s), shared with session.c */
104char *tun_fwd_ifnames = NULL; 104char *tun_fwd_ifnames = NULL;
105 105
106/* returns 1 if bind to specified port by specified user is permitted */
107static int
108bind_permitted(int port, uid_t uid)
109{
110 if (use_privsep)
111 return 1; /* allow system to decide */
112 if (port < IPPORT_RESERVED && uid != 0)
113 return 0;
114 return 1;
115}
116
106/* 117/*
107 * we write to this pipe if a SIGCHLD is caught in order to avoid 118 * we write to this pipe if a SIGCHLD is caught in order to avoid
108 * the race between select() and child_terminated 119 * the race between select() and child_terminated
@@ -145,7 +156,7 @@ notify_done(fd_set *readset)
145 156
146 if (notify_pipe[0] != -1 && FD_ISSET(notify_pipe[0], readset)) 157 if (notify_pipe[0] != -1 && FD_ISSET(notify_pipe[0], readset))
147 while (read(notify_pipe[0], &c, 1) != -1) 158 while (read(notify_pipe[0], &c, 1) != -1)
148 debug2("notify_done: reading"); 159 debug2("%s: reading", __func__);
149} 160}
150 161
151/*ARGSUSED*/ 162/*ARGSUSED*/
@@ -623,7 +634,7 @@ server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh)
623 rwindow = packet_get_int(); 634 rwindow = packet_get_int();
624 rmaxpack = packet_get_int(); 635 rmaxpack = packet_get_int();
625 636
626 debug("server_input_channel_open: ctype %s rchan %d win %d max %d", 637 debug("%s: ctype %s rchan %d win %d max %d", __func__,
627 ctype, rchan, rwindow, rmaxpack); 638 ctype, rchan, rwindow, rmaxpack);
628 639
629 if (strcmp(ctype, "session") == 0) { 640 if (strcmp(ctype, "session") == 0) {
@@ -636,7 +647,7 @@ server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh)
636 c = server_request_tun(ssh); 647 c = server_request_tun(ssh);
637 } 648 }
638 if (c != NULL) { 649 if (c != NULL) {
639 debug("server_input_channel_open: confirm %s", ctype); 650 debug("%s: confirm %s", __func__, ctype);
640 c->remote_id = rchan; 651 c->remote_id = rchan;
641 c->have_remote_id = 1; 652 c->have_remote_id = 1;
642 c->remote_window = rwindow; 653 c->remote_window = rwindow;
@@ -650,7 +661,7 @@ server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh)
650 packet_send(); 661 packet_send();
651 } 662 }
652 } else { 663 } else {
653 debug("server_input_channel_open: failure %s", ctype); 664 debug("%s: failure %s", __func__, ctype);
654 packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); 665 packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE);
655 packet_put_int(rchan); 666 packet_put_int(rchan);
656 packet_put_int(reason); 667 packet_put_int(reason);
@@ -750,11 +761,11 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh)
750 struct passwd *pw = the_authctxt->pw; 761 struct passwd *pw = the_authctxt->pw;
751 762
752 if (pw == NULL || !the_authctxt->valid) 763 if (pw == NULL || !the_authctxt->valid)
753 fatal("server_input_global_request: no/invalid user"); 764 fatal("%s: no/invalid user", __func__);
754 765
755 rtype = packet_get_string(NULL); 766 rtype = packet_get_string(NULL);
756 want_reply = packet_get_char(); 767 want_reply = packet_get_char();
757 debug("server_input_global_request: rtype %s want_reply %d", rtype, want_reply); 768 debug("%s: rtype %s want_reply %d", __func__, rtype, want_reply);
758 769
759 /* -R style forwarding */ 770 /* -R style forwarding */
760 if (strcmp(rtype, "tcpip-forward") == 0) { 771 if (strcmp(rtype, "tcpip-forward") == 0) {
@@ -763,7 +774,7 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh)
763 memset(&fwd, 0, sizeof(fwd)); 774 memset(&fwd, 0, sizeof(fwd));
764 fwd.listen_host = packet_get_string(NULL); 775 fwd.listen_host = packet_get_string(NULL);
765 fwd.listen_port = (u_short)packet_get_int(); 776 fwd.listen_port = (u_short)packet_get_int();
766 debug("server_input_global_request: tcpip-forward listen %s port %d", 777 debug("%s: tcpip-forward listen %s port %d", __func__,
767 fwd.listen_host, fwd.listen_port); 778 fwd.listen_host, fwd.listen_port);
768 779
769 /* check permissions */ 780 /* check permissions */
@@ -802,7 +813,7 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh)
802 813
803 memset(&fwd, 0, sizeof(fwd)); 814 memset(&fwd, 0, sizeof(fwd));
804 fwd.listen_path = packet_get_string(NULL); 815 fwd.listen_path = packet_get_string(NULL);
805 debug("server_input_global_request: streamlocal-forward listen path %s", 816 debug("%s: streamlocal-forward listen path %s", __func__,
806 fwd.listen_path); 817 fwd.listen_path);
807 818
808 /* check permissions */ 819 /* check permissions */
diff --git a/session.c b/session.c
index 58826db16..f2cf52006 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: session.c,v 1.294 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: session.c,v 1.305 2018/07/25 13:56:23 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved 4 * All rights reserved
@@ -69,12 +69,13 @@
69#include "ssh2.h" 69#include "ssh2.h"
70#include "sshpty.h" 70#include "sshpty.h"
71#include "packet.h" 71#include "packet.h"
72#include "buffer.h" 72#include "sshbuf.h"
73#include "ssherr.h"
73#include "match.h" 74#include "match.h"
74#include "uidswap.h" 75#include "uidswap.h"
75#include "compat.h" 76#include "compat.h"
76#include "channels.h" 77#include "channels.h"
77#include "key.h" 78#include "sshkey.h"
78#include "cipher.h" 79#include "cipher.h"
79#ifdef GSSAPI 80#ifdef GSSAPI
80#include "ssh-gss.h" 81#include "ssh-gss.h"
@@ -139,7 +140,7 @@ extern int debug_flag;
139extern u_int utmp_len; 140extern u_int utmp_len;
140extern int startup_pipe; 141extern int startup_pipe;
141extern void destroy_sensitive_data(void); 142extern void destroy_sensitive_data(void);
142extern Buffer loginmsg; 143extern struct sshbuf *loginmsg;
143extern struct sshauthopt *auth_opts; 144extern struct sshauthopt *auth_opts;
144char *tun_fwd_ifnames; /* serverloop.c */ 145char *tun_fwd_ifnames; /* serverloop.c */
145 146
@@ -248,11 +249,14 @@ auth_input_request_forwarding(struct ssh *ssh, struct passwd * pw)
248static void 249static void
249display_loginmsg(void) 250display_loginmsg(void)
250{ 251{
251 if (buffer_len(&loginmsg) > 0) { 252 int r;
252 buffer_append(&loginmsg, "\0", 1); 253
253 printf("%s", (char *)buffer_ptr(&loginmsg)); 254 if (sshbuf_len(loginmsg) == 0)
254 buffer_clear(&loginmsg); 255 return;
255 } 256 if ((r = sshbuf_put_u8(loginmsg, 0)) != 0)
257 fatal("%s: buffer error: %s", __func__, ssh_err(r));
258 printf("%s", (char *)sshbuf_ptr(loginmsg));
259 sshbuf_reset(loginmsg);
256} 260}
257 261
258static void 262static void
@@ -290,26 +294,43 @@ prepare_auth_info_file(struct passwd *pw, struct sshbuf *info)
290} 294}
291 295
292static void 296static void
293set_permitopen_from_authopts(struct ssh *ssh, const struct sshauthopt *opts) 297set_fwdpermit_from_authopts(struct ssh *ssh, const struct sshauthopt *opts)
294{ 298{
295 char *tmp, *cp, *host; 299 char *tmp, *cp, *host;
296 int port; 300 int port;
297 size_t i; 301 size_t i;
298 302
299 if ((options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) 303 if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0) {
300 return; 304 channel_clear_permission(ssh, FORWARD_USER, FORWARD_LOCAL);
301 channel_clear_permitted_opens(ssh); 305 for (i = 0; i < auth_opts->npermitopen; i++) {
302 for (i = 0; i < auth_opts->npermitopen; i++) { 306 tmp = cp = xstrdup(auth_opts->permitopen[i]);
303 tmp = cp = xstrdup(auth_opts->permitopen[i]); 307 /* This shouldn't fail as it has already been checked */
304 /* This shouldn't fail as it has already been checked */ 308 if ((host = hpdelim(&cp)) == NULL)
305 if ((host = hpdelim(&cp)) == NULL) 309 fatal("%s: internal error: hpdelim", __func__);
306 fatal("%s: internal error: hpdelim", __func__); 310 host = cleanhostname(host);
307 host = cleanhostname(host); 311 if (cp == NULL || (port = permitopen_port(cp)) < 0)
308 if (cp == NULL || (port = permitopen_port(cp)) < 0) 312 fatal("%s: internal error: permitopen port",
309 fatal("%s: internal error: permitopen port", 313 __func__);
310 __func__); 314 channel_add_permission(ssh,
311 channel_add_permitted_opens(ssh, host, port); 315 FORWARD_USER, FORWARD_LOCAL, host, port);
312 free(tmp); 316 free(tmp);
317 }
318 }
319 if ((options.allow_tcp_forwarding & FORWARD_REMOTE) != 0) {
320 channel_clear_permission(ssh, FORWARD_USER, FORWARD_REMOTE);
321 for (i = 0; i < auth_opts->npermitlisten; i++) {
322 tmp = cp = xstrdup(auth_opts->permitlisten[i]);
323 /* This shouldn't fail as it has already been checked */
324 if ((host = hpdelim(&cp)) == NULL)
325 fatal("%s: internal error: hpdelim", __func__);
326 host = cleanhostname(host);
327 if (cp == NULL || (port = permitopen_port(cp)) < 0)
328 fatal("%s: internal error: permitlisten port",
329 __func__);
330 channel_add_permission(ssh,
331 FORWARD_USER, FORWARD_REMOTE, host, port);
332 free(tmp);
333 }
313 } 334 }
314} 335}
315 336
@@ -322,14 +343,22 @@ do_authenticated(struct ssh *ssh, Authctxt *authctxt)
322 343
323 /* setup the channel layer */ 344 /* setup the channel layer */
324 /* XXX - streamlocal? */ 345 /* XXX - streamlocal? */
325 set_permitopen_from_authopts(ssh, auth_opts); 346 set_fwdpermit_from_authopts(ssh, auth_opts);
326 if (!auth_opts->permit_port_forwarding_flag ||
327 options.disable_forwarding ||
328 (options.allow_tcp_forwarding & FORWARD_LOCAL) == 0)
329 channel_disable_adm_local_opens(ssh);
330 else
331 channel_permit_all_opens(ssh);
332 347
348 if (!auth_opts->permit_port_forwarding_flag ||
349 options.disable_forwarding) {
350 channel_disable_admin(ssh, FORWARD_LOCAL);
351 channel_disable_admin(ssh, FORWARD_REMOTE);
352 } else {
353 if ((options.allow_tcp_forwarding & FORWARD_LOCAL) == 0)
354 channel_disable_admin(ssh, FORWARD_LOCAL);
355 else
356 channel_permit_all(ssh, FORWARD_LOCAL);
357 if ((options.allow_tcp_forwarding & FORWARD_REMOTE) == 0)
358 channel_disable_admin(ssh, FORWARD_REMOTE);
359 else
360 channel_permit_all(ssh, FORWARD_REMOTE);
361 }
333 auth_debug_send(); 362 auth_debug_send();
334 363
335 prepare_auth_info_file(authctxt->pw, authctxt->session_info); 364 prepare_auth_info_file(authctxt->pw, authctxt->session_info);
@@ -349,7 +378,7 @@ xauth_valid_string(const char *s)
349 if (!isalnum((u_char)s[i]) && 378 if (!isalnum((u_char)s[i]) &&
350 s[i] != '.' && s[i] != ':' && s[i] != '/' && 379 s[i] != '.' && s[i] != ':' && s[i] != '/' &&
351 s[i] != '-' && s[i] != '_') 380 s[i] != '-' && s[i] != '_')
352 return 0; 381 return 0;
353 } 382 }
354 return 1; 383 return 1;
355} 384}
@@ -500,7 +529,7 @@ do_exec_no_pty(struct ssh *ssh, Session *s, const char *command)
500 * it to the user, otherwise multiple sessions may accumulate 529 * it to the user, otherwise multiple sessions may accumulate
501 * multiple copies of the login messages. 530 * multiple copies of the login messages.
502 */ 531 */
503 buffer_clear(&loginmsg); 532 sshbuf_reset(loginmsg);
504 533
505#ifdef USE_PIPES 534#ifdef USE_PIPES
506 /* We are the parent. Close the child sides of the pipes. */ 535 /* We are the parent. Close the child sides of the pipes. */
@@ -732,7 +761,7 @@ do_exec(struct ssh *ssh, Session *s, const char *command)
732 * it to the user, otherwise multiple sessions may accumulate 761 * it to the user, otherwise multiple sessions may accumulate
733 * multiple copies of the login messages. 762 * multiple copies of the login messages.
734 */ 763 */
735 buffer_clear(&loginmsg); 764 sshbuf_reset(loginmsg);
736 765
737 return ret; 766 return ret;
738} 767}
@@ -842,24 +871,26 @@ check_quietlogin(Session *s, const char *command)
842 * into the environment. If the file does not exist, this does nothing. 871 * into the environment. If the file does not exist, this does nothing.
843 * Otherwise, it must consist of empty lines, comments (line starts with '#') 872 * Otherwise, it must consist of empty lines, comments (line starts with '#')
844 * and assignments of the form name=value. No other forms are allowed. 873 * and assignments of the form name=value. No other forms are allowed.
874 * If whitelist is not NULL, then it is interpreted as a pattern list and
875 * only variable names that match it will be accepted.
845 */ 876 */
846static void 877static void
847read_environment_file(char ***env, u_int *envsize, 878read_environment_file(char ***env, u_int *envsize,
848 const char *filename) 879 const char *filename, const char *whitelist)
849{ 880{
850 FILE *f; 881 FILE *f;
851 char buf[4096]; 882 char *line = NULL, *cp, *value;
852 char *cp, *value; 883 size_t linesize = 0;
853 u_int lineno = 0; 884 u_int lineno = 0;
854 885
855 f = fopen(filename, "r"); 886 f = fopen(filename, "r");
856 if (!f) 887 if (!f)
857 return; 888 return;
858 889
859 while (fgets(buf, sizeof(buf), f)) { 890 while (getline(&line, &linesize, f) != -1) {
860 if (++lineno > 1000) 891 if (++lineno > 1000)
861 fatal("Too many lines in environment file %s", filename); 892 fatal("Too many lines in environment file %s", filename);
862 for (cp = buf; *cp == ' ' || *cp == '\t'; cp++) 893 for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
863 ; 894 ;
864 if (!*cp || *cp == '#' || *cp == '\n') 895 if (!*cp || *cp == '#' || *cp == '\n')
865 continue; 896 continue;
@@ -878,8 +909,12 @@ read_environment_file(char ***env, u_int *envsize,
878 */ 909 */
879 *value = '\0'; 910 *value = '\0';
880 value++; 911 value++;
912 if (whitelist != NULL &&
913 match_pattern_list(cp, whitelist, 0) != 1)
914 continue;
881 child_set_env(env, envsize, cp, value); 915 child_set_env(env, envsize, cp, value);
882 } 916 }
917 free(line);
883 fclose(f); 918 fclose(f);
884} 919}
885 920
@@ -916,7 +951,8 @@ read_etc_default_login(char ***env, u_int *envsize, uid_t uid)
916 * so we use a temporary environment and copy the variables we're 951 * so we use a temporary environment and copy the variables we're
917 * interested in. 952 * interested in.
918 */ 953 */
919 read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login"); 954 read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login",
955 options.permit_user_env_whitelist);
920 956
921 if (tmpenv == NULL) 957 if (tmpenv == NULL)
922 return; 958 return;
@@ -978,7 +1014,7 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
978 char buf[256]; 1014 char buf[256];
979 size_t n; 1015 size_t n;
980 u_int i, envsize; 1016 u_int i, envsize;
981 char *ocp, *cp, **env, *laddr; 1017 char *ocp, *cp, *value, **env, *laddr;
982 struct passwd *pw = s->pw; 1018 struct passwd *pw = s->pw;
983#if !defined (HAVE_LOGIN_CAP) && !defined (HAVE_CYGWIN) 1019#if !defined (HAVE_LOGIN_CAP) && !defined (HAVE_CYGWIN)
984 char *path = NULL; 1020 char *path = NULL;
@@ -1052,46 +1088,10 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
1052 1088
1053 if (getenv("TZ")) 1089 if (getenv("TZ"))
1054 child_set_env(&env, &envsize, "TZ", getenv("TZ")); 1090 child_set_env(&env, &envsize, "TZ", getenv("TZ"));
1055
1056 /* Set custom environment options from pubkey authentication. */
1057 if (options.permit_user_env) {
1058 for (n = 0 ; n < auth_opts->nenv; n++) {
1059 ocp = xstrdup(auth_opts->env[n]);
1060 cp = strchr(ocp, '=');
1061 if (*cp == '=') {
1062 *cp = '\0';
1063 child_set_env(&env, &envsize, ocp, cp + 1);
1064 }
1065 free(ocp);
1066 }
1067 }
1068
1069 /* SSH_CLIENT deprecated */
1070 snprintf(buf, sizeof buf, "%.50s %d %d",
1071 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
1072 ssh_local_port(ssh));
1073 child_set_env(&env, &envsize, "SSH_CLIENT", buf);
1074
1075 laddr = get_local_ipaddr(packet_get_connection_in());
1076 snprintf(buf, sizeof buf, "%.50s %d %.50s %d",
1077 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
1078 laddr, ssh_local_port(ssh));
1079 free(laddr);
1080 child_set_env(&env, &envsize, "SSH_CONNECTION", buf);
1081
1082 if (tun_fwd_ifnames != NULL)
1083 child_set_env(&env, &envsize, "SSH_TUNNEL", tun_fwd_ifnames);
1084 if (auth_info_file != NULL)
1085 child_set_env(&env, &envsize, "SSH_USER_AUTH", auth_info_file);
1086 if (s->ttyfd != -1)
1087 child_set_env(&env, &envsize, "SSH_TTY", s->tty);
1088 if (s->term) 1091 if (s->term)
1089 child_set_env(&env, &envsize, "TERM", s->term); 1092 child_set_env(&env, &envsize, "TERM", s->term);
1090 if (s->display) 1093 if (s->display)
1091 child_set_env(&env, &envsize, "DISPLAY", s->display); 1094 child_set_env(&env, &envsize, "DISPLAY", s->display);
1092 if (original_command)
1093 child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND",
1094 original_command);
1095 1095
1096 /* 1096 /*
1097 * Since we clear KRB5CCNAME at startup, if it's set now then it 1097 * Since we clear KRB5CCNAME at startup, if it's set now then it
@@ -1111,7 +1111,8 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
1111 1111
1112 if ((cp = getenv("AUTHSTATE")) != NULL) 1112 if ((cp = getenv("AUTHSTATE")) != NULL)
1113 child_set_env(&env, &envsize, "AUTHSTATE", cp); 1113 child_set_env(&env, &envsize, "AUTHSTATE", cp);
1114 read_environment_file(&env, &envsize, "/etc/environment"); 1114 read_environment_file(&env, &envsize, "/etc/environment",
1115 options.permit_user_env_whitelist);
1115 } 1116 }
1116#endif 1117#endif
1117#ifdef KRB5 1118#ifdef KRB5
@@ -1119,6 +1120,37 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
1119 child_set_env(&env, &envsize, "KRB5CCNAME", 1120 child_set_env(&env, &envsize, "KRB5CCNAME",
1120 s->authctxt->krb5_ccname); 1121 s->authctxt->krb5_ccname);
1121#endif 1122#endif
1123 if (auth_sock_name != NULL)
1124 child_set_env(&env, &envsize, SSH_AUTHSOCKET_ENV_NAME,
1125 auth_sock_name);
1126
1127
1128 /* Set custom environment options from pubkey authentication. */
1129 if (options.permit_user_env) {
1130 for (n = 0 ; n < auth_opts->nenv; n++) {
1131 ocp = xstrdup(auth_opts->env[n]);
1132 cp = strchr(ocp, '=');
1133 if (*cp == '=') {
1134 *cp = '\0';
1135 /* Apply PermitUserEnvironment whitelist */
1136 if (options.permit_user_env_whitelist == NULL ||
1137 match_pattern_list(ocp,
1138 options.permit_user_env_whitelist, 0) == 1)
1139 child_set_env(&env, &envsize,
1140 ocp, cp + 1);
1141 }
1142 free(ocp);
1143 }
1144 }
1145
1146 /* read $HOME/.ssh/environment. */
1147 if (options.permit_user_env) {
1148 snprintf(buf, sizeof buf, "%.200s/.ssh/environment",
1149 pw->pw_dir);
1150 read_environment_file(&env, &envsize, buf,
1151 options.permit_user_env_whitelist);
1152 }
1153
1122#ifdef USE_PAM 1154#ifdef USE_PAM
1123 /* 1155 /*
1124 * Pull in any environment variables that may have 1156 * Pull in any environment variables that may have
@@ -1141,16 +1173,40 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
1141 } 1173 }
1142#endif /* USE_PAM */ 1174#endif /* USE_PAM */
1143 1175
1144 if (auth_sock_name != NULL) 1176 /* Environment specified by admin */
1145 child_set_env(&env, &envsize, SSH_AUTHSOCKET_ENV_NAME, 1177 for (i = 0; i < options.num_setenv; i++) {
1146 auth_sock_name); 1178 cp = xstrdup(options.setenv[i]);
1147 1179 if ((value = strchr(cp, '=')) == NULL) {
1148 /* read $HOME/.ssh/environment. */ 1180 /* shouldn't happen; vars are checked in servconf.c */
1149 if (options.permit_user_env) { 1181 fatal("Invalid config SetEnv: %s", options.setenv[i]);
1150 snprintf(buf, sizeof buf, "%.200s/.ssh/environment", 1182 }
1151 strcmp(pw->pw_dir, "/") ? pw->pw_dir : ""); 1183 *value++ = '\0';
1152 read_environment_file(&env, &envsize, buf); 1184 child_set_env(&env, &envsize, cp, value);
1153 } 1185 }
1186
1187 /* SSH_CLIENT deprecated */
1188 snprintf(buf, sizeof buf, "%.50s %d %d",
1189 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
1190 ssh_local_port(ssh));
1191 child_set_env(&env, &envsize, "SSH_CLIENT", buf);
1192
1193 laddr = get_local_ipaddr(packet_get_connection_in());
1194 snprintf(buf, sizeof buf, "%.50s %d %.50s %d",
1195 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
1196 laddr, ssh_local_port(ssh));
1197 free(laddr);
1198 child_set_env(&env, &envsize, "SSH_CONNECTION", buf);
1199
1200 if (tun_fwd_ifnames != NULL)
1201 child_set_env(&env, &envsize, "SSH_TUNNEL", tun_fwd_ifnames);
1202 if (auth_info_file != NULL)
1203 child_set_env(&env, &envsize, "SSH_USER_AUTH", auth_info_file);
1204 if (s->ttyfd != -1)
1205 child_set_env(&env, &envsize, "SSH_TTY", s->tty);
1206 if (original_command)
1207 child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND",
1208 original_command);
1209
1154 if (debug_flag) { 1210 if (debug_flag) {
1155 /* dump the environment */ 1211 /* dump the environment */
1156 fprintf(stderr, "Environment:\n"); 1212 fprintf(stderr, "Environment:\n");
@@ -1324,7 +1380,7 @@ safely_chroot(const char *path, uid_t uid)
1324void 1380void
1325do_setusercontext(struct passwd *pw) 1381do_setusercontext(struct passwd *pw)
1326{ 1382{
1327 char *chroot_path, *tmp; 1383 char uidstr[32], *chroot_path, *tmp;
1328 1384
1329 platform_setusercontext(pw); 1385 platform_setusercontext(pw);
1330 1386
@@ -1356,8 +1412,10 @@ do_setusercontext(struct passwd *pw)
1356 strcasecmp(options.chroot_directory, "none") != 0) { 1412 strcasecmp(options.chroot_directory, "none") != 0) {
1357 tmp = tilde_expand_filename(options.chroot_directory, 1413 tmp = tilde_expand_filename(options.chroot_directory,
1358 pw->pw_uid); 1414 pw->pw_uid);
1415 snprintf(uidstr, sizeof(uidstr), "%llu",
1416 (unsigned long long)pw->pw_uid);
1359 chroot_path = percent_expand(tmp, "h", pw->pw_dir, 1417 chroot_path = percent_expand(tmp, "h", pw->pw_dir,
1360 "u", pw->pw_name, (char *)NULL); 1418 "u", pw->pw_name, "U", uidstr, (char *)NULL);
1361 safely_chroot(chroot_path, pw->pw_uid); 1419 safely_chroot(chroot_path, pw->pw_uid);
1362 free(tmp); 1420 free(tmp);
1363 free(chroot_path); 1421 free(chroot_path);
@@ -1858,7 +1916,6 @@ static int
1858session_pty_req(struct ssh *ssh, Session *s) 1916session_pty_req(struct ssh *ssh, Session *s)
1859{ 1917{
1860 u_int len; 1918 u_int len;
1861 int n_bytes;
1862 1919
1863 if (!auth_opts->permit_pty_flag || !options.permit_tty) { 1920 if (!auth_opts->permit_pty_flag || !options.permit_tty) {
1864 debug("Allocating a pty not permitted for this connection."); 1921 debug("Allocating a pty not permitted for this connection.");
@@ -1893,8 +1950,7 @@ session_pty_req(struct ssh *ssh, Session *s)
1893 } 1950 }
1894 debug("session_pty_req: session %d alloc %s", s->self, s->tty); 1951 debug("session_pty_req: session %d alloc %s", s->self, s->tty);
1895 1952
1896 n_bytes = packet_remaining(); 1953 ssh_tty_parse_modes(ssh, s->ttyfd);
1897 tty_parse_modes(s->ttyfd, &n_bytes);
1898 1954
1899 if (!use_privsep) 1955 if (!use_privsep)
1900 pty_setowner(s->pw, s->tty); 1956 pty_setowner(s->pw, s->tty);
diff --git a/sftp-client.c b/sftp-client.c
index 0b53a2e68..4986d6d8d 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-client.c,v 1.128 2017/11/28 21:10:22 dtucker Exp $ */ 1/* $OpenBSD: sftp-client.c,v 1.130 2018/07/31 03:07:24 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -669,7 +669,7 @@ do_lsreaddir(struct sftp_conn *conn, const char *path, int print_flag,
669 **dir = NULL; 669 **dir = NULL;
670 } 670 }
671 671
672 return status; 672 return status == SSH2_FX_OK ? 0 : -1;
673} 673}
674 674
675int 675int
@@ -1019,7 +1019,7 @@ do_fsync(struct sftp_conn *conn, u_char *handle, u_int handle_len)
1019 if (status != SSH2_FX_OK) 1019 if (status != SSH2_FX_OK)
1020 error("Couldn't sync file: %s", fx2txt(status)); 1020 error("Couldn't sync file: %s", fx2txt(status));
1021 1021
1022 return status; 1022 return status == SSH2_FX_OK ? 0 : -1;
1023} 1023}
1024 1024
1025#ifdef notyet 1025#ifdef notyet
@@ -1451,7 +1451,7 @@ do_download(struct sftp_conn *conn, const char *remote_path,
1451 sshbuf_free(msg); 1451 sshbuf_free(msg);
1452 free(handle); 1452 free(handle);
1453 1453
1454 return(status); 1454 return status == SSH2_FX_OK ? 0 : -1;
1455} 1455}
1456 1456
1457static int 1457static int
@@ -1461,7 +1461,7 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
1461{ 1461{
1462 int i, ret = 0; 1462 int i, ret = 0;
1463 SFTP_DIRENT **dir_entries; 1463 SFTP_DIRENT **dir_entries;
1464 char *filename, *new_src, *new_dst; 1464 char *filename, *new_src = NULL, *new_dst = NULL;
1465 mode_t mode = 0777; 1465 mode_t mode = 0777;
1466 1466
1467 if (depth >= MAX_DIR_DEPTH) { 1467 if (depth >= MAX_DIR_DEPTH) {
@@ -1499,8 +1499,10 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
1499 } 1499 }
1500 1500
1501 for (i = 0; dir_entries[i] != NULL && !interrupted; i++) { 1501 for (i = 0; dir_entries[i] != NULL && !interrupted; i++) {
1502 filename = dir_entries[i]->filename; 1502 free(new_dst);
1503 free(new_src);
1503 1504
1505 filename = dir_entries[i]->filename;
1504 new_dst = path_append(dst, filename); 1506 new_dst = path_append(dst, filename);
1505 new_src = path_append(src, filename); 1507 new_src = path_append(src, filename);
1506 1508
@@ -1523,9 +1525,9 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
1523 } else 1525 } else
1524 logit("%s: not a regular file\n", new_src); 1526 logit("%s: not a regular file\n", new_src);
1525 1527
1526 free(new_dst);
1527 free(new_src);
1528 } 1528 }
1529 free(new_dst);
1530 free(new_src);
1529 1531
1530 if (preserve_flag) { 1532 if (preserve_flag) {
1531 if (dirattrib->flags & SSH2_FILEXFER_ATTR_ACMODTIME) { 1533 if (dirattrib->flags & SSH2_FILEXFER_ATTR_ACMODTIME) {
@@ -1793,7 +1795,7 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
1793 int ret = 0; 1795 int ret = 0;
1794 DIR *dirp; 1796 DIR *dirp;
1795 struct dirent *dp; 1797 struct dirent *dp;
1796 char *filename, *new_src, *new_dst; 1798 char *filename, *new_src = NULL, *new_dst = NULL;
1797 struct stat sb; 1799 struct stat sb;
1798 Attrib a, *dirattrib; 1800 Attrib a, *dirattrib;
1799 1801
@@ -1844,6 +1846,8 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
1844 while (((dp = readdir(dirp)) != NULL) && !interrupted) { 1846 while (((dp = readdir(dirp)) != NULL) && !interrupted) {
1845 if (dp->d_ino == 0) 1847 if (dp->d_ino == 0)
1846 continue; 1848 continue;
1849 free(new_dst);
1850 free(new_src);
1847 filename = dp->d_name; 1851 filename = dp->d_name;
1848 new_dst = path_append(dst, filename); 1852 new_dst = path_append(dst, filename);
1849 new_src = path_append(src, filename); 1853 new_src = path_append(src, filename);
@@ -1870,9 +1874,9 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
1870 } 1874 }
1871 } else 1875 } else
1872 logit("%s: not a regular file\n", filename); 1876 logit("%s: not a regular file\n", filename);
1873 free(new_dst);
1874 free(new_src);
1875 } 1877 }
1878 free(new_dst);
1879 free(new_src);
1876 1880
1877 do_setstat(conn, dst, &a); 1881 do_setstat(conn, dst, &a);
1878 1882
diff --git a/sftp-server.0 b/sftp-server.0
index 4f994f4c5..4c42b26c9 100644
--- a/sftp-server.0
+++ b/sftp-server.0
@@ -93,4 +93,4 @@ HISTORY
93AUTHORS 93AUTHORS
94 Markus Friedl <markus@openbsd.org> 94 Markus Friedl <markus@openbsd.org>
95 95
96OpenBSD 6.2 December 11, 2014 OpenBSD 6.2 96OpenBSD 6.4 December 11, 2014 OpenBSD 6.4
diff --git a/sftp-server.c b/sftp-server.c
index df0fb5068..ab1b063f2 100644
--- a/sftp-server.c
+++ b/sftp-server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-server.c,v 1.111 2017/04/04 00:24:56 djm Exp $ */ 1/* $OpenBSD: sftp-server.c,v 1.112 2018/06/01 03:33:53 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved.
4 * 4 *
@@ -1503,7 +1503,7 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
1503 int i, r, in, out, max, ch, skipargs = 0, log_stderr = 0; 1503 int i, r, in, out, max, ch, skipargs = 0, log_stderr = 0;
1504 ssize_t len, olen, set_size; 1504 ssize_t len, olen, set_size;
1505 SyslogFacility log_facility = SYSLOG_FACILITY_AUTH; 1505 SyslogFacility log_facility = SYSLOG_FACILITY_AUTH;
1506 char *cp, *homedir = NULL, buf[4*4096]; 1506 char *cp, *homedir = NULL, uidstr[32], buf[4*4096];
1507 long mask; 1507 long mask;
1508 1508
1509 extern char *optarg; 1509 extern char *optarg;
@@ -1554,8 +1554,10 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
1554 break; 1554 break;
1555 case 'd': 1555 case 'd':
1556 cp = tilde_expand_filename(optarg, user_pw->pw_uid); 1556 cp = tilde_expand_filename(optarg, user_pw->pw_uid);
1557 snprintf(uidstr, sizeof(uidstr), "%llu",
1558 (unsigned long long)pw->pw_uid);
1557 homedir = percent_expand(cp, "d", user_pw->pw_dir, 1559 homedir = percent_expand(cp, "d", user_pw->pw_dir,
1558 "u", user_pw->pw_name, (char *)NULL); 1560 "u", user_pw->pw_name, "U", uidstr, (char *)NULL);
1559 free(cp); 1561 free(cp);
1560 break; 1562 break;
1561 case 'p': 1563 case 'p':
diff --git a/sftp.0 b/sftp.0
index 7ad3e8d3f..343058e71 100644
--- a/sftp.0
+++ b/sftp.0
@@ -146,10 +146,10 @@ DESCRIPTION
146 SendEnv 146 SendEnv
147 ServerAliveInterval 147 ServerAliveInterval
148 ServerAliveCountMax 148 ServerAliveCountMax
149 SetEnv
149 StrictHostKeyChecking 150 StrictHostKeyChecking
150 TCPKeepAlive 151 TCPKeepAlive
151 UpdateHostKeys 152 UpdateHostKeys
152 UsePrivilegedPort
153 User 153 User
154 UserKnownHostsFile 154 UserKnownHostsFile
155 VerifyHostKeyDNS 155 VerifyHostKeyDNS
@@ -197,16 +197,16 @@ INTERACTIVE COMMANDS
197 change directory to the one the session started in. 197 change directory to the one the session started in.
198 198
199 chgrp grp path 199 chgrp grp path
200 Change group of file path to grp. path may contain glob(3) 200 Change group of file path to grp. path may contain glob(7)
201 characters and may match multiple files. grp must be a numeric 201 characters and may match multiple files. grp must be a numeric
202 GID. 202 GID.
203 203
204 chmod mode path 204 chmod mode path
205 Change permissions of file path to mode. path may contain 205 Change permissions of file path to mode. path may contain
206 glob(3) characters and may match multiple files. 206 glob(7) characters and may match multiple files.
207 207
208 chown own path 208 chown own path
209 Change owner of file path to own. path may contain glob(3) 209 Change owner of file path to own. path may contain glob(7)
210 characters and may match multiple files. own must be a numeric 210 characters and may match multiple files. own must be a numeric
211 UID. 211 UID.
212 212
@@ -223,7 +223,7 @@ INTERACTIVE COMMANDS
223 get [-afPpr] remote-path [local-path] 223 get [-afPpr] remote-path [local-path]
224 Retrieve the remote-path and store it on the local machine. If 224 Retrieve the remote-path and store it on the local machine. If
225 the local path name is not specified, it is given the same name 225 the local path name is not specified, it is given the same name
226 it has on the remote machine. remote-path may contain glob(3) 226 it has on the remote machine. remote-path may contain glob(7)
227 characters and may match multiple files. If it does and 227 characters and may match multiple files. If it does and
228 local-path is specified, then local-path must specify a 228 local-path is specified, then local-path must specify a
229 directory. 229 directory.
@@ -254,7 +254,7 @@ INTERACTIVE COMMANDS
254 Display local directory listing of either path or current 254 Display local directory listing of either path or current
255 directory if path is not specified. ls-options may contain any 255 directory if path is not specified. ls-options may contain any
256 flags supported by the local system's ls(1) command. path may 256 flags supported by the local system's ls(1) command. path may
257 contain glob(3) characters and may match multiple files. 257 contain glob(7) characters and may match multiple files.
258 258
259 lmkdir path 259 lmkdir path
260 Create local directory specified by path. 260 Create local directory specified by path.
@@ -268,7 +268,7 @@ INTERACTIVE COMMANDS
268 268
269 ls [-1afhlnrSt] [path] 269 ls [-1afhlnrSt] [path]
270 Display a remote directory listing of either path or the current 270 Display a remote directory listing of either path or the current
271 directory if path is not specified. path may contain glob(3) 271 directory if path is not specified. path may contain glob(7)
272 characters and may match multiple files. 272 characters and may match multiple files.
273 273
274 The following flags are recognized and alter the behaviour of ls 274 The following flags are recognized and alter the behaviour of ls
@@ -311,7 +311,7 @@ INTERACTIVE COMMANDS
311 put [-afPpr] local-path [remote-path] 311 put [-afPpr] local-path [remote-path]
312 Upload local-path and store it on the remote machine. If the 312 Upload local-path and store it on the remote machine. If the
313 remote path name is not specified, it is given the same name it 313 remote path name is not specified, it is given the same name it
314 has on the local machine. local-path may contain glob(3) 314 has on the local machine. local-path may contain glob(7)
315 characters and may match multiple files. If it does and 315 characters and may match multiple files. If it does and
316 remote-path is specified, then remote-path must specify a 316 remote-path is specified, then remote-path must specify a
317 directory. 317 directory.
@@ -369,10 +369,10 @@ INTERACTIVE COMMANDS
369 ? Synonym for help. 369 ? Synonym for help.
370 370
371SEE ALSO 371SEE ALSO
372 ftp(1), ls(1), scp(1), ssh(1), ssh-add(1), ssh-keygen(1), glob(3), 372 ftp(1), ls(1), scp(1), ssh(1), ssh-add(1), ssh-keygen(1), ssh_config(5),
373 ssh_config(5), sftp-server(8), sshd(8) 373 glob(7), sftp-server(8), sshd(8)
374 374
375 T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- 375 T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh-
376 filexfer-00.txt, January 2001, work in progress material. 376 filexfer-00.txt, January 2001, work in progress material.
377 377
378OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 378OpenBSD 6.4 July 23, 2018 OpenBSD 6.4
diff --git a/sftp.1 b/sftp.1
index 43e0442f7..a25d3890b 100644
--- a/sftp.1
+++ b/sftp.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: sftp.1,v 1.114 2018/02/23 07:38:09 jmc Exp $ 1.\" $OpenBSD: sftp.1,v 1.119 2018/07/23 19:53:55 jmc Exp $
2.\" 2.\"
3.\" Copyright (c) 2001 Damien Miller. All rights reserved. 3.\" Copyright (c) 2001 Damien Miller. All rights reserved.
4.\" 4.\"
@@ -22,7 +22,7 @@
22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24.\" 24.\"
25.Dd $Mdocdate: February 23 2018 $ 25.Dd $Mdocdate: July 23 2018 $
26.Dt SFTP 1 26.Dt SFTP 1
27.Os 27.Os
28.Sh NAME 28.Sh NAME
@@ -243,10 +243,10 @@ For full details of the options listed below, and their possible values, see
243.It SendEnv 243.It SendEnv
244.It ServerAliveInterval 244.It ServerAliveInterval
245.It ServerAliveCountMax 245.It ServerAliveCountMax
246.It SetEnv
246.It StrictHostKeyChecking 247.It StrictHostKeyChecking
247.It TCPKeepAlive 248.It TCPKeepAlive
248.It UpdateHostKeys 249.It UpdateHostKeys
249.It UsePrivilegedPort
250.It User 250.It User
251.It UserKnownHostsFile 251.It UserKnownHostsFile
252.It VerifyHostKeyDNS 252.It VerifyHostKeyDNS
@@ -315,7 +315,7 @@ to
315.Ar grp . 315.Ar grp .
316.Ar path 316.Ar path
317may contain 317may contain
318.Xr glob 3 318.Xr glob 7
319characters and may match multiple files. 319characters and may match multiple files.
320.Ar grp 320.Ar grp
321must be a numeric GID. 321must be a numeric GID.
@@ -326,7 +326,7 @@ to
326.Ar mode . 326.Ar mode .
327.Ar path 327.Ar path
328may contain 328may contain
329.Xr glob 3 329.Xr glob 7
330characters and may match multiple files. 330characters and may match multiple files.
331.It Ic chown Ar own Ar path 331.It Ic chown Ar own Ar path
332Change owner of file 332Change owner of file
@@ -335,7 +335,7 @@ to
335.Ar own . 335.Ar own .
336.Ar path 336.Ar path
337may contain 337may contain
338.Xr glob 3 338.Xr glob 7
339characters and may match multiple files. 339characters and may match multiple files.
340.Ar own 340.Ar own
341must be a numeric UID. 341must be a numeric UID.
@@ -373,7 +373,7 @@ path name is not specified, it is given the same name it has on the
373remote machine. 373remote machine.
374.Ar remote-path 374.Ar remote-path
375may contain 375may contain
376.Xr glob 3 376.Xr glob 7
377characters and may match multiple files. 377characters and may match multiple files.
378If it does and 378If it does and
379.Ar local-path 379.Ar local-path
@@ -429,7 +429,7 @@ may contain any flags supported by the local system's
429command. 429command.
430.Ar path 430.Ar path
431may contain 431may contain
432.Xr glob 3 432.Xr glob 7
433characters and may match multiple files. 433characters and may match multiple files.
434.It Ic lmkdir Ar path 434.It Ic lmkdir Ar path
435Create local directory specified by 435Create local directory specified by
@@ -460,7 +460,7 @@ or the current directory if
460is not specified. 460is not specified.
461.Ar path 461.Ar path
462may contain 462may contain
463.Xr glob 3 463.Xr glob 7
464characters and may match multiple files. 464characters and may match multiple files.
465.Pp 465.Pp
466The following flags are recognized and alter the behaviour of 466The following flags are recognized and alter the behaviour of
@@ -513,7 +513,7 @@ If the remote path name is not specified, it is given the same name it has
513on the local machine. 513on the local machine.
514.Ar local-path 514.Ar local-path
515may contain 515may contain
516.Xr glob 3 516.Xr glob 7
517characters and may match multiple files. 517characters and may match multiple files.
518If it does and 518If it does and
519.Ar remote-path 519.Ar remote-path
@@ -616,8 +616,8 @@ Synonym for help.
616.Xr ssh 1 , 616.Xr ssh 1 ,
617.Xr ssh-add 1 , 617.Xr ssh-add 1 ,
618.Xr ssh-keygen 1 , 618.Xr ssh-keygen 1 ,
619.Xr glob 3 ,
620.Xr ssh_config 5 , 619.Xr ssh_config 5 ,
620.Xr glob 7 ,
621.Xr sftp-server 8 , 621.Xr sftp-server 8 ,
622.Xr sshd 8 622.Xr sshd 8
623.Rs 623.Rs
diff --git a/sftp.c b/sftp.c
index 5ce864eeb..d068f7e0f 100644
--- a/sftp.c
+++ b/sftp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp.c,v 1.182 2017/11/03 03:46:52 djm Exp $ */ 1/* $OpenBSD: sftp.c,v 1.185 2018/04/26 14:47:03 bluhm Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -81,7 +81,7 @@ FILE* infile;
81int batchmode = 0; 81int batchmode = 0;
82 82
83/* PID of ssh transport process */ 83/* PID of ssh transport process */
84static pid_t sshpid = -1; 84static volatile pid_t sshpid = -1;
85 85
86/* Suppress diagnositic messages */ 86/* Suppress diagnositic messages */
87int quiet = 0; 87int quiet = 0;
@@ -253,6 +253,25 @@ cmd_interrupt(int signo)
253 errno = olderrno; 253 errno = olderrno;
254} 254}
255 255
256/*ARGSUSED*/
257static void
258sigchld_handler(int sig)
259{
260 int save_errno = errno;
261 pid_t pid;
262 const char msg[] = "\rConnection closed. \n";
263
264 /* Report if ssh transport process dies. */
265 while ((pid = waitpid(sshpid, NULL, WNOHANG)) == -1 && errno == EINTR)
266 continue;
267 if (pid == sshpid) {
268 (void)write(STDERR_FILENO, msg, sizeof(msg) - 1);
269 sshpid = -1;
270 }
271
272 errno = save_errno;
273}
274
256static void 275static void
257help(void) 276help(void)
258{ 277{
@@ -1844,7 +1863,7 @@ complete_cmd_parse(EditLine *el, char *cmd, int lastarg, char quote,
1844 return 0; 1863 return 0;
1845 } 1864 }
1846 1865
1847 /* Complete ambigious command */ 1866 /* Complete ambiguous command */
1848 tmp = complete_ambiguous(cmd, list, count); 1867 tmp = complete_ambiguous(cmd, list, count);
1849 if (count > 1) 1868 if (count > 1)
1850 complete_display(list, 0); 1869 complete_display(list, 0);
@@ -2227,6 +2246,7 @@ interactive_loop(struct sftp_conn *conn, char *file1, char *file2)
2227 if (err != 0) 2246 if (err != 0)
2228 break; 2247 break;
2229 } 2248 }
2249 signal(SIGCHLD, SIG_DFL);
2230 free(remote_path); 2250 free(remote_path);
2231 free(startdir); 2251 free(startdir);
2232 free(conn); 2252 free(conn);
@@ -2296,6 +2316,7 @@ connect_to_server(char *path, char **args, int *in, int *out)
2296 signal(SIGTSTP, suspchild); 2316 signal(SIGTSTP, suspchild);
2297 signal(SIGTTIN, suspchild); 2317 signal(SIGTTIN, suspchild);
2298 signal(SIGTTOU, suspchild); 2318 signal(SIGTTOU, suspchild);
2319 signal(SIGCHLD, sigchld_handler);
2299 close(c_in); 2320 close(c_in);
2300 close(c_out); 2321 close(c_out);
2301} 2322}
@@ -2535,7 +2556,7 @@ main(int argc, char **argv)
2535 if (batchmode) 2556 if (batchmode)
2536 fclose(infile); 2557 fclose(infile);
2537 2558
2538 while (waitpid(sshpid, NULL, 0) == -1) 2559 while (waitpid(sshpid, NULL, 0) == -1 && sshpid > 1)
2539 if (errno != EINTR) 2560 if (errno != EINTR)
2540 fatal("Couldn't wait for ssh process: %s", 2561 fatal("Couldn't wait for ssh process: %s",
2541 strerror(errno)); 2562 strerror(errno));
diff --git a/ssh-add.0 b/ssh-add.0
index 2ef6c3da2..d60ae715e 100644
--- a/ssh-add.0
+++ b/ssh-add.0
@@ -120,4 +120,4 @@ AUTHORS
120 created OpenSSH. Markus Friedl contributed the support for SSH protocol 120 created OpenSSH. Markus Friedl contributed the support for SSH protocol
121 versions 1.5 and 2.0. 121 versions 1.5 and 2.0.
122 122
123OpenBSD 6.2 August 29, 2017 OpenBSD 6.2 123OpenBSD 6.4 August 29, 2017 OpenBSD 6.4
diff --git a/ssh-agent.0 b/ssh-agent.0
index 86ac988bd..f4575d01b 100644
--- a/ssh-agent.0
+++ b/ssh-agent.0
@@ -117,4 +117,4 @@ AUTHORS
117 created OpenSSH. Markus Friedl contributed the support for SSH protocol 117 created OpenSSH. Markus Friedl contributed the support for SSH protocol
118 versions 1.5 and 2.0. 118 versions 1.5 and 2.0.
119 119
120OpenBSD 6.2 November 30, 2016 OpenBSD 6.2 120OpenBSD 6.4 November 30, 2016 OpenBSD 6.4
diff --git a/ssh-agent.c b/ssh-agent.c
index 2a4578b03..d8a8260f9 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-agent.c,v 1.228 2018/02/23 15:58:37 markus Exp $ */ 1/* $OpenBSD: ssh-agent.c,v 1.231 2018/05/11 03:38:51 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -709,7 +709,7 @@ process_message(u_int socknum)
709 709
710 debug("%s: socket %u (fd=%d) type %d", __func__, socknum, e->fd, type); 710 debug("%s: socket %u (fd=%d) type %d", __func__, socknum, e->fd, type);
711 711
712 /* check wheter agent is locked */ 712 /* check whether agent is locked */
713 if (locked && type != SSH_AGENTC_UNLOCK) { 713 if (locked && type != SSH_AGENTC_UNLOCK) {
714 sshbuf_reset(e->request); 714 sshbuf_reset(e->request);
715 switch (type) { 715 switch (type) {
@@ -886,10 +886,10 @@ handle_conn_write(u_int socknum)
886} 886}
887 887
888static void 888static void
889after_poll(struct pollfd *pfd, size_t npfd) 889after_poll(struct pollfd *pfd, size_t npfd, u_int maxfds)
890{ 890{
891 size_t i; 891 size_t i;
892 u_int socknum; 892 u_int socknum, activefds = npfd;
893 893
894 for (i = 0; i < npfd; i++) { 894 for (i = 0; i < npfd; i++) {
895 if (pfd[i].revents == 0) 895 if (pfd[i].revents == 0)
@@ -909,19 +909,30 @@ after_poll(struct pollfd *pfd, size_t npfd)
909 /* Process events */ 909 /* Process events */
910 switch (sockets[socknum].type) { 910 switch (sockets[socknum].type) {
911 case AUTH_SOCKET: 911 case AUTH_SOCKET:
912 if ((pfd[i].revents & (POLLIN|POLLERR)) != 0 && 912 if ((pfd[i].revents & (POLLIN|POLLERR)) == 0)
913 handle_socket_read(socknum) != 0) 913 break;
914 close_socket(&sockets[socknum]); 914 if (npfd > maxfds) {
915 debug3("out of fds (active %u >= limit %u); "
916 "skipping accept", activefds, maxfds);
917 break;
918 }
919 if (handle_socket_read(socknum) == 0)
920 activefds++;
915 break; 921 break;
916 case AUTH_CONNECTION: 922 case AUTH_CONNECTION:
917 if ((pfd[i].revents & (POLLIN|POLLERR)) != 0 && 923 if ((pfd[i].revents & (POLLIN|POLLERR)) != 0 &&
918 handle_conn_read(socknum) != 0) { 924 handle_conn_read(socknum) != 0) {
919 close_socket(&sockets[socknum]); 925 goto close_sock;
920 break;
921 } 926 }
922 if ((pfd[i].revents & (POLLOUT|POLLHUP)) != 0 && 927 if ((pfd[i].revents & (POLLOUT|POLLHUP)) != 0 &&
923 handle_conn_write(socknum) != 0) 928 handle_conn_write(socknum) != 0) {
929 close_sock:
930 if (activefds == 0)
931 fatal("activefds == 0 at close_sock");
924 close_socket(&sockets[socknum]); 932 close_socket(&sockets[socknum]);
933 activefds--;
934 break;
935 }
925 break; 936 break;
926 default: 937 default:
927 break; 938 break;
@@ -930,7 +941,7 @@ after_poll(struct pollfd *pfd, size_t npfd)
930} 941}
931 942
932static int 943static int
933prepare_poll(struct pollfd **pfdp, size_t *npfdp, int *timeoutp) 944prepare_poll(struct pollfd **pfdp, size_t *npfdp, int *timeoutp, u_int maxfds)
934{ 945{
935 struct pollfd *pfd = *pfdp; 946 struct pollfd *pfd = *pfdp;
936 size_t i, j, npfd = 0; 947 size_t i, j, npfd = 0;
@@ -959,6 +970,16 @@ prepare_poll(struct pollfd **pfdp, size_t *npfdp, int *timeoutp)
959 for (i = j = 0; i < sockets_alloc; i++) { 970 for (i = j = 0; i < sockets_alloc; i++) {
960 switch (sockets[i].type) { 971 switch (sockets[i].type) {
961 case AUTH_SOCKET: 972 case AUTH_SOCKET:
973 if (npfd > maxfds) {
974 debug3("out of fds (active %zu >= limit %u); "
975 "skipping arming listener", npfd, maxfds);
976 break;
977 }
978 pfd[j].fd = sockets[i].fd;
979 pfd[j].revents = 0;
980 pfd[j].events = POLLIN;
981 j++;
982 break;
962 case AUTH_CONNECTION: 983 case AUTH_CONNECTION:
963 pfd[j].fd = sockets[i].fd; 984 pfd[j].fd = sockets[i].fd;
964 pfd[j].revents = 0; 985 pfd[j].revents = 0;
@@ -1059,6 +1080,7 @@ main(int ac, char **av)
1059 int timeout = -1; /* INFTIM */ 1080 int timeout = -1; /* INFTIM */
1060 struct pollfd *pfd = NULL; 1081 struct pollfd *pfd = NULL;
1061 size_t npfd = 0; 1082 size_t npfd = 0;
1083 u_int maxfds;
1062 1084
1063 ssh_malloc_init(); /* must be called before any mallocs */ 1085 ssh_malloc_init(); /* must be called before any mallocs */
1064 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ 1086 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
@@ -1070,6 +1092,9 @@ main(int ac, char **av)
1070 1092
1071 platform_disable_tracing(0); /* strict=no */ 1093 platform_disable_tracing(0); /* strict=no */
1072 1094
1095 if (getrlimit(RLIMIT_NOFILE, &rlim) == -1)
1096 fatal("%s: getrlimit: %s", __progname, strerror(errno));
1097
1073#ifdef WITH_OPENSSL 1098#ifdef WITH_OPENSSL
1074 OpenSSL_add_all_algorithms(); 1099 OpenSSL_add_all_algorithms();
1075#endif 1100#endif
@@ -1166,6 +1191,18 @@ main(int ac, char **av)
1166 printf("echo Agent pid %ld killed;\n", (long)pid); 1191 printf("echo Agent pid %ld killed;\n", (long)pid);
1167 exit(0); 1192 exit(0);
1168 } 1193 }
1194
1195 /*
1196 * Minimum file descriptors:
1197 * stdio (3) + listener (1) + syslog (1 maybe) + connection (1) +
1198 * a few spare for libc / stack protectors / sanitisers, etc.
1199 */
1200#define SSH_AGENT_MIN_FDS (3+1+1+1+4)
1201 if (rlim.rlim_cur < SSH_AGENT_MIN_FDS)
1202 fatal("%s: file descriptior rlimit %lld too low (minimum %u)",
1203 __progname, (long long)rlim.rlim_cur, SSH_AGENT_MIN_FDS);
1204 maxfds = rlim.rlim_cur - SSH_AGENT_MIN_FDS;
1205
1169 parent_pid = getpid(); 1206 parent_pid = getpid();
1170 1207
1171 if (agentsocket == NULL) { 1208 if (agentsocket == NULL) {
@@ -1285,7 +1322,7 @@ skip:
1285 platform_pledge_agent(); 1322 platform_pledge_agent();
1286 1323
1287 while (1) { 1324 while (1) {
1288 prepare_poll(&pfd, &npfd, &timeout); 1325 prepare_poll(&pfd, &npfd, &timeout, maxfds);
1289 result = poll(pfd, npfd, timeout); 1326 result = poll(pfd, npfd, timeout);
1290 saved_errno = errno; 1327 saved_errno = errno;
1291 if (parent_alive_interval != 0) 1328 if (parent_alive_interval != 0)
@@ -1296,7 +1333,7 @@ skip:
1296 continue; 1333 continue;
1297 fatal("poll: %s", strerror(saved_errno)); 1334 fatal("poll: %s", strerror(saved_errno));
1298 } else if (result > 0) 1335 } else if (result > 0)
1299 after_poll(pfd, npfd); 1336 after_poll(pfd, npfd, maxfds);
1300 } 1337 }
1301 /* NOTREACHED */ 1338 /* NOTREACHED */
1302} 1339}
diff --git a/ssh-gss.h b/ssh-gss.h
index 6593e422d..36180d07a 100644
--- a/ssh-gss.h
+++ b/ssh-gss.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-gss.h,v 1.12 2017/06/24 06:34:38 djm Exp $ */ 1/* $OpenBSD: ssh-gss.h,v 1.14 2018/07/10 09:13:30 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. 3 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
4 * 4 *
@@ -107,6 +107,9 @@ ssh_gssapi_mech *ssh_gssapi_get_ctype(Gssctxt *);
107void ssh_gssapi_prepare_supported_oids(void); 107void ssh_gssapi_prepare_supported_oids(void);
108OM_uint32 ssh_gssapi_test_oid_supported(OM_uint32 *, gss_OID, int *); 108OM_uint32 ssh_gssapi_test_oid_supported(OM_uint32 *, gss_OID, int *);
109 109
110struct sshbuf;
111int ssh_gssapi_get_buffer_desc(struct sshbuf *, gss_buffer_desc *);
112
110OM_uint32 ssh_gssapi_import_name(Gssctxt *, const char *); 113OM_uint32 ssh_gssapi_import_name(Gssctxt *, const char *);
111OM_uint32 ssh_gssapi_init_ctx(Gssctxt *, int, 114OM_uint32 ssh_gssapi_init_ctx(Gssctxt *, int,
112 gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *); 115 gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *);
@@ -118,7 +121,8 @@ char *ssh_gssapi_last_error(Gssctxt *, OM_uint32 *, OM_uint32 *);
118void ssh_gssapi_build_ctx(Gssctxt **); 121void ssh_gssapi_build_ctx(Gssctxt **);
119void ssh_gssapi_delete_ctx(Gssctxt **); 122void ssh_gssapi_delete_ctx(Gssctxt **);
120OM_uint32 ssh_gssapi_sign(Gssctxt *, gss_buffer_t, gss_buffer_t); 123OM_uint32 ssh_gssapi_sign(Gssctxt *, gss_buffer_t, gss_buffer_t);
121void ssh_gssapi_buildmic(Buffer *, const char *, const char *, const char *); 124void ssh_gssapi_buildmic(struct sshbuf *, const char *,
125 const char *, const char *);
122int ssh_gssapi_check_mechanism(Gssctxt **, gss_OID, const char *); 126int ssh_gssapi_check_mechanism(Gssctxt **, gss_OID, const char *);
123 127
124/* In the server */ 128/* In the server */
diff --git a/ssh-keygen.0 b/ssh-keygen.0
index 417e8382b..f8cc3c3e2 100644
--- a/ssh-keygen.0
+++ b/ssh-keygen.0
@@ -88,9 +88,8 @@ DESCRIPTION
88 new host keys. 88 new host keys.
89 89
90 -a rounds 90 -a rounds
91 When saving a new-format private key (i.e. an ed25519 key or when 91 When saving a private key this option specifies the number of KDF
92 the -o flag is set), this option specifies the number of KDF (key 92 (key derivation function) rounds used. Higher numbers result in
93 derivation function) rounds used. Higher numbers result in
94 slower passphrase verification and increased resistance to brute- 93 slower passphrase verification and increased resistance to brute-
95 force password cracking (should the keys be stolen). 94 force password cracking (should the keys be stolen).
96 95
@@ -115,10 +114,9 @@ DESCRIPTION
115 Provides a new comment. 114 Provides a new comment.
116 115
117 -c Requests changing the comment in the private and public key 116 -c Requests changing the comment in the private and public key
118 files. This operation is only supported for keys stored in the 117 files. The program will prompt for the file containing the
119 newer OpenSSH format. The program will prompt for the file 118 private keys, for the passphrase if the key has one, and for the
120 containing the private keys, for the passphrase if the key has 119 new comment.
121 one, and for the new comment.
122 120
123 -D pkcs11 121 -D pkcs11
124 Download the RSA public keys provided by the PKCS#11 shared 122 Download the RSA public keys provided by the PKCS#11 shared
@@ -212,7 +210,9 @@ DESCRIPTION
212 conversion options. The supported key formats are: M-bM-^@M-^\RFC4716M-bM-^@M-^] 210 conversion options. The supported key formats are: M-bM-^@M-^\RFC4716M-bM-^@M-^]
213 (RFC 4716/SSH2 public or private key), M-bM-^@M-^\PKCS8M-bM-^@M-^] (PEM PKCS8 public 211 (RFC 4716/SSH2 public or private key), M-bM-^@M-^\PKCS8M-bM-^@M-^] (PEM PKCS8 public
214 key) or M-bM-^@M-^\PEMM-bM-^@M-^] (PEM public key). The default conversion format is 212 key) or M-bM-^@M-^\PEMM-bM-^@M-^] (PEM public key). The default conversion format is
215 M-bM-^@M-^\RFC4716M-bM-^@M-^]. 213 M-bM-^@M-^\RFC4716M-bM-^@M-^]. Setting a format of M-bM-^@M-^\PEMM-bM-^@M-^] when generating or updating
214 a supported private key type will cause the key to be stored in
215 the legacy PEM private key format.
216 216
217 -N new_passphrase 217 -N new_passphrase
218 Provides the new passphrase. 218 Provides the new passphrase.
@@ -289,12 +289,6 @@ DESCRIPTION
289 separated list of one or more address/netmask pairs in 289 separated list of one or more address/netmask pairs in
290 CIDR format. 290 CIDR format.
291 291
292 -o Causes ssh-keygen to save private keys using the new OpenSSH
293 format rather than the more compatible PEM format. The new
294 format has increased resistance to brute-force password cracking
295 but is not supported by versions of OpenSSH prior to 6.5.
296 Ed25519 keys always use the new private key format.
297
298 -P passphrase 292 -P passphrase
299 Provides the (old) passphrase. 293 Provides the (old) passphrase.
300 294
@@ -577,4 +571,4 @@ AUTHORS
577 created OpenSSH. Markus Friedl contributed the support for SSH protocol 571 created OpenSSH. Markus Friedl contributed the support for SSH protocol
578 versions 1.5 and 2.0. 572 versions 1.5 and 2.0.
579 573
580OpenBSD 6.2 March 12, 2018 OpenBSD 6.2 574OpenBSD 6.4 August 8, 2018 OpenBSD 6.4
diff --git a/ssh-keygen.1 b/ssh-keygen.1
index 3525d7d17..dd6e7e5a8 100644
--- a/ssh-keygen.1
+++ b/ssh-keygen.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-keygen.1,v 1.147 2018/03/12 00:52:01 djm Exp $ 1.\" $OpenBSD: ssh-keygen.1,v 1.148 2018/08/08 01:16:01 djm Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -35,7 +35,7 @@
35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37.\" 37.\"
38.Dd $Mdocdate: March 12 2018 $ 38.Dd $Mdocdate: August 8 2018 $
39.Dt SSH-KEYGEN 1 39.Dt SSH-KEYGEN 1
40.Os 40.Os
41.Sh NAME 41.Sh NAME
@@ -233,10 +233,8 @@ This is used by
233.Pa /etc/rc 233.Pa /etc/rc
234to generate new host keys. 234to generate new host keys.
235.It Fl a Ar rounds 235.It Fl a Ar rounds
236When saving a new-format private key (i.e. an ed25519 key or when the 236When saving a private key this option specifies the number of KDF
237.Fl o 237(key derivation function) rounds used.
238flag is set), this option specifies the number of KDF (key derivation function)
239rounds used.
240Higher numbers result in slower passphrase verification and increased 238Higher numbers result in slower passphrase verification and increased
241resistance to brute-force password cracking (should the keys be stolen). 239resistance to brute-force password cracking (should the keys be stolen).
242.Pp 240.Pp
@@ -264,8 +262,6 @@ flag will be ignored.
264Provides a new comment. 262Provides a new comment.
265.It Fl c 263.It Fl c
266Requests changing the comment in the private and public key files. 264Requests changing the comment in the private and public key files.
267This operation is only supported for keys stored in the
268newer OpenSSH format.
269The program will prompt for the file containing the private keys, for 265The program will prompt for the file containing the private keys, for
270the passphrase if the key has one, and for the new comment. 266the passphrase if the key has one, and for the new comment.
271.It Fl D Ar pkcs11 267.It Fl D Ar pkcs11
@@ -410,6 +406,10 @@ or
410(PEM public key). 406(PEM public key).
411The default conversion format is 407The default conversion format is
412.Dq RFC4716 . 408.Dq RFC4716 .
409Setting a format of
410.Dq PEM
411when generating or updating a supported private key type will cause the
412key to be stored in the legacy PEM private key format.
413.It Fl N Ar new_passphrase 413.It Fl N Ar new_passphrase
414Provides the new passphrase. 414Provides the new passphrase.
415.It Fl n Ar principals 415.It Fl n Ar principals
@@ -504,14 +504,6 @@ The
504is a comma-separated list of one or more address/netmask pairs in CIDR 504is a comma-separated list of one or more address/netmask pairs in CIDR
505format. 505format.
506.El 506.El
507.It Fl o
508Causes
509.Nm
510to save private keys using the new OpenSSH format rather than
511the more compatible PEM format.
512The new format has increased resistance to brute-force password cracking
513but is not supported by versions of OpenSSH prior to 6.5.
514Ed25519 keys always use the new private key format.
515.It Fl P Ar passphrase 507.It Fl P Ar passphrase
516Provides the (old) passphrase. 508Provides the (old) passphrase.
517.It Fl p 509.It Fl p
diff --git a/ssh-keygen.c b/ssh-keygen.c
index 9aac64fc3..22860ad90 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keygen.c,v 1.314 2018/03/12 00:52:01 djm Exp $ */ 1/* $OpenBSD: ssh-keygen.c,v 1.319 2018/08/08 01:16:01 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -38,6 +38,7 @@
38#include <unistd.h> 38#include <unistd.h>
39#include <limits.h> 39#include <limits.h>
40#include <locale.h> 40#include <locale.h>
41#include <time.h>
41 42
42#include "xmalloc.h" 43#include "xmalloc.h"
43#include "sshkey.h" 44#include "sshkey.h"
@@ -178,7 +179,7 @@ char *key_type_name = NULL;
178char *pkcs11provider = NULL; 179char *pkcs11provider = NULL;
179 180
180/* Use new OpenSSH private key format when writing SSH2 keys instead of PEM */ 181/* Use new OpenSSH private key format when writing SSH2 keys instead of PEM */
181int use_new_format = 0; 182int use_new_format = 1;
182 183
183/* Cipher for new-format private keys */ 184/* Cipher for new-format private keys */
184char *new_format_cipher = NULL; 185char *new_format_cipher = NULL;
@@ -870,7 +871,8 @@ do_fingerprint(struct passwd *pw)
870{ 871{
871 FILE *f; 872 FILE *f;
872 struct sshkey *public = NULL; 873 struct sshkey *public = NULL;
873 char *comment = NULL, *cp, *ep, line[SSH_MAX_PUBKEY_BYTES]; 874 char *comment = NULL, *cp, *ep, *line = NULL;
875 size_t linesize = 0;
874 int i, invalid = 1; 876 int i, invalid = 1;
875 const char *path; 877 const char *path;
876 u_long lnum = 0; 878 u_long lnum = 0;
@@ -885,7 +887,8 @@ do_fingerprint(struct passwd *pw)
885 } else if ((f = fopen(path, "r")) == NULL) 887 } else if ((f = fopen(path, "r")) == NULL)
886 fatal("%s: %s: %s", __progname, path, strerror(errno)); 888 fatal("%s: %s: %s", __progname, path, strerror(errno));
887 889
888 while (read_keyfile_line(f, path, line, sizeof(line), &lnum) == 0) { 890 while (getline(&line, &linesize, f) != -1) {
891 lnum++;
889 cp = line; 892 cp = line;
890 cp[strcspn(cp, "\n")] = '\0'; 893 cp[strcspn(cp, "\n")] = '\0';
891 /* Trim leading space and comments */ 894 /* Trim leading space and comments */
@@ -905,6 +908,7 @@ do_fingerprint(struct passwd *pw)
905 */ 908 */
906 if (lnum == 1 && strcmp(identity_file, "-") != 0 && 909 if (lnum == 1 && strcmp(identity_file, "-") != 0 &&
907 strstr(cp, "PRIVATE KEY") != NULL) { 910 strstr(cp, "PRIVATE KEY") != NULL) {
911 free(line);
908 fclose(f); 912 fclose(f);
909 fingerprint_private(path); 913 fingerprint_private(path);
910 exit(0); 914 exit(0);
@@ -951,6 +955,7 @@ do_fingerprint(struct passwd *pw)
951 invalid = 0; /* One good key in the file is sufficient */ 955 invalid = 0; /* One good key in the file is sufficient */
952 } 956 }
953 fclose(f); 957 fclose(f);
958 free(line);
954 959
955 if (invalid) 960 if (invalid)
956 fatal("%s is not a public key file.", path); 961 fatal("%s is not a public key file.", path);
@@ -1254,13 +1259,12 @@ do_known_hosts(struct passwd *pw, const char *name)
1254 } 1259 }
1255 inplace = 1; 1260 inplace = 1;
1256 } 1261 }
1257
1258 /* XXX support identity_file == "-" for stdin */ 1262 /* XXX support identity_file == "-" for stdin */
1259 foreach_options = find_host ? HKF_WANT_MATCH : 0; 1263 foreach_options = find_host ? HKF_WANT_MATCH : 0;
1260 foreach_options |= print_fingerprint ? HKF_WANT_PARSE_KEY : 0; 1264 foreach_options |= print_fingerprint ? HKF_WANT_PARSE_KEY : 0;
1261 if ((r = hostkeys_foreach(identity_file, 1265 if ((r = hostkeys_foreach(identity_file, (find_host || !hash_hosts) ?
1262 hash_hosts ? known_hosts_hash : known_hosts_find_delete, &ctx, 1266 known_hosts_find_delete : known_hosts_hash, &ctx, name, NULL,
1263 name, NULL, foreach_options)) != 0) { 1267 foreach_options)) != 0) {
1264 if (inplace) 1268 if (inplace)
1265 unlink(tmp); 1269 unlink(tmp);
1266 fatal("%s: hostkeys_foreach failed: %s", __func__, ssh_err(r)); 1270 fatal("%s: hostkeys_foreach failed: %s", __func__, ssh_err(r));
@@ -2005,8 +2009,9 @@ do_show_cert(struct passwd *pw)
2005 struct stat st; 2009 struct stat st;
2006 int r, is_stdin = 0, ok = 0; 2010 int r, is_stdin = 0, ok = 0;
2007 FILE *f; 2011 FILE *f;
2008 char *cp, line[SSH_MAX_PUBKEY_BYTES]; 2012 char *cp, *line = NULL;
2009 const char *path; 2013 const char *path;
2014 size_t linesize = 0;
2010 u_long lnum = 0; 2015 u_long lnum = 0;
2011 2016
2012 if (!have_identity) 2017 if (!have_identity)
@@ -2022,7 +2027,8 @@ do_show_cert(struct passwd *pw)
2022 } else if ((f = fopen(identity_file, "r")) == NULL) 2027 } else if ((f = fopen(identity_file, "r")) == NULL)
2023 fatal("fopen %s: %s", identity_file, strerror(errno)); 2028 fatal("fopen %s: %s", identity_file, strerror(errno));
2024 2029
2025 while (read_keyfile_line(f, path, line, sizeof(line), &lnum) == 0) { 2030 while (getline(&line, &linesize, f) != -1) {
2031 lnum++;
2026 sshkey_free(key); 2032 sshkey_free(key);
2027 key = NULL; 2033 key = NULL;
2028 /* Trim leading space and comments */ 2034 /* Trim leading space and comments */
@@ -2047,6 +2053,7 @@ do_show_cert(struct passwd *pw)
2047 printf("%s:%lu:\n", path, lnum); 2053 printf("%s:%lu:\n", path, lnum);
2048 print_cert(key); 2054 print_cert(key);
2049 } 2055 }
2056 free(line);
2050 sshkey_free(key); 2057 sshkey_free(key);
2051 fclose(f); 2058 fclose(f);
2052 exit(ok ? 0 : 1); 2059 exit(ok ? 0 : 1);
@@ -2078,7 +2085,8 @@ update_krl_from_file(struct passwd *pw, const char *file, int wild_ca,
2078{ 2085{
2079 struct sshkey *key = NULL; 2086 struct sshkey *key = NULL;
2080 u_long lnum = 0; 2087 u_long lnum = 0;
2081 char *path, *cp, *ep, line[SSH_MAX_PUBKEY_BYTES]; 2088 char *path, *cp, *ep, *line = NULL;
2089 size_t linesize = 0;
2082 unsigned long long serial, serial2; 2090 unsigned long long serial, serial2;
2083 int i, was_explicit_key, was_sha1, r; 2091 int i, was_explicit_key, was_sha1, r;
2084 FILE *krl_spec; 2092 FILE *krl_spec;
@@ -2093,8 +2101,8 @@ update_krl_from_file(struct passwd *pw, const char *file, int wild_ca,
2093 2101
2094 if (!quiet) 2102 if (!quiet)
2095 printf("Revoking from %s\n", path); 2103 printf("Revoking from %s\n", path);
2096 while (read_keyfile_line(krl_spec, path, line, sizeof(line), 2104 while (getline(&line, &linesize, krl_spec) != -1) {
2097 &lnum) == 0) { 2105 lnum++;
2098 was_explicit_key = was_sha1 = 0; 2106 was_explicit_key = was_sha1 = 0;
2099 cp = line + strspn(line, " \t"); 2107 cp = line + strspn(line, " \t");
2100 /* Trim trailing space, comments and strip \n */ 2108 /* Trim trailing space, comments and strip \n */
@@ -2194,6 +2202,7 @@ update_krl_from_file(struct passwd *pw, const char *file, int wild_ca,
2194 } 2202 }
2195 if (strcmp(path, "-") != 0) 2203 if (strcmp(path, "-") != 0)
2196 fclose(krl_spec); 2204 fclose(krl_spec);
2205 free(line);
2197 free(path); 2206 free(path);
2198} 2207}
2199 2208
@@ -2247,7 +2256,7 @@ do_gen_krl(struct passwd *pw, int updating, int argc, char **argv)
2247 fatal("Couldn't generate KRL"); 2256 fatal("Couldn't generate KRL");
2248 if ((fd = open(identity_file, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) 2257 if ((fd = open(identity_file, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1)
2249 fatal("open %s: %s", identity_file, strerror(errno)); 2258 fatal("open %s: %s", identity_file, strerror(errno));
2250 if (atomicio(vwrite, fd, (void *)sshbuf_ptr(kbuf), sshbuf_len(kbuf)) != 2259 if (atomicio(vwrite, fd, sshbuf_mutable_ptr(kbuf), sshbuf_len(kbuf)) !=
2251 sshbuf_len(kbuf)) 2260 sshbuf_len(kbuf))
2252 fatal("write %s: %s", identity_file, strerror(errno)); 2261 fatal("write %s: %s", identity_file, strerror(errno));
2253 close(fd); 2262 close(fd);
@@ -2425,6 +2434,7 @@ main(int argc, char **argv)
2425 } 2434 }
2426 if (strcasecmp(optarg, "PEM") == 0) { 2435 if (strcasecmp(optarg, "PEM") == 0) {
2427 convert_format = FMT_PEM; 2436 convert_format = FMT_PEM;
2437 use_new_format = 0;
2428 break; 2438 break;
2429 } 2439 }
2430 fatal("Unsupported conversion format \"%s\"", optarg); 2440 fatal("Unsupported conversion format \"%s\"", optarg);
@@ -2432,7 +2442,7 @@ main(int argc, char **argv)
2432 cert_principals = optarg; 2442 cert_principals = optarg;
2433 break; 2443 break;
2434 case 'o': 2444 case 'o':
2435 use_new_format = 1; 2445 /* no-op; new format is already the default */
2436 break; 2446 break;
2437 case 'p': 2447 case 'p':
2438 change_passphrase = 1; 2448 change_passphrase = 1;
diff --git a/ssh-keyscan.0 b/ssh-keyscan.0
index c0278ee0a..497ac0d9e 100644
--- a/ssh-keyscan.0
+++ b/ssh-keyscan.0
@@ -93,4 +93,4 @@ AUTHORS
93 Davison <wayned@users.sourceforge.net> added support for protocol version 93 Davison <wayned@users.sourceforge.net> added support for protocol version
94 2. 94 2.
95 95
96OpenBSD 6.2 March 5, 2018 OpenBSD 6.2 96OpenBSD 6.4 March 5, 2018 OpenBSD 6.4
diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index 381fb0844..38b1c548b 100644
--- a/ssh-keyscan.c
+++ b/ssh-keyscan.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keyscan.c,v 1.119 2018/03/02 21:40:15 jmc Exp $ */ 1/* $OpenBSD: ssh-keyscan.c,v 1.120 2018/06/06 18:29:18 markus Exp $ */
2/* 2/*
3 * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. 3 * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
4 * 4 *
@@ -646,9 +646,9 @@ main(int argc, char **argv)
646{ 646{
647 int debug_flag = 0, log_level = SYSLOG_LEVEL_INFO; 647 int debug_flag = 0, log_level = SYSLOG_LEVEL_INFO;
648 int opt, fopt_count = 0, j; 648 int opt, fopt_count = 0, j;
649 char *tname, *cp, line[NI_MAXHOST]; 649 char *tname, *cp, *line = NULL;
650 size_t linesize = 0;
650 FILE *fp; 651 FILE *fp;
651 u_long linenum;
652 652
653 extern int optind; 653 extern int optind;
654 extern char *optarg; 654 extern char *optarg;
@@ -769,11 +769,8 @@ main(int argc, char **argv)
769 else if ((fp = fopen(argv[j], "r")) == NULL) 769 else if ((fp = fopen(argv[j], "r")) == NULL)
770 fatal("%s: %s: %s", __progname, argv[j], 770 fatal("%s: %s: %s", __progname, argv[j],
771 strerror(errno)); 771 strerror(errno));
772 linenum = 0;
773 772
774 while (read_keyfile_line(fp, 773 while (getline(&line, &linesize, fp) != -1) {
775 argv[j] == NULL ? "(stdin)" : argv[j], line, sizeof(line),
776 &linenum) != -1) {
777 /* Chomp off trailing whitespace and comments */ 774 /* Chomp off trailing whitespace and comments */
778 if ((cp = strchr(line, '#')) == NULL) 775 if ((cp = strchr(line, '#')) == NULL)
779 cp = line + strlen(line) - 1; 776 cp = line + strlen(line) - 1;
@@ -798,6 +795,7 @@ main(int argc, char **argv)
798 795
799 fclose(fp); 796 fclose(fp);
800 } 797 }
798 free(line);
801 799
802 while (optind < argc) 800 while (optind < argc)
803 do_host(argv[optind++]); 801 do_host(argv[optind++]);
diff --git a/ssh-keysign.0 b/ssh-keysign.0
index d855ad07a..db4355d29 100644
--- a/ssh-keysign.0
+++ b/ssh-keysign.0
@@ -49,4 +49,4 @@ HISTORY
49AUTHORS 49AUTHORS
50 Markus Friedl <markus@openbsd.org> 50 Markus Friedl <markus@openbsd.org>
51 51
52OpenBSD 6.2 February 17, 2016 OpenBSD 6.2 52OpenBSD 6.4 February 17, 2016 OpenBSD 6.4
diff --git a/ssh-keysign.c b/ssh-keysign.c
index 78bb66b08..744ecb4f9 100644
--- a/ssh-keysign.c
+++ b/ssh-keysign.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keysign.c,v 1.54 2018/02/23 15:58:38 markus Exp $ */ 1/* $OpenBSD: ssh-keysign.c,v 1.55 2018/07/27 05:34:42 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -62,11 +62,6 @@ struct ssh *active_state = NULL; /* XXX needed for linking */
62 62
63extern char *__progname; 63extern char *__progname;
64 64
65/* XXX readconf.c needs these */
66uid_t original_real_uid;
67
68extern char *__progname;
69
70static int 65static int
71valid_request(struct passwd *pw, char *host, struct sshkey **ret, 66valid_request(struct passwd *pw, char *host, struct sshkey **ret,
72 u_char *data, size_t datalen) 67 u_char *data, size_t datalen)
@@ -201,8 +196,7 @@ main(int argc, char **argv)
201 key_fd[i++] = open(_PATH_HOST_XMSS_KEY_FILE, O_RDONLY); 196 key_fd[i++] = open(_PATH_HOST_XMSS_KEY_FILE, O_RDONLY);
202 key_fd[i++] = open(_PATH_HOST_RSA_KEY_FILE, O_RDONLY); 197 key_fd[i++] = open(_PATH_HOST_RSA_KEY_FILE, O_RDONLY);
203 198
204 original_real_uid = getuid(); /* XXX readconf.c needs this */ 199 if ((pw = getpwuid(getuid())) == NULL)
205 if ((pw = getpwuid(original_real_uid)) == NULL)
206 fatal("getpwuid failed"); 200 fatal("getpwuid failed");
207 pw = pwcopy(pw); 201 pw = pwcopy(pw);
208 202
diff --git a/ssh-pkcs11-client.c b/ssh-pkcs11-client.c
index fc7582827..028b272cb 100644
--- a/ssh-pkcs11-client.c
+++ b/ssh-pkcs11-client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-pkcs11-client.c,v 1.8 2018/02/05 05:37:46 tb Exp $ */ 1/* $OpenBSD: ssh-pkcs11-client.c,v 1.10 2018/07/09 21:59:10 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2010 Markus Friedl. All rights reserved. 3 * Copyright (c) 2010 Markus Friedl. All rights reserved.
4 * 4 *
@@ -34,13 +34,14 @@
34 34
35#include "pathnames.h" 35#include "pathnames.h"
36#include "xmalloc.h" 36#include "xmalloc.h"
37#include "buffer.h" 37#include "sshbuf.h"
38#include "log.h" 38#include "log.h"
39#include "misc.h" 39#include "misc.h"
40#include "key.h" 40#include "sshkey.h"
41#include "authfd.h" 41#include "authfd.h"
42#include "atomicio.h" 42#include "atomicio.h"
43#include "ssh-pkcs11.h" 43#include "ssh-pkcs11.h"
44#include "ssherr.h"
44 45
45/* borrows code from sftp-server and ssh-agent */ 46/* borrows code from sftp-server and ssh-agent */
46 47
@@ -48,34 +49,37 @@ int fd = -1;
48pid_t pid = -1; 49pid_t pid = -1;
49 50
50static void 51static void
51send_msg(Buffer *m) 52send_msg(struct sshbuf *m)
52{ 53{
53 u_char buf[4]; 54 u_char buf[4];
54 int mlen = buffer_len(m); 55 size_t mlen = sshbuf_len(m);
56 int r;
55 57
56 put_u32(buf, mlen); 58 POKE_U32(buf, mlen);
57 if (atomicio(vwrite, fd, buf, 4) != 4 || 59 if (atomicio(vwrite, fd, buf, 4) != 4 ||
58 atomicio(vwrite, fd, buffer_ptr(m), 60 atomicio(vwrite, fd, sshbuf_mutable_ptr(m),
59 buffer_len(m)) != buffer_len(m)) 61 sshbuf_len(m)) != sshbuf_len(m))
60 error("write to helper failed"); 62 error("write to helper failed");
61 buffer_consume(m, mlen); 63 if ((r = sshbuf_consume(m, mlen)) != 0)
64 fatal("%s: buffer error: %s", __func__, ssh_err(r));
62} 65}
63 66
64static int 67static int
65recv_msg(Buffer *m) 68recv_msg(struct sshbuf *m)
66{ 69{
67 u_int l, len; 70 u_int l, len;
68 u_char buf[1024]; 71 u_char c, buf[1024];
72 int r;
69 73
70 if ((len = atomicio(read, fd, buf, 4)) != 4) { 74 if ((len = atomicio(read, fd, buf, 4)) != 4) {
71 error("read from helper failed: %u", len); 75 error("read from helper failed: %u", len);
72 return (0); /* XXX */ 76 return (0); /* XXX */
73 } 77 }
74 len = get_u32(buf); 78 len = PEEK_U32(buf);
75 if (len > 256 * 1024) 79 if (len > 256 * 1024)
76 fatal("response too long: %u", len); 80 fatal("response too long: %u", len);
77 /* read len bytes into m */ 81 /* read len bytes into m */
78 buffer_clear(m); 82 sshbuf_reset(m);
79 while (len > 0) { 83 while (len > 0) {
80 l = len; 84 l = len;
81 if (l > sizeof(buf)) 85 if (l > sizeof(buf))
@@ -84,10 +88,13 @@ recv_msg(Buffer *m)
84 error("response from helper failed."); 88 error("response from helper failed.");
85 return (0); /* XXX */ 89 return (0); /* XXX */
86 } 90 }
87 buffer_append(m, buf, l); 91 if ((r = sshbuf_put(m, buf, l)) != 0)
92 fatal("%s: buffer error: %s", __func__, ssh_err(r));
88 len -= l; 93 len -= l;
89 } 94 }
90 return (buffer_get_char(m)); 95 if ((r = sshbuf_get_u8(m, &c)) != 0)
96 fatal("%s: buffer error: %s", __func__, ssh_err(r));
97 return c;
91} 98}
92 99
93int 100int
@@ -109,34 +116,39 @@ pkcs11_rsa_private_encrypt(int flen, const u_char *from, u_char *to, RSA *rsa,
109{ 116{
110 struct sshkey key; /* XXX */ 117 struct sshkey key; /* XXX */
111 u_char *blob, *signature = NULL; 118 u_char *blob, *signature = NULL;
112 u_int blen, slen = 0; 119 size_t blen, slen = 0;
113 int ret = -1; 120 int r, ret = -1;
114 Buffer msg; 121 struct sshbuf *msg;
115 122
116 if (padding != RSA_PKCS1_PADDING) 123 if (padding != RSA_PKCS1_PADDING)
117 return (-1); 124 return (-1);
118 key.type = KEY_RSA; 125 key.type = KEY_RSA;
119 key.rsa = rsa; 126 key.rsa = rsa;
120 if (key_to_blob(&key, &blob, &blen) == 0) 127 if ((r = sshkey_to_blob(&key, &blob, &blen)) != 0) {
128 error("%s: sshkey_to_blob: %s", __func__, ssh_err(r));
121 return -1; 129 return -1;
122 buffer_init(&msg); 130 }
123 buffer_put_char(&msg, SSH2_AGENTC_SIGN_REQUEST); 131 if ((msg = sshbuf_new()) == NULL)
124 buffer_put_string(&msg, blob, blen); 132 fatal("%s: sshbuf_new failed", __func__);
125 buffer_put_string(&msg, from, flen); 133 if ((r = sshbuf_put_u8(msg, SSH2_AGENTC_SIGN_REQUEST)) != 0 ||
126 buffer_put_int(&msg, 0); 134 (r = sshbuf_put_string(msg, blob, blen)) != 0 ||
135 (r = sshbuf_put_string(msg, from, flen)) != 0 ||
136 (r = sshbuf_put_u32(msg, 0)) != 0)
137 fatal("%s: buffer error: %s", __func__, ssh_err(r));
127 free(blob); 138 free(blob);
128 send_msg(&msg); 139 send_msg(msg);
129 buffer_clear(&msg); 140 sshbuf_reset(msg);
130 141
131 if (recv_msg(&msg) == SSH2_AGENT_SIGN_RESPONSE) { 142 if (recv_msg(msg) == SSH2_AGENT_SIGN_RESPONSE) {
132 signature = buffer_get_string(&msg, &slen); 143 if ((r = sshbuf_get_string(msg, &signature, &slen)) != 0)
133 if (slen <= (u_int)RSA_size(rsa)) { 144 fatal("%s: buffer error: %s", __func__, ssh_err(r));
145 if (slen <= (size_t)RSA_size(rsa)) {
134 memcpy(to, signature, slen); 146 memcpy(to, signature, slen);
135 ret = slen; 147 ret = slen;
136 } 148 }
137 free(signature); 149 free(signature);
138 } 150 }
139 buffer_free(&msg); 151 sshbuf_free(msg);
140 return (ret); 152 return (ret);
141} 153}
142 154
@@ -185,31 +197,39 @@ pkcs11_start_helper(void)
185} 197}
186 198
187int 199int
188pkcs11_add_provider(char *name, char *pin, Key ***keysp) 200pkcs11_add_provider(char *name, char *pin, struct sshkey ***keysp)
189{ 201{
190 struct sshkey *k; 202 struct sshkey *k;
191 int i, nkeys; 203 int r;
192 u_char *blob; 204 u_char *blob;
193 u_int blen; 205 size_t blen;
194 Buffer msg; 206 u_int nkeys, i;
207 struct sshbuf *msg;
195 208
196 if (fd < 0 && pkcs11_start_helper() < 0) 209 if (fd < 0 && pkcs11_start_helper() < 0)
197 return (-1); 210 return (-1);
198 211
199 buffer_init(&msg); 212 if ((msg = sshbuf_new()) == NULL)
200 buffer_put_char(&msg, SSH_AGENTC_ADD_SMARTCARD_KEY); 213 fatal("%s: sshbuf_new failed", __func__);
201 buffer_put_cstring(&msg, name); 214 if ((r = sshbuf_put_u8(msg, SSH_AGENTC_ADD_SMARTCARD_KEY)) != 0 ||
202 buffer_put_cstring(&msg, pin); 215 (r = sshbuf_put_cstring(msg, name)) != 0 ||
203 send_msg(&msg); 216 (r = sshbuf_put_cstring(msg, pin)) != 0)
204 buffer_clear(&msg); 217 fatal("%s: buffer error: %s", __func__, ssh_err(r));
218 send_msg(msg);
219 sshbuf_reset(msg);
205 220
206 if (recv_msg(&msg) == SSH2_AGENT_IDENTITIES_ANSWER) { 221 if (recv_msg(msg) == SSH2_AGENT_IDENTITIES_ANSWER) {
207 nkeys = buffer_get_int(&msg); 222 if ((r = sshbuf_get_u32(msg, &nkeys)) != 0)
208 *keysp = xcalloc(nkeys, sizeof(Key *)); 223 fatal("%s: buffer error: %s", __func__, ssh_err(r));
224 *keysp = xcalloc(nkeys, sizeof(struct sshkey *));
209 for (i = 0; i < nkeys; i++) { 225 for (i = 0; i < nkeys; i++) {
210 blob = buffer_get_string(&msg, &blen); 226 /* XXX clean up properly instead of fatal() */
211 free(buffer_get_string(&msg, NULL)); 227 if ((r = sshbuf_get_string(msg, &blob, &blen)) != 0 ||
212 k = key_from_blob(blob, blen); 228 (r = sshbuf_skip_string(msg)) != 0)
229 fatal("%s: buffer error: %s",
230 __func__, ssh_err(r));
231 if ((r = sshkey_from_blob(blob, blen, &k)) != 0)
232 fatal("%s: bad key: %s", __func__, ssh_err(r));
213 wrap_key(k->rsa); 233 wrap_key(k->rsa);
214 (*keysp)[i] = k; 234 (*keysp)[i] = k;
215 free(blob); 235 free(blob);
@@ -217,26 +237,28 @@ pkcs11_add_provider(char *name, char *pin, Key ***keysp)
217 } else { 237 } else {
218 nkeys = -1; 238 nkeys = -1;
219 } 239 }
220 buffer_free(&msg); 240 sshbuf_free(msg);
221 return (nkeys); 241 return (nkeys);
222} 242}
223 243
224int 244int
225pkcs11_del_provider(char *name) 245pkcs11_del_provider(char *name)
226{ 246{
227 int ret = -1; 247 int r, ret = -1;
228 Buffer msg; 248 struct sshbuf *msg;
229 249
230 buffer_init(&msg); 250 if ((msg = sshbuf_new()) == NULL)
231 buffer_put_char(&msg, SSH_AGENTC_REMOVE_SMARTCARD_KEY); 251 fatal("%s: sshbuf_new failed", __func__);
232 buffer_put_cstring(&msg, name); 252 if ((r = sshbuf_put_u8(msg, SSH_AGENTC_REMOVE_SMARTCARD_KEY)) != 0 ||
233 buffer_put_cstring(&msg, ""); 253 (r = sshbuf_put_cstring(msg, name)) != 0 ||
234 send_msg(&msg); 254 (r = sshbuf_put_cstring(msg, "")) != 0)
235 buffer_clear(&msg); 255 fatal("%s: buffer error: %s", __func__, ssh_err(r));
256 send_msg(msg);
257 sshbuf_reset(msg);
236 258
237 if (recv_msg(&msg) == SSH_AGENT_SUCCESS) 259 if (recv_msg(msg) == SSH_AGENT_SUCCESS)
238 ret = 0; 260 ret = 0;
239 buffer_free(&msg); 261 sshbuf_free(msg);
240 return (ret); 262 return (ret);
241} 263}
242 264
diff --git a/ssh-pkcs11-helper.0 b/ssh-pkcs11-helper.0
index 93e5565b7..4d5c9843b 100644
--- a/ssh-pkcs11-helper.0
+++ b/ssh-pkcs11-helper.0
@@ -22,4 +22,4 @@ HISTORY
22AUTHORS 22AUTHORS
23 Markus Friedl <markus@openbsd.org> 23 Markus Friedl <markus@openbsd.org>
24 24
25OpenBSD 6.2 July 16, 2013 OpenBSD 6.2 25OpenBSD 6.4 July 16, 2013 OpenBSD 6.4
diff --git a/ssh-rsa.c b/ssh-rsa.c
index 49e71c87f..1756315b9 100644
--- a/ssh-rsa.c
+++ b/ssh-rsa.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-rsa.c,v 1.66 2018/02/14 16:27:24 jsing Exp $ */ 1/* $OpenBSD: ssh-rsa.c,v 1.67 2018/07/03 11:39:54 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2003 Markus Friedl <markus@openbsd.org> 3 * Copyright (c) 2000, 2003 Markus Friedl <markus@openbsd.org>
4 * 4 *
@@ -51,11 +51,14 @@ rsa_hash_alg_ident(int hash_alg)
51 return NULL; 51 return NULL;
52} 52}
53 53
54/*
55 * Returns the hash algorithm ID for a given algorithm identifier as used
56 * inside the signature blob,
57 */
54static int 58static int
55rsa_hash_alg_from_ident(const char *ident) 59rsa_hash_id_from_ident(const char *ident)
56{ 60{
57 if (strcmp(ident, "ssh-rsa") == 0 || 61 if (strcmp(ident, "ssh-rsa") == 0)
58 strcmp(ident, "ssh-rsa-cert-v01@openssh.com") == 0)
59 return SSH_DIGEST_SHA1; 62 return SSH_DIGEST_SHA1;
60 if (strcmp(ident, "rsa-sha2-256") == 0) 63 if (strcmp(ident, "rsa-sha2-256") == 0)
61 return SSH_DIGEST_SHA256; 64 return SSH_DIGEST_SHA256;
@@ -64,6 +67,27 @@ rsa_hash_alg_from_ident(const char *ident)
64 return -1; 67 return -1;
65} 68}
66 69
70/*
71 * Return the hash algorithm ID for the specified key name. This includes
72 * all the cases of rsa_hash_id_from_ident() but also the certificate key
73 * types.
74 */
75static int
76rsa_hash_id_from_keyname(const char *alg)
77{
78 int r;
79
80 if ((r = rsa_hash_id_from_ident(alg)) != -1)
81 return r;
82 if (strcmp(alg, "ssh-rsa-cert-v01@openssh.com") == 0)
83 return SSH_DIGEST_SHA1;
84 if (strcmp(alg, "rsa-sha2-256-cert-v01@openssh.com") == 0)
85 return SSH_DIGEST_SHA256;
86 if (strcmp(alg, "rsa-sha2-512-cert-v01@openssh.com") == 0)
87 return SSH_DIGEST_SHA512;
88 return -1;
89}
90
67static int 91static int
68rsa_hash_alg_nid(int type) 92rsa_hash_alg_nid(int type)
69{ 93{
@@ -135,7 +159,7 @@ ssh_rsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,
135 if (alg_ident == NULL || strlen(alg_ident) == 0) 159 if (alg_ident == NULL || strlen(alg_ident) == 0)
136 hash_alg = SSH_DIGEST_SHA1; 160 hash_alg = SSH_DIGEST_SHA1;
137 else 161 else
138 hash_alg = rsa_hash_alg_from_ident(alg_ident); 162 hash_alg = rsa_hash_id_from_keyname(alg_ident);
139 if (key == NULL || key->rsa == NULL || hash_alg == -1 || 163 if (key == NULL || key->rsa == NULL || hash_alg == -1 ||
140 sshkey_type_plain(key->type) != KEY_RSA) 164 sshkey_type_plain(key->type) != KEY_RSA)
141 return SSH_ERR_INVALID_ARGUMENT; 165 return SSH_ERR_INVALID_ARGUMENT;
@@ -202,7 +226,7 @@ ssh_rsa_verify(const struct sshkey *key,
202 const char *alg) 226 const char *alg)
203{ 227{
204 char *sigtype = NULL; 228 char *sigtype = NULL;
205 int hash_alg, ret = SSH_ERR_INTERNAL_ERROR; 229 int hash_alg, want_alg, ret = SSH_ERR_INTERNAL_ERROR;
206 size_t len = 0, diff, modlen, dlen; 230 size_t len = 0, diff, modlen, dlen;
207 struct sshbuf *b = NULL; 231 struct sshbuf *b = NULL;
208 u_char digest[SSH_DIGEST_MAX_LENGTH], *osigblob, *sigblob = NULL; 232 u_char digest[SSH_DIGEST_MAX_LENGTH], *osigblob, *sigblob = NULL;
@@ -220,18 +244,24 @@ ssh_rsa_verify(const struct sshkey *key,
220 ret = SSH_ERR_INVALID_FORMAT; 244 ret = SSH_ERR_INVALID_FORMAT;
221 goto out; 245 goto out;
222 } 246 }
223 /* XXX djm: need cert types that reliably yield SHA-2 signatures */ 247 if ((hash_alg = rsa_hash_id_from_ident(sigtype)) == -1) {
224 if (alg != NULL && strcmp(alg, sigtype) != 0 &&
225 strcmp(alg, "ssh-rsa-cert-v01@openssh.com") != 0) {
226 error("%s: RSA signature type mismatch: "
227 "expected %s received %s", __func__, alg, sigtype);
228 ret = SSH_ERR_SIGNATURE_INVALID;
229 goto out;
230 }
231 if ((hash_alg = rsa_hash_alg_from_ident(sigtype)) == -1) {
232 ret = SSH_ERR_KEY_TYPE_MISMATCH; 248 ret = SSH_ERR_KEY_TYPE_MISMATCH;
233 goto out; 249 goto out;
234 } 250 }
251 /*
252 * Allow ssh-rsa-cert-v01 certs to generate SHA2 signatures for
253 * legacy reasons, but otherwise the signature type should match.
254 */
255 if (alg != NULL && strcmp(alg, "ssh-rsa-cert-v01@openssh.com") != 0) {
256 if ((want_alg = rsa_hash_id_from_keyname(alg)) == -1) {
257 ret = SSH_ERR_INVALID_ARGUMENT;
258 goto out;
259 }
260 if (hash_alg != want_alg) {
261 ret = SSH_ERR_SIGNATURE_INVALID;
262 goto out;
263 }
264 }
235 if (sshbuf_get_string(b, &sigblob, &len) != 0) { 265 if (sshbuf_get_string(b, &sigblob, &len) != 0) {
236 ret = SSH_ERR_INVALID_FORMAT; 266 ret = SSH_ERR_INVALID_FORMAT;
237 goto out; 267 goto out;
diff --git a/ssh.0 b/ssh.0
index 228553c8b..bab5eef3b 100644
--- a/ssh.0
+++ b/ssh.0
@@ -269,7 +269,6 @@ DESCRIPTION
269 IdentitiesOnly 269 IdentitiesOnly
270 IdentityAgent 270 IdentityAgent
271 IdentityFile 271 IdentityFile
272 Include
273 IPQoS 272 IPQoS
274 KbdInteractiveAuthentication 273 KbdInteractiveAuthentication
275 KbdInteractiveDevices 274 KbdInteractiveDevices
@@ -298,6 +297,7 @@ DESCRIPTION
298 SendEnv 297 SendEnv
299 ServerAliveInterval 298 ServerAliveInterval
300 ServerAliveCountMax 299 ServerAliveCountMax
300 SetEnv
301 StreamLocalBindMask 301 StreamLocalBindMask
302 StreamLocalBindUnlink 302 StreamLocalBindUnlink
303 StrictHostKeyChecking 303 StrictHostKeyChecking
@@ -305,7 +305,6 @@ DESCRIPTION
305 Tunnel 305 Tunnel
306 TunnelDevice 306 TunnelDevice
307 UpdateHostKeys 307 UpdateHostKeys
308 UsePrivilegedPort
309 User 308 User
310 UserKnownHostsFile 309 UserKnownHostsFile
311 VerifyHostKeyDNS 310 VerifyHostKeyDNS
@@ -405,9 +404,12 @@ DESCRIPTION
405 The devices may be specified by numerical ID or the keyword 404 The devices may be specified by numerical ID or the keyword
406 M-bM-^@M-^\anyM-bM-^@M-^], which uses the next available tunnel device. If 405 M-bM-^@M-^\anyM-bM-^@M-^], which uses the next available tunnel device. If
407 remote_tun is not specified, it defaults to M-bM-^@M-^\anyM-bM-^@M-^]. See also the 406 remote_tun is not specified, it defaults to M-bM-^@M-^\anyM-bM-^@M-^]. See also the
408 Tunnel and TunnelDevice directives in ssh_config(5). If the 407 Tunnel and TunnelDevice directives in ssh_config(5).
409 Tunnel directive is unset, it is set to the default tunnel mode, 408
410 which is M-bM-^@M-^\point-to-pointM-bM-^@M-^]. 409 If the Tunnel directive is unset, it will be set to the default
410 tunnel mode, which is M-bM-^@M-^\point-to-pointM-bM-^@M-^]. If a different Tunnel
411 forwarding mode it desired, then it should be specified before
412 -w.
411 413
412 -X Enables X11 forwarding. This can also be specified on a per-host 414 -X Enables X11 forwarding. This can also be specified on a per-host
413 basis in a configuration file. 415 basis in a configuration file.
@@ -973,4 +975,4 @@ AUTHORS
973 created OpenSSH. Markus Friedl contributed the support for SSH protocol 975 created OpenSSH. Markus Friedl contributed the support for SSH protocol
974 versions 1.5 and 2.0. 976 versions 1.5 and 2.0.
975 977
976OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 978OpenBSD 6.4 July 19, 2018 OpenBSD 6.4
diff --git a/ssh.1 b/ssh.1
index b4078525b..b20908a5e 100644
--- a/ssh.1
+++ b/ssh.1
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh.1,v 1.391 2018/02/23 07:38:09 jmc Exp $ 36.\" $OpenBSD: ssh.1,v 1.396 2018/07/19 10:28:47 dtucker Exp $
37.Dd $Mdocdate: February 23 2018 $ 37.Dd $Mdocdate: July 19 2018 $
38.Dt SSH 1 38.Dt SSH 1
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -499,7 +499,6 @@ For full details of the options listed below, and their possible values, see
499.It IdentitiesOnly 499.It IdentitiesOnly
500.It IdentityAgent 500.It IdentityAgent
501.It IdentityFile 501.It IdentityFile
502.It Include
503.It IPQoS 502.It IPQoS
504.It KbdInteractiveAuthentication 503.It KbdInteractiveAuthentication
505.It KbdInteractiveDevices 504.It KbdInteractiveDevices
@@ -528,6 +527,7 @@ For full details of the options listed below, and their possible values, see
528.It SendEnv 527.It SendEnv
529.It ServerAliveInterval 528.It ServerAliveInterval
530.It ServerAliveCountMax 529.It ServerAliveCountMax
530.It SetEnv
531.It StreamLocalBindMask 531.It StreamLocalBindMask
532.It StreamLocalBindUnlink 532.It StreamLocalBindUnlink
533.It StrictHostKeyChecking 533.It StrictHostKeyChecking
@@ -535,7 +535,6 @@ For full details of the options listed below, and their possible values, see
535.It Tunnel 535.It Tunnel
536.It TunnelDevice 536.It TunnelDevice
537.It UpdateHostKeys 537.It UpdateHostKeys
538.It UsePrivilegedPort
539.It User 538.It User
540.It UserKnownHostsFile 539.It UserKnownHostsFile
541.It VerifyHostKeyDNS 540.It VerifyHostKeyDNS
@@ -742,10 +741,15 @@ and
742.Cm TunnelDevice 741.Cm TunnelDevice
743directives in 742directives in
744.Xr ssh_config 5 . 743.Xr ssh_config 5 .
744.Pp
745If the 745If the
746.Cm Tunnel 746.Cm Tunnel
747directive is unset, it is set to the default tunnel mode, which is 747directive is unset, it will be set to the default tunnel mode, which is
748.Dq point-to-point . 748.Dq point-to-point .
749If a different
750.Cm Tunnel
751forwarding mode it desired, then it should be specified before
752.Fl w .
749.Pp 753.Pp
750.It Fl X 754.It Fl X
751Enables X11 forwarding. 755Enables X11 forwarding.
diff --git a/ssh.c b/ssh.c
index d3619fe29..ce628848c 100644
--- a/ssh.c
+++ b/ssh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.c,v 1.475 2018/02/23 15:58:38 markus Exp $ */ 1/* $OpenBSD: ssh.c,v 1.490 2018/07/27 05:34:42 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -87,9 +87,9 @@
87#include "cipher.h" 87#include "cipher.h"
88#include "digest.h" 88#include "digest.h"
89#include "packet.h" 89#include "packet.h"
90#include "buffer.h" 90#include "sshbuf.h"
91#include "channels.h" 91#include "channels.h"
92#include "key.h" 92#include "sshkey.h"
93#include "authfd.h" 93#include "authfd.h"
94#include "authfile.h" 94#include "authfile.h"
95#include "pathnames.h" 95#include "pathnames.h"
@@ -104,7 +104,6 @@
104#include "sshpty.h" 104#include "sshpty.h"
105#include "match.h" 105#include "match.h"
106#include "msg.h" 106#include "msg.h"
107#include "uidswap.h"
108#include "version.h" 107#include "version.h"
109#include "ssherr.h" 108#include "ssherr.h"
110#include "myproposal.h" 109#include "myproposal.h"
@@ -178,12 +177,8 @@ struct sockaddr_storage hostaddr;
178/* Private host keys. */ 177/* Private host keys. */
179Sensitive sensitive_data; 178Sensitive sensitive_data;
180 179
181/* Original real UID. */
182uid_t original_real_uid;
183uid_t original_effective_uid;
184
185/* command to be executed */ 180/* command to be executed */
186Buffer command; 181struct sshbuf *command;
187 182
188/* Should we execute a command or invoke a subsystem? */ 183/* Should we execute a command or invoke a subsystem? */
189int subsystem_flag = 0; 184int subsystem_flag = 0;
@@ -224,7 +219,7 @@ tilde_expand_paths(char **paths, u_int num_paths)
224 char *cp; 219 char *cp;
225 220
226 for (i = 0; i < num_paths; i++) { 221 for (i = 0; i < num_paths; i++) {
227 cp = tilde_expand_filename(paths[i], original_real_uid); 222 cp = tilde_expand_filename(paths[i], getuid());
228 free(paths[i]); 223 free(paths[i]);
229 paths[i] = cp; 224 paths[i] = cp;
230 } 225 }
@@ -504,6 +499,30 @@ resolve_canonicalize(char **hostp, int port)
504} 499}
505 500
506/* 501/*
502 * Check the result of hostkey loading, ignoring some errors and
503 * fatal()ing for others.
504 */
505static void
506check_load(int r, const char *path, const char *message)
507{
508 switch (r) {
509 case 0:
510 break;
511 case SSH_ERR_INTERNAL_ERROR:
512 case SSH_ERR_ALLOC_FAIL:
513 fatal("load %s \"%s\": %s", message, path, ssh_err(r));
514 case SSH_ERR_SYSTEM_ERROR:
515 /* Ignore missing files */
516 if (errno == ENOENT)
517 break;
518 /* FALLTHROUGH */
519 default:
520 error("load %s \"%s\": %s", message, path, ssh_err(r));
521 break;
522 }
523}
524
525/*
507 * Read per-user configuration file. Ignore the system wide config 526 * Read per-user configuration file. Ignore the system wide config
508 * file if the user specifies a config file on the command line. 527 * file if the user specifies a config file on the command line.
509 */ 528 */
@@ -597,35 +616,10 @@ main(int ac, char **av)
597 */ 616 */
598 closefrom(STDERR_FILENO + 1); 617 closefrom(STDERR_FILENO + 1);
599 618
600 /*
601 * Save the original real uid. It will be needed later (uid-swapping
602 * may clobber the real uid).
603 */
604 original_real_uid = getuid();
605 original_effective_uid = geteuid();
606
607 /*
608 * Use uid-swapping to give up root privileges for the duration of
609 * option processing. We will re-instantiate the rights when we are
610 * ready to create the privileged port, and will permanently drop
611 * them when the port has been created (actually, when the connection
612 * has been made, as we may need to create the port several times).
613 */
614 PRIV_END;
615
616#ifdef HAVE_SETRLIMIT
617 /* If we are installed setuid root be careful to not drop core. */
618 if (original_real_uid != original_effective_uid) {
619 struct rlimit rlim;
620 rlim.rlim_cur = rlim.rlim_max = 0;
621 if (setrlimit(RLIMIT_CORE, &rlim) < 0)
622 fatal("setrlimit failed: %.100s", strerror(errno));
623 }
624#endif
625 /* Get user data. */ 619 /* Get user data. */
626 pw = getpwuid(original_real_uid); 620 pw = getpwuid(getuid());
627 if (!pw) { 621 if (!pw) {
628 logit("No user exists for uid %lu", (u_long)original_real_uid); 622 logit("No user exists for uid %lu", (u_long)getuid());
629 exit(255); 623 exit(255);
630 } 624 }
631 /* Take a copy of the returned structure. */ 625 /* Take a copy of the returned structure. */
@@ -728,7 +722,6 @@ main(int ac, char **av)
728 fatal("Invalid multiplex command."); 722 fatal("Invalid multiplex command.");
729 break; 723 break;
730 case 'P': /* deprecated */ 724 case 'P': /* deprecated */
731 options.use_privileged_port = 0;
732 break; 725 break;
733 case 'Q': 726 case 'Q':
734 cp = NULL; 727 cp = NULL;
@@ -769,7 +762,7 @@ main(int ac, char **av)
769 options.gss_deleg_creds = 1; 762 options.gss_deleg_creds = 1;
770 break; 763 break;
771 case 'i': 764 case 'i':
772 p = tilde_expand_filename(optarg, original_real_uid); 765 p = tilde_expand_filename(optarg, getuid());
773 if (stat(p, &st) < 0) 766 if (stat(p, &st) < 0)
774 fprintf(stderr, "Warning: Identity file %s " 767 fprintf(stderr, "Warning: Identity file %s "
775 "not accessible: %s.\n", p, 768 "not accessible: %s.\n", p,
@@ -1042,7 +1035,8 @@ main(int ac, char **av)
1042#endif 1035#endif
1043 1036
1044 /* Initialize the command to execute on remote host. */ 1037 /* Initialize the command to execute on remote host. */
1045 buffer_init(&command); 1038 if ((command = sshbuf_new()) == NULL)
1039 fatal("sshbuf_new failed");
1046 1040
1047 /* 1041 /*
1048 * Save the command to execute on the remote host in a buffer. There 1042 * Save the command to execute on the remote host in a buffer. There
@@ -1059,9 +1053,10 @@ main(int ac, char **av)
1059 } else { 1053 } else {
1060 /* A command has been specified. Store it into the buffer. */ 1054 /* A command has been specified. Store it into the buffer. */
1061 for (i = 0; i < ac; i++) { 1055 for (i = 0; i < ac; i++) {
1062 if (i) 1056 if ((r = sshbuf_putf(command, "%s%s",
1063 buffer_append(&command, " ", 1); 1057 i ? " " : "", av[i])) != 0)
1064 buffer_append(&command, av[i], strlen(av[i])); 1058 fatal("%s: buffer error: %s",
1059 __func__, ssh_err(r));
1065 } 1060 }
1066 } 1061 }
1067 1062
@@ -1171,6 +1166,14 @@ main(int ac, char **av)
1171 */ 1166 */
1172 if (options.jump_host != NULL) { 1167 if (options.jump_host != NULL) {
1173 char port_s[8]; 1168 char port_s[8];
1169 const char *sshbin = argv0;
1170
1171 /*
1172 * Try to use SSH indicated by argv[0], but fall back to
1173 * "ssh" if it appears unavailable.
1174 */
1175 if (strchr(argv0, '/') != NULL && access(argv0, X_OK) != 0)
1176 sshbin = "ssh";
1174 1177
1175 /* Consistency check */ 1178 /* Consistency check */
1176 if (options.proxy_command != NULL) 1179 if (options.proxy_command != NULL)
@@ -1179,7 +1182,8 @@ main(int ac, char **av)
1179 options.proxy_use_fdpass = 0; 1182 options.proxy_use_fdpass = 0;
1180 snprintf(port_s, sizeof(port_s), "%d", options.jump_port); 1183 snprintf(port_s, sizeof(port_s), "%d", options.jump_port);
1181 xasprintf(&options.proxy_command, 1184 xasprintf(&options.proxy_command,
1182 "ssh%s%s%s%s%s%s%s%s%s%.*s -W '[%%h]:%%p' %s", 1185 "%s%s%s%s%s%s%s%s%s%s%.*s -W '[%%h]:%%p' %s",
1186 sshbin,
1183 /* Optional "-l user" argument if jump_user set */ 1187 /* Optional "-l user" argument if jump_user set */
1184 options.jump_user == NULL ? "" : " -l ", 1188 options.jump_user == NULL ? "" : " -l ",
1185 options.jump_user == NULL ? "" : options.jump_user, 1189 options.jump_user == NULL ? "" : options.jump_user,
@@ -1220,16 +1224,12 @@ main(int ac, char **av)
1220 } 1224 }
1221 if (options.connection_attempts <= 0) 1225 if (options.connection_attempts <= 0)
1222 fatal("Invalid number of ConnectionAttempts"); 1226 fatal("Invalid number of ConnectionAttempts");
1223#ifndef HAVE_CYGWIN
1224 if (original_effective_uid != 0)
1225 options.use_privileged_port = 0;
1226#endif
1227 1227
1228 if (buffer_len(&command) != 0 && options.remote_command != NULL) 1228 if (sshbuf_len(command) != 0 && options.remote_command != NULL)
1229 fatal("Cannot execute command-line and remote command."); 1229 fatal("Cannot execute command-line and remote command.");
1230 1230
1231 /* Cannot fork to background if no command. */ 1231 /* Cannot fork to background if no command. */
1232 if (fork_after_authentication_flag && buffer_len(&command) == 0 && 1232 if (fork_after_authentication_flag && sshbuf_len(command) == 0 &&
1233 options.remote_command == NULL && !no_shell_flag) 1233 options.remote_command == NULL && !no_shell_flag)
1234 fatal("Cannot fork into background without a command " 1234 fatal("Cannot fork into background without a command "
1235 "to execute."); 1235 "to execute.");
@@ -1242,7 +1242,7 @@ main(int ac, char **av)
1242 tty_flag = 1; 1242 tty_flag = 1;
1243 1243
1244 /* Allocate a tty by default if no command specified. */ 1244 /* Allocate a tty by default if no command specified. */
1245 if (buffer_len(&command) == 0 && options.remote_command == NULL) 1245 if (sshbuf_len(command) == 0 && options.remote_command == NULL)
1246 tty_flag = options.request_tty != REQUEST_TTY_NO; 1246 tty_flag = options.request_tty != REQUEST_TTY_NO;
1247 1247
1248 /* Force no tty */ 1248 /* Force no tty */
@@ -1269,7 +1269,8 @@ main(int ac, char **av)
1269 strlcpy(shorthost, thishost, sizeof(shorthost)); 1269 strlcpy(shorthost, thishost, sizeof(shorthost));
1270 shorthost[strcspn(thishost, ".")] = '\0'; 1270 shorthost[strcspn(thishost, ".")] = '\0';
1271 snprintf(portstr, sizeof(portstr), "%d", options.port); 1271 snprintf(portstr, sizeof(portstr), "%d", options.port);
1272 snprintf(uidstr, sizeof(uidstr), "%d", pw->pw_uid); 1272 snprintf(uidstr, sizeof(uidstr), "%llu",
1273 (unsigned long long)pw->pw_uid);
1273 1274
1274 if ((md = ssh_digest_start(SSH_DIGEST_SHA1)) == NULL || 1275 if ((md = ssh_digest_start(SSH_DIGEST_SHA1)) == NULL ||
1275 ssh_digest_update(md, thishost, strlen(thishost)) < 0 || 1276 ssh_digest_update(md, thishost, strlen(thishost)) < 0 ||
@@ -1294,6 +1295,7 @@ main(int ac, char **av)
1294 "L", shorthost, 1295 "L", shorthost,
1295 "d", pw->pw_dir, 1296 "d", pw->pw_dir,
1296 "h", host, 1297 "h", host,
1298 "i", uidstr,
1297 "l", thishost, 1299 "l", thishost,
1298 "n", host_arg, 1300 "n", host_arg,
1299 "p", portstr, 1301 "p", portstr,
@@ -1302,18 +1304,19 @@ main(int ac, char **av)
1302 (char *)NULL); 1304 (char *)NULL);
1303 debug3("expanded RemoteCommand: %s", options.remote_command); 1305 debug3("expanded RemoteCommand: %s", options.remote_command);
1304 free(cp); 1306 free(cp);
1305 buffer_append(&command, options.remote_command, 1307 if ((r = sshbuf_put(command, options.remote_command,
1306 strlen(options.remote_command)); 1308 strlen(options.remote_command))) != 0)
1309 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1307 } 1310 }
1308 1311
1309 if (options.control_path != NULL) { 1312 if (options.control_path != NULL) {
1310 cp = tilde_expand_filename(options.control_path, 1313 cp = tilde_expand_filename(options.control_path, getuid());
1311 original_real_uid);
1312 free(options.control_path); 1314 free(options.control_path);
1313 options.control_path = percent_expand(cp, 1315 options.control_path = percent_expand(cp,
1314 "C", conn_hash_hex, 1316 "C", conn_hash_hex,
1315 "L", shorthost, 1317 "L", shorthost,
1316 "h", host, 1318 "h", host,
1319 "i", uidstr,
1317 "l", thishost, 1320 "l", thishost,
1318 "n", host_arg, 1321 "n", host_arg,
1319 "p", portstr, 1322 "p", portstr,
@@ -1323,7 +1326,6 @@ main(int ac, char **av)
1323 (char *)NULL); 1326 (char *)NULL);
1324 free(cp); 1327 free(cp);
1325 } 1328 }
1326 free(conn_hash_hex);
1327 1329
1328 if (config_test) { 1330 if (config_test) {
1329 dump_client_config(&options, host); 1331 dump_client_config(&options, host);
@@ -1357,8 +1359,7 @@ main(int ac, char **av)
1357 /* Open a connection to the remote host. */ 1359 /* Open a connection to the remote host. */
1358 if (ssh_connect(ssh, host, addrs, &hostaddr, options.port, 1360 if (ssh_connect(ssh, host, addrs, &hostaddr, options.port,
1359 options.address_family, options.connection_attempts, 1361 options.address_family, options.connection_attempts,
1360 &timeout_ms, options.tcp_keep_alive, 1362 &timeout_ms, options.tcp_keep_alive) != 0)
1361 options.use_privileged_port) != 0)
1362 exit(255); 1363 exit(255);
1363 1364
1364 if (addrs != NULL) 1365 if (addrs != NULL)
@@ -1373,100 +1374,45 @@ main(int ac, char **av)
1373 debug3("timeout: %d ms remain after connect", timeout_ms); 1374 debug3("timeout: %d ms remain after connect", timeout_ms);
1374 1375
1375 /* 1376 /*
1376 * If we successfully made the connection, load the host private key 1377 * If we successfully made the connection and we have hostbased auth
1377 * in case we will need it later for combined rsa-rhosts 1378 * enabled, load the public keys so we can later use the ssh-keysign
1378 * authentication. This must be done before releasing extra 1379 * helper to sign challenges.
1379 * privileges, because the file is only readable by root.
1380 * If we cannot access the private keys, load the public keys
1381 * instead and try to execute the ssh-keysign helper instead.
1382 */ 1380 */
1383 sensitive_data.nkeys = 0; 1381 sensitive_data.nkeys = 0;
1384 sensitive_data.keys = NULL; 1382 sensitive_data.keys = NULL;
1385 sensitive_data.external_keysign = 0;
1386 if (options.hostbased_authentication) { 1383 if (options.hostbased_authentication) {
1387 sensitive_data.nkeys = 11; 1384 sensitive_data.nkeys = 10;
1388 sensitive_data.keys = xcalloc(sensitive_data.nkeys, 1385 sensitive_data.keys = xcalloc(sensitive_data.nkeys,
1389 sizeof(struct sshkey)); /* XXX */ 1386 sizeof(struct sshkey));
1390 for (i = 0; i < sensitive_data.nkeys; i++) 1387
1391 sensitive_data.keys[i] = NULL; 1388 /* XXX check errors? */
1392 1389#define L_PUBKEY(p,o) do { \
1393 PRIV_START; 1390 if ((o) >= sensitive_data.nkeys) \
1394#ifdef OPENSSL_HAS_ECC 1391 fatal("%s pubkey out of array bounds", __func__); \
1395 sensitive_data.keys[1] = key_load_private_cert(KEY_ECDSA, 1392 check_load(sshkey_load_public(p, &(sensitive_data.keys[o]), NULL), \
1396 _PATH_HOST_ECDSA_KEY_FILE, "", NULL); 1393 p, "pubkey"); \
1397#endif 1394} while (0)
1398 sensitive_data.keys[2] = key_load_private_cert(KEY_ED25519, 1395#define L_CERT(p,o) do { \
1399 _PATH_HOST_ED25519_KEY_FILE, "", NULL); 1396 if ((o) >= sensitive_data.nkeys) \
1400 sensitive_data.keys[3] = key_load_private_cert(KEY_RSA, 1397 fatal("%s cert out of array bounds", __func__); \
1401 _PATH_HOST_RSA_KEY_FILE, "", NULL); 1398 check_load(sshkey_load_cert(p, &(sensitive_data.keys[o])), p, "cert"); \
1402 sensitive_data.keys[4] = key_load_private_cert(KEY_DSA, 1399} while (0)
1403 _PATH_HOST_DSA_KEY_FILE, "", NULL); 1400
1404#ifdef OPENSSL_HAS_ECC 1401 if (options.hostbased_authentication == 1) {
1405 sensitive_data.keys[5] = key_load_private_type(KEY_ECDSA, 1402 L_CERT(_PATH_HOST_ECDSA_KEY_FILE, 0);
1406 _PATH_HOST_ECDSA_KEY_FILE, "", NULL, NULL); 1403 L_CERT(_PATH_HOST_ED25519_KEY_FILE, 1);
1407#endif 1404 L_CERT(_PATH_HOST_RSA_KEY_FILE, 2);
1408 sensitive_data.keys[6] = key_load_private_type(KEY_ED25519, 1405 L_CERT(_PATH_HOST_DSA_KEY_FILE, 3);
1409 _PATH_HOST_ED25519_KEY_FILE, "", NULL, NULL); 1406 L_PUBKEY(_PATH_HOST_ECDSA_KEY_FILE, 4);
1410 sensitive_data.keys[7] = key_load_private_type(KEY_RSA, 1407 L_PUBKEY(_PATH_HOST_ED25519_KEY_FILE, 5);
1411 _PATH_HOST_RSA_KEY_FILE, "", NULL, NULL); 1408 L_PUBKEY(_PATH_HOST_RSA_KEY_FILE, 6);
1412 sensitive_data.keys[8] = key_load_private_type(KEY_DSA, 1409 L_PUBKEY(_PATH_HOST_DSA_KEY_FILE, 7);
1413 _PATH_HOST_DSA_KEY_FILE, "", NULL, NULL); 1410 L_CERT(_PATH_HOST_XMSS_KEY_FILE, 8);
1414 sensitive_data.keys[9] = key_load_private_cert(KEY_XMSS, 1411 L_PUBKEY(_PATH_HOST_XMSS_KEY_FILE, 9);
1415 _PATH_HOST_XMSS_KEY_FILE, "", NULL);
1416 sensitive_data.keys[10] = key_load_private_type(KEY_XMSS,
1417 _PATH_HOST_XMSS_KEY_FILE, "", NULL, NULL);
1418 PRIV_END;
1419
1420 if (options.hostbased_authentication == 1 &&
1421 sensitive_data.keys[0] == NULL &&
1422 sensitive_data.keys[5] == NULL &&
1423 sensitive_data.keys[6] == NULL &&
1424 sensitive_data.keys[7] == NULL &&
1425 sensitive_data.keys[8] == NULL &&
1426 sensitive_data.keys[9] == NULL) {
1427#ifdef OPENSSL_HAS_ECC
1428 sensitive_data.keys[1] = key_load_cert(
1429 _PATH_HOST_ECDSA_KEY_FILE);
1430#endif
1431 sensitive_data.keys[2] = key_load_cert(
1432 _PATH_HOST_ED25519_KEY_FILE);
1433 sensitive_data.keys[3] = key_load_cert(
1434 _PATH_HOST_RSA_KEY_FILE);
1435 sensitive_data.keys[4] = key_load_cert(
1436 _PATH_HOST_DSA_KEY_FILE);
1437#ifdef OPENSSL_HAS_ECC
1438 sensitive_data.keys[5] = key_load_public(
1439 _PATH_HOST_ECDSA_KEY_FILE, NULL);
1440#endif
1441 sensitive_data.keys[6] = key_load_public(
1442 _PATH_HOST_ED25519_KEY_FILE, NULL);
1443 sensitive_data.keys[7] = key_load_public(
1444 _PATH_HOST_RSA_KEY_FILE, NULL);
1445 sensitive_data.keys[8] = key_load_public(
1446 _PATH_HOST_DSA_KEY_FILE, NULL);
1447 sensitive_data.keys[9] = key_load_cert(
1448 _PATH_HOST_XMSS_KEY_FILE);
1449 sensitive_data.keys[10] = key_load_public(
1450 _PATH_HOST_XMSS_KEY_FILE, NULL);
1451 sensitive_data.external_keysign = 1;
1452 } 1412 }
1453 } 1413 }
1454 /*
1455 * Get rid of any extra privileges that we may have. We will no
1456 * longer need them. Also, extra privileges could make it very hard
1457 * to read identity files and other non-world-readable files from the
1458 * user's home directory if it happens to be on a NFS volume where
1459 * root is mapped to nobody.
1460 */
1461 if (original_effective_uid == 0) {
1462 PRIV_START;
1463 permanently_set_uid(pw);
1464 }
1465 1414
1466 /* 1415 /* Create ~/.ssh * directory if it doesn't already exist. */
1467 * Now that we are back to our own permissions, create ~/.ssh
1468 * directory if it doesn't already exist.
1469 */
1470 if (config == NULL) { 1416 if (config == NULL) {
1471 r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir, 1417 r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir,
1472 strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR); 1418 strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR);
@@ -1485,17 +1431,22 @@ main(int ac, char **av)
1485 /* load options.identity_files */ 1431 /* load options.identity_files */
1486 load_public_identity_files(pw); 1432 load_public_identity_files(pw);
1487 1433
1488 /* optionally set the SSH_AUTHSOCKET_ENV_NAME varibale */ 1434 /* optionally set the SSH_AUTHSOCKET_ENV_NAME variable */
1489 if (options.identity_agent && 1435 if (options.identity_agent &&
1490 strcmp(options.identity_agent, SSH_AUTHSOCKET_ENV_NAME) != 0) { 1436 strcmp(options.identity_agent, SSH_AUTHSOCKET_ENV_NAME) != 0) {
1491 if (strcmp(options.identity_agent, "none") == 0) { 1437 if (strcmp(options.identity_agent, "none") == 0) {
1492 unsetenv(SSH_AUTHSOCKET_ENV_NAME); 1438 unsetenv(SSH_AUTHSOCKET_ENV_NAME);
1493 } else { 1439 } else {
1494 p = tilde_expand_filename(options.identity_agent, 1440 p = tilde_expand_filename(options.identity_agent,
1495 original_real_uid); 1441 getuid());
1496 cp = percent_expand(p, "d", pw->pw_dir, 1442 cp = percent_expand(p,
1497 "u", pw->pw_name, "l", thishost, "h", host, 1443 "d", pw->pw_dir,
1498 "r", options.user, (char *)NULL); 1444 "h", host,
1445 "i", uidstr,
1446 "l", thishost,
1447 "r", options.user,
1448 "u", pw->pw_name,
1449 (char *)NULL);
1499 setenv(SSH_AUTHSOCKET_ENV_NAME, cp, 1); 1450 setenv(SSH_AUTHSOCKET_ENV_NAME, cp, 1);
1500 free(cp); 1451 free(cp);
1501 free(p); 1452 free(p);
@@ -1527,7 +1478,7 @@ main(int ac, char **av)
1527 if (sensitive_data.keys[i] != NULL) { 1478 if (sensitive_data.keys[i] != NULL) {
1528 /* Destroys contents safely */ 1479 /* Destroys contents safely */
1529 debug3("clear hostkey %d", i); 1480 debug3("clear hostkey %d", i);
1530 key_free(sensitive_data.keys[i]); 1481 sshkey_free(sensitive_data.keys[i]);
1531 sensitive_data.keys[i] = NULL; 1482 sensitive_data.keys[i] = NULL;
1532 } 1483 }
1533 } 1484 }
@@ -1537,7 +1488,7 @@ main(int ac, char **av)
1537 free(options.identity_files[i]); 1488 free(options.identity_files[i]);
1538 options.identity_files[i] = NULL; 1489 options.identity_files[i] = NULL;
1539 if (options.identity_keys[i]) { 1490 if (options.identity_keys[i]) {
1540 key_free(options.identity_keys[i]); 1491 sshkey_free(options.identity_keys[i]);
1541 options.identity_keys[i] = NULL; 1492 options.identity_keys[i] = NULL;
1542 } 1493 }
1543 } 1494 }
@@ -1638,10 +1589,10 @@ ssh_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt)
1638 logit("Allocated port %u for remote forward to %s:%d", 1589 logit("Allocated port %u for remote forward to %s:%d",
1639 rfwd->allocated_port, 1590 rfwd->allocated_port,
1640 rfwd->connect_host, rfwd->connect_port); 1591 rfwd->connect_host, rfwd->connect_port);
1641 channel_update_permitted_opens(ssh, 1592 channel_update_permission(ssh,
1642 rfwd->handle, rfwd->allocated_port); 1593 rfwd->handle, rfwd->allocated_port);
1643 } else { 1594 } else {
1644 channel_update_permitted_opens(ssh, rfwd->handle, -1); 1595 channel_update_permission(ssh, rfwd->handle, -1);
1645 } 1596 }
1646 } 1597 }
1647 1598
@@ -1830,7 +1781,7 @@ ssh_session2_setup(struct ssh *ssh, int id, int success, void *arg)
1830 options.ip_qos_interactive, options.ip_qos_bulk); 1781 options.ip_qos_interactive, options.ip_qos_bulk);
1831 1782
1832 client_session2_setup(ssh, id, tty_flag, subsystem_flag, getenv("TERM"), 1783 client_session2_setup(ssh, id, tty_flag, subsystem_flag, getenv("TERM"),
1833 NULL, fileno(stdin), &command, environ); 1784 NULL, fileno(stdin), command, environ);
1834} 1785}
1835 1786
1836/* open new channel for a session */ 1787/* open new channel for a session */
@@ -1900,6 +1851,7 @@ ssh_session2(struct ssh *ssh, struct passwd *pw)
1900 "L", shorthost, 1851 "L", shorthost,
1901 "d", pw->pw_dir, 1852 "d", pw->pw_dir,
1902 "h", host, 1853 "h", host,
1854 "i", uidstr,
1903 "l", thishost, 1855 "l", thishost,
1904 "n", host_arg, 1856 "n", host_arg,
1905 "p", portstr, 1857 "p", portstr,
@@ -2009,8 +1961,10 @@ load_public_identity_files(struct passwd *pw)
2009 u_int n_ids, n_certs; 1961 u_int n_ids, n_certs;
2010 char *identity_files[SSH_MAX_IDENTITY_FILES]; 1962 char *identity_files[SSH_MAX_IDENTITY_FILES];
2011 struct sshkey *identity_keys[SSH_MAX_IDENTITY_FILES]; 1963 struct sshkey *identity_keys[SSH_MAX_IDENTITY_FILES];
1964 int identity_file_userprovided[SSH_MAX_IDENTITY_FILES];
2012 char *certificate_files[SSH_MAX_CERTIFICATE_FILES]; 1965 char *certificate_files[SSH_MAX_CERTIFICATE_FILES];
2013 struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES]; 1966 struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES];
1967 int certificate_file_userprovided[SSH_MAX_CERTIFICATE_FILES];
2014#ifdef ENABLE_PKCS11 1968#ifdef ENABLE_PKCS11
2015 struct sshkey **keys; 1969 struct sshkey **keys;
2016 int nkeys; 1970 int nkeys;
@@ -2019,8 +1973,12 @@ load_public_identity_files(struct passwd *pw)
2019 n_ids = n_certs = 0; 1973 n_ids = n_certs = 0;
2020 memset(identity_files, 0, sizeof(identity_files)); 1974 memset(identity_files, 0, sizeof(identity_files));
2021 memset(identity_keys, 0, sizeof(identity_keys)); 1975 memset(identity_keys, 0, sizeof(identity_keys));
1976 memset(identity_file_userprovided, 0,
1977 sizeof(identity_file_userprovided));
2022 memset(certificate_files, 0, sizeof(certificate_files)); 1978 memset(certificate_files, 0, sizeof(certificate_files));
2023 memset(certificates, 0, sizeof(certificates)); 1979 memset(certificates, 0, sizeof(certificates));
1980 memset(certificate_file_userprovided, 0,
1981 sizeof(certificate_file_userprovided));
2024 1982
2025#ifdef ENABLE_PKCS11 1983#ifdef ENABLE_PKCS11
2026 if (options.pkcs11_provider != NULL && 1984 if (options.pkcs11_provider != NULL &&
@@ -2030,7 +1988,7 @@ load_public_identity_files(struct passwd *pw)
2030 &keys)) > 0) { 1988 &keys)) > 0) {
2031 for (i = 0; i < nkeys; i++) { 1989 for (i = 0; i < nkeys; i++) {
2032 if (n_ids >= SSH_MAX_IDENTITY_FILES) { 1990 if (n_ids >= SSH_MAX_IDENTITY_FILES) {
2033 key_free(keys[i]); 1991 sshkey_free(keys[i]);
2034 continue; 1992 continue;
2035 } 1993 }
2036 identity_keys[n_ids] = keys[i]; 1994 identity_keys[n_ids] = keys[i];
@@ -2041,8 +1999,6 @@ load_public_identity_files(struct passwd *pw)
2041 free(keys); 1999 free(keys);
2042 } 2000 }
2043#endif /* ENABLE_PKCS11 */ 2001#endif /* ENABLE_PKCS11 */
2044 if ((pw = getpwuid(original_real_uid)) == NULL)
2045 fatal("load_public_identity_files: getpwuid failed");
2046 for (i = 0; i < options.num_identity_files; i++) { 2002 for (i = 0; i < options.num_identity_files; i++) {
2047 if (n_ids >= SSH_MAX_IDENTITY_FILES || 2003 if (n_ids >= SSH_MAX_IDENTITY_FILES ||
2048 strcasecmp(options.identity_files[i], "none") == 0) { 2004 strcasecmp(options.identity_files[i], "none") == 0) {
@@ -2050,19 +2006,20 @@ load_public_identity_files(struct passwd *pw)
2050 options.identity_files[i] = NULL; 2006 options.identity_files[i] = NULL;
2051 continue; 2007 continue;
2052 } 2008 }
2053 cp = tilde_expand_filename(options.identity_files[i], 2009 cp = tilde_expand_filename(options.identity_files[i], getuid());
2054 original_real_uid);
2055 filename = percent_expand(cp, "d", pw->pw_dir, 2010 filename = percent_expand(cp, "d", pw->pw_dir,
2056 "u", pw->pw_name, "l", thishost, "h", host, 2011 "u", pw->pw_name, "l", thishost, "h", host,
2057 "r", options.user, (char *)NULL); 2012 "r", options.user, (char *)NULL);
2058 free(cp); 2013 free(cp);
2059 public = key_load_public(filename, NULL); 2014 check_load(sshkey_load_public(filename, &public, NULL),
2015 filename, "pubkey");
2060 debug("identity file %s type %d", filename, 2016 debug("identity file %s type %d", filename,
2061 public ? public->type : -1); 2017 public ? public->type : -1);
2062 free(options.identity_files[i]); 2018 free(options.identity_files[i]);
2063 identity_files[n_ids] = filename; 2019 identity_files[n_ids] = filename;
2064 identity_keys[n_ids] = public; 2020 identity_keys[n_ids] = public;
2065 2021 identity_file_userprovided[n_ids] =
2022 options.identity_file_userprovided[i];
2066 if (++n_ids >= SSH_MAX_IDENTITY_FILES) 2023 if (++n_ids >= SSH_MAX_IDENTITY_FILES)
2067 continue; 2024 continue;
2068 2025
@@ -2073,23 +2030,26 @@ load_public_identity_files(struct passwd *pw)
2073 if (options.num_certificate_files != 0) 2030 if (options.num_certificate_files != 0)
2074 continue; 2031 continue;
2075 xasprintf(&cp, "%s-cert", filename); 2032 xasprintf(&cp, "%s-cert", filename);
2076 public = key_load_public(cp, NULL); 2033 check_load(sshkey_load_public(cp, &public, NULL),
2034 filename, "pubkey");
2077 debug("identity file %s type %d", cp, 2035 debug("identity file %s type %d", cp,
2078 public ? public->type : -1); 2036 public ? public->type : -1);
2079 if (public == NULL) { 2037 if (public == NULL) {
2080 free(cp); 2038 free(cp);
2081 continue; 2039 continue;
2082 } 2040 }
2083 if (!key_is_cert(public)) { 2041 if (!sshkey_is_cert(public)) {
2084 debug("%s: key %s type %s is not a certificate", 2042 debug("%s: key %s type %s is not a certificate",
2085 __func__, cp, key_type(public)); 2043 __func__, cp, sshkey_type(public));
2086 key_free(public); 2044 sshkey_free(public);
2087 free(cp); 2045 free(cp);
2088 continue; 2046 continue;
2089 } 2047 }
2090 /* NB. leave filename pointing to private key */ 2048 /* NB. leave filename pointing to private key */
2091 identity_files[n_ids] = xstrdup(filename); 2049 identity_files[n_ids] = xstrdup(filename);
2092 identity_keys[n_ids] = public; 2050 identity_keys[n_ids] = public;
2051 identity_file_userprovided[n_ids] =
2052 options.identity_file_userprovided[i];
2093 n_ids++; 2053 n_ids++;
2094 } 2054 }
2095 2055
@@ -2097,13 +2057,19 @@ load_public_identity_files(struct passwd *pw)
2097 fatal("%s: too many certificates", __func__); 2057 fatal("%s: too many certificates", __func__);
2098 for (i = 0; i < options.num_certificate_files; i++) { 2058 for (i = 0; i < options.num_certificate_files; i++) {
2099 cp = tilde_expand_filename(options.certificate_files[i], 2059 cp = tilde_expand_filename(options.certificate_files[i],
2100 original_real_uid); 2060 getuid());
2101 filename = percent_expand(cp, "d", pw->pw_dir, 2061 filename = percent_expand(cp,
2102 "u", pw->pw_name, "l", thishost, "h", host, 2062 "d", pw->pw_dir,
2103 "r", options.user, (char *)NULL); 2063 "h", host,
2064 "i", uidstr,
2065 "l", thishost,
2066 "r", options.user,
2067 "u", pw->pw_name,
2068 (char *)NULL);
2104 free(cp); 2069 free(cp);
2105 2070
2106 public = key_load_public(filename, NULL); 2071 check_load(sshkey_load_public(filename, &public, NULL),
2072 filename, "certificate");
2107 debug("certificate file %s type %d", filename, 2073 debug("certificate file %s type %d", filename,
2108 public ? public->type : -1); 2074 public ? public->type : -1);
2109 free(options.certificate_files[i]); 2075 free(options.certificate_files[i]);
@@ -2112,26 +2078,33 @@ load_public_identity_files(struct passwd *pw)
2112 free(filename); 2078 free(filename);
2113 continue; 2079 continue;
2114 } 2080 }
2115 if (!key_is_cert(public)) { 2081 if (!sshkey_is_cert(public)) {
2116 debug("%s: key %s type %s is not a certificate", 2082 debug("%s: key %s type %s is not a certificate",
2117 __func__, filename, key_type(public)); 2083 __func__, filename, sshkey_type(public));
2118 key_free(public); 2084 sshkey_free(public);
2119 free(filename); 2085 free(filename);
2120 continue; 2086 continue;
2121 } 2087 }
2122 certificate_files[n_certs] = filename; 2088 certificate_files[n_certs] = filename;
2123 certificates[n_certs] = public; 2089 certificates[n_certs] = public;
2090 certificate_file_userprovided[n_certs] =
2091 options.certificate_file_userprovided[i];
2124 ++n_certs; 2092 ++n_certs;
2125 } 2093 }
2126 2094
2127 options.num_identity_files = n_ids; 2095 options.num_identity_files = n_ids;
2128 memcpy(options.identity_files, identity_files, sizeof(identity_files)); 2096 memcpy(options.identity_files, identity_files, sizeof(identity_files));
2129 memcpy(options.identity_keys, identity_keys, sizeof(identity_keys)); 2097 memcpy(options.identity_keys, identity_keys, sizeof(identity_keys));
2098 memcpy(options.identity_file_userprovided,
2099 identity_file_userprovided, sizeof(identity_file_userprovided));
2130 2100
2131 options.num_certificate_files = n_certs; 2101 options.num_certificate_files = n_certs;
2132 memcpy(options.certificate_files, 2102 memcpy(options.certificate_files,
2133 certificate_files, sizeof(certificate_files)); 2103 certificate_files, sizeof(certificate_files));
2134 memcpy(options.certificates, certificates, sizeof(certificates)); 2104 memcpy(options.certificates, certificates, sizeof(certificates));
2105 memcpy(options.certificate_file_userprovided,
2106 certificate_file_userprovided,
2107 sizeof(certificate_file_userprovided));
2135} 2108}
2136 2109
2137static void 2110static void
diff --git a/ssh.h b/ssh.h
index 12d800922..5abfd7a68 100644
--- a/ssh.h
+++ b/ssh.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.h,v 1.87 2017/05/07 23:15:59 djm Exp $ */ 1/* $OpenBSD: ssh.h,v 1.88 2018/06/06 18:29:18 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -31,13 +31,6 @@
31#define SSH_MAX_IDENTITY_FILES 100 31#define SSH_MAX_IDENTITY_FILES 100
32 32
33/* 33/*
34 * Maximum length of lines in authorized_keys file.
35 * Current value permits 16kbit RSA keys and 8kbit DSA keys, with
36 * some room for options and comments.
37 */
38#define SSH_MAX_PUBKEY_BYTES 16384
39
40/*
41 * Major protocol version. Different version indicates major incompatibility 34 * Major protocol version. Different version indicates major incompatibility
42 * that prevents communication. 35 * that prevents communication.
43 * 36 *
diff --git a/ssh_api.h b/ssh_api.h
index 642acd5b2..584f896a7 100644
--- a/ssh_api.h
+++ b/ssh_api.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh_api.h,v 1.1 2015/01/19 20:30:23 markus Exp $ */ 1/* $OpenBSD: ssh_api.h,v 1.2 2018/04/10 00:10:49 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Markus Friedl. All rights reserved. 3 * Copyright (c) 2012 Markus Friedl. All rights reserved.
4 * 4 *
@@ -81,7 +81,7 @@ int ssh_set_verify_host_key_callback(struct ssh *ssh,
81 * ssh_packet_next() sets typep if there is no new packet available. 81 * ssh_packet_next() sets typep if there is no new packet available.
82 * in this case the caller must fill the input byte-stream by passing 82 * in this case the caller must fill the input byte-stream by passing
83 * the data received over network to ssh_input_append(). 83 * the data received over network to ssh_input_append().
84 * additinally, the caller needs to send the resulting output 84 * additionally, the caller needs to send the resulting output
85 * byte-stream back over the network. otherwise the key exchange 85 * byte-stream back over the network. otherwise the key exchange
86 * would not proceed. the output byte-stream is accessed through 86 * would not proceed. the output byte-stream is accessed through
87 * ssh_output_ptr(). 87 * ssh_output_ptr().
diff --git a/ssh_config.0 b/ssh_config.0
index 4109b1909..00afda1ca 100644
--- a/ssh_config.0
+++ b/ssh_config.0
@@ -109,13 +109,11 @@ DESCRIPTION
109 BindAddress 109 BindAddress
110 Use the specified address on the local machine as the source 110 Use the specified address on the local machine as the source
111 address of the connection. Only useful on systems with more than 111 address of the connection. Only useful on systems with more than
112 one address. Note that this option does not work if 112 one address.
113 UsePrivilegedPort is set to yes.
114 113
115 BindInterface 114 BindInterface
116 Use the address of the specified interface on the local machine 115 Use the address of the specified interface on the local machine
117 as the source address of the connection. Note that this option 116 as the source address of the connection.
118 does not work if UsePrivilegedPort is set to yes.
119 117
120 CanonicalDomains 118 CanonicalDomains
121 When CanonicalizeHostname is enabled, this option specifies the 119 When CanonicalizeHostname is enabled, this option specifies the
@@ -216,8 +214,7 @@ DESCRIPTION
216 214
217 chacha20-poly1305@openssh.com, 215 chacha20-poly1305@openssh.com,
218 aes128-ctr,aes192-ctr,aes256-ctr, 216 aes128-ctr,aes192-ctr,aes256-ctr,
219 aes128-gcm@openssh.com,aes256-gcm@openssh.com, 217 aes128-gcm@openssh.com,aes256-gcm@openssh.com
220 aes128-cbc,aes192-cbc,aes256-cbc
221 218
222 The list of available ciphers may also be obtained using "ssh -Q 219 The list of available ciphers may also be obtained using "ssh -Q
223 cipher". 220 cipher".
@@ -429,11 +426,11 @@ DESCRIPTION
429 426
430 HostbasedKeyTypes 427 HostbasedKeyTypes
431 Specifies the key types that will be used for hostbased 428 Specifies the key types that will be used for hostbased
432 authentication as a comma-separated pattern list. Alternately if 429 authentication as a comma-separated list of patterns.
433 the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character, then the 430 Alternately if the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character,
434 specified key types will be appended to the default set instead 431 then the specified key types will be appended to the default set
435 of replacing them. If the specified value begins with a M-bM-^@M-^X-M-bM-^@M-^Y 432 instead of replacing them. If the specified value begins with a
436 character, then the specified key types (including wildcards) 433 M-bM-^@M-^X-M-bM-^@M-^Y character, then the specified key types (including wildcards)
437 will be removed from the default set instead of replacing them. 434 will be removed from the default set instead of replacing them.
438 The default for this option is: 435 The default for this option is:
439 436
@@ -441,9 +438,10 @@ DESCRIPTION
441 ecdsa-sha2-nistp384-cert-v01@openssh.com, 438 ecdsa-sha2-nistp384-cert-v01@openssh.com,
442 ecdsa-sha2-nistp521-cert-v01@openssh.com, 439 ecdsa-sha2-nistp521-cert-v01@openssh.com,
443 ssh-ed25519-cert-v01@openssh.com, 440 ssh-ed25519-cert-v01@openssh.com,
441 rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
444 ssh-rsa-cert-v01@openssh.com, 442 ssh-rsa-cert-v01@openssh.com,
445 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 443 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
446 ssh-ed25519,ssh-rsa 444 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
447 445
448 The -Q option of ssh(1) may be used to list supported key types. 446 The -Q option of ssh(1) may be used to list supported key types.
449 447
@@ -460,9 +458,10 @@ DESCRIPTION
460 ecdsa-sha2-nistp384-cert-v01@openssh.com, 458 ecdsa-sha2-nistp384-cert-v01@openssh.com,
461 ecdsa-sha2-nistp521-cert-v01@openssh.com, 459 ecdsa-sha2-nistp521-cert-v01@openssh.com,
462 ssh-ed25519-cert-v01@openssh.com, 460 ssh-ed25519-cert-v01@openssh.com,
461 rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
463 ssh-rsa-cert-v01@openssh.com, 462 ssh-rsa-cert-v01@openssh.com,
464 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 463 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
465 ssh-ed25519,ssh-rsa 464 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
466 465
467 If hostkeys are known for the destination host then this default 466 If hostkeys are known for the destination host then this default
468 is modified to prefer their algorithms. 467 is modified to prefer their algorithms.
@@ -544,7 +543,7 @@ DESCRIPTION
544 543
545 Include 544 Include
546 Include the specified configuration file(s). Multiple pathnames 545 Include the specified configuration file(s). Multiple pathnames
547 may be specified and each pathname may contain glob(3) wildcards 546 may be specified and each pathname may contain glob(7) wildcards
548 and, for user configurations, shell-like M-bM-^@M-^X~M-bM-^@M-^Y references to user 547 and, for user configurations, shell-like M-bM-^@M-^X~M-bM-^@M-^Y references to user
549 home directories. Files without absolute paths are assumed to be 548 home directories. Files without absolute paths are assumed to be
550 in ~/.ssh if included in a user configuration file or /etc/ssh if 549 in ~/.ssh if included in a user configuration file or /etc/ssh if
@@ -561,8 +560,8 @@ DESCRIPTION
561 is specified, it is used as the packet class unconditionally. If 560 is specified, it is used as the packet class unconditionally. If
562 two values are specified, the first is automatically selected for 561 two values are specified, the first is automatically selected for
563 interactive sessions and the second for non-interactive sessions. 562 interactive sessions and the second for non-interactive sessions.
564 The default is lowdelay for interactive sessions and throughput 563 The default is af21 (Low-Latency Data) for interactive sessions
565 for non-interactive sessions. 564 and cs1 (Lower Effort) for non-interactive sessions.
566 565
567 KbdInteractiveAuthentication 566 KbdInteractiveAuthentication
568 Specifies whether to use keyboard-interactive authentication. 567 Specifies whether to use keyboard-interactive authentication.
@@ -573,8 +572,7 @@ DESCRIPTION
573 authentication. Multiple method names must be comma-separated. 572 authentication. Multiple method names must be comma-separated.
574 The default is to use the server specified list. The methods 573 The default is to use the server specified list. The methods
575 available vary depending on what the server supports. For an 574 available vary depending on what the server supports. For an
576 OpenSSH server, it may be zero or more of: bsdauth, pam, and 575 OpenSSH server, it may be zero or more of: bsdauth and pam.
577 skey.
578 576
579 KexAlgorithms 577 KexAlgorithms
580 Specifies the available KEX (Key Exchange) algorithms. Multiple 578 Specifies the available KEX (Key Exchange) algorithms. Multiple
@@ -735,11 +733,11 @@ DESCRIPTION
735 733
736 PubkeyAcceptedKeyTypes 734 PubkeyAcceptedKeyTypes
737 Specifies the key types that will be used for public key 735 Specifies the key types that will be used for public key
738 authentication as a comma-separated pattern list. Alternately if 736 authentication as a comma-separated list of patterns.
739 the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character, then the key 737 Alternately if the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character,
740 types after it will be appended to the default instead of 738 then the key types after it will be appended to the default
741 replacing it. If the specified value begins with a M-bM-^@M-^X-M-bM-^@M-^Y 739 instead of replacing it. If the specified value begins with a
742 character, then the specified key types (including wildcards) 740 M-bM-^@M-^X-M-bM-^@M-^Y character, then the specified key types (including wildcards)
743 will be removed from the default set instead of replacing them. 741 will be removed from the default set instead of replacing them.
744 The default for this option is: 742 The default for this option is:
745 743
@@ -747,9 +745,10 @@ DESCRIPTION
747 ecdsa-sha2-nistp384-cert-v01@openssh.com, 745 ecdsa-sha2-nistp384-cert-v01@openssh.com,
748 ecdsa-sha2-nistp521-cert-v01@openssh.com, 746 ecdsa-sha2-nistp521-cert-v01@openssh.com,
749 ssh-ed25519-cert-v01@openssh.com, 747 ssh-ed25519-cert-v01@openssh.com,
748 rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
750 ssh-rsa-cert-v01@openssh.com, 749 ssh-rsa-cert-v01@openssh.com,
751 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 750 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
752 ssh-ed25519,ssh-rsa 751 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
753 752
754 The list of available key types may also be obtained using "ssh 753 The list of available key types may also be obtained using "ssh
755 -Q key". 754 -Q key".
@@ -781,7 +780,7 @@ DESCRIPTION
781 780
782 RemoteForward 781 RemoteForward
783 Specifies that a TCP port on the remote machine be forwarded over 782 Specifies that a TCP port on the remote machine be forwarded over
784 the secure channel. The remote port may either be fowarded to a 783 the secure channel. The remote port may either be forwarded to a
785 specified host and port from the local machine, or may act as a 784 specified host and port from the local machine, or may act as a
786 SOCKS 4/5 proxy that allows a remote client to connect to 785 SOCKS 4/5 proxy that allows a remote client to connect to
787 arbitrary destinations from the local machine. The first 786 arbitrary destinations from the local machine. The first
@@ -832,11 +831,14 @@ DESCRIPTION
832 server. Variables are specified by name, which may contain 831 server. Variables are specified by name, which may contain
833 wildcard characters. Multiple environment variables may be 832 wildcard characters. Multiple environment variables may be
834 separated by whitespace or spread across multiple SendEnv 833 separated by whitespace or spread across multiple SendEnv
835 directives. The default is not to send any environment 834 directives.
836 variables.
837 835
838 See PATTERNS for more information on patterns. 836 See PATTERNS for more information on patterns.
839 837
838 It is possible to clear previously set SendEnv variable names by
839 prefixing patterns with -. The default is not to send any
840 environment variables.
841
840 ServerAliveCountMax 842 ServerAliveCountMax
841 Sets the number of server alive messages (see below) which may be 843 Sets the number of server alive messages (see below) which may be
842 sent without ssh(1) receiving any messages back from the server. 844 sent without ssh(1) receiving any messages back from the server.
@@ -862,6 +864,10 @@ DESCRIPTION
862 default is 0, indicating that these messages will not be sent to 864 default is 0, indicating that these messages will not be sent to
863 the server. 865 the server.
864 866
867 SetEnv Directly specify one or more environment variables and their
868 contents to be sent to the server. Similarly to SendEnv, the
869 server must be prepared to accept the environment variable.
870
865 StreamLocalBindMask 871 StreamLocalBindMask
866 Sets the octal file creation mode mask (umask) used when creating 872 Sets the octal file creation mode mask (umask) used when creating
867 a Unix-domain socket file for local or remote port forwarding. 873 a Unix-domain socket file for local or remote port forwarding.
@@ -956,11 +962,6 @@ DESCRIPTION
956 "hostkeys@openssh.com" protocol extension used to inform the 962 "hostkeys@openssh.com" protocol extension used to inform the
957 client of all the server's hostkeys. 963 client of all the server's hostkeys.
958 964
959 UsePrivilegedPort
960 Specifies whether to use a privileged port for outgoing
961 connections. The argument must be yes or no (the default). If
962 set to yes, ssh(1) must be setuid root.
963
964 User Specifies the user to log in as. This can be useful when a 965 User Specifies the user to log in as. This can be useful when a
965 different user name is used on different machines. This saves 966 different user name is used on different machines. This saves
966 the trouble of having to remember to give the user name on the 967 the trouble of having to remember to give the user name on the
@@ -1046,24 +1047,25 @@ TOKENS
1046 tunnel forwarding was requested, or "NONE" otherwise. 1047 tunnel forwarding was requested, or "NONE" otherwise.
1047 %u The local username. 1048 %u The local username.
1048 1049
1049 Match exec accepts the tokens %%, %h, %L, %l, %n, %p, %r, and %u. 1050 Match exec accepts the tokens %%, %h, %i, %L, %l, %n, %p, %r, and %u.
1050 1051
1051 CertificateFile accepts the tokens %%, %d, %h, %l, %r, and %u. 1052 CertificateFile accepts the tokens %%, %d, %h, %i, %l, %r, and %u.
1052 1053
1053 ControlPath accepts the tokens %%, %C, %h, %i, %L, %l, %n, %p, %r, and 1054 ControlPath accepts the tokens %%, %C, %h, %i, %L, %l, %n, %p, %r, and
1054 %u. 1055 %u.
1055 1056
1056 HostName accepts the tokens %% and %h. 1057 HostName accepts the tokens %% and %h.
1057 1058
1058 IdentityAgent and IdentityFile accept the tokens %%, %d, %h, %l, %r, and 1059 IdentityAgent and IdentityFile accept the tokens %%, %d, %h, %i, %l, %r,
1059 %u. 1060 and %u.
1060 1061
1061 LocalCommand accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, %T, and 1062 LocalCommand accepts the tokens %%, %C, %d, %h, %i, %l, %n, %p, %r, %T,
1062 %u. 1063 and %u.
1063 1064
1064 ProxyCommand accepts the tokens %%, %h, %p, and %r. 1065 ProxyCommand accepts the tokens %%, %h, %p, and %r.
1065 1066
1066 RemoteCommand accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, and %u. 1067 RemoteCommand accepts the tokens %%, %C, %d, %h, %i, %l, %n, %p, %r, and
1068 %u.
1067 1069
1068FILES 1070FILES
1069 ~/.ssh/config 1071 ~/.ssh/config
@@ -1089,4 +1091,4 @@ AUTHORS
1089 created OpenSSH. Markus Friedl contributed the support for SSH protocol 1091 created OpenSSH. Markus Friedl contributed the support for SSH protocol
1090 versions 1.5 and 2.0. 1092 versions 1.5 and 2.0.
1091 1093
1092OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 1094OpenBSD 6.4 July 23, 2018 OpenBSD 6.4
diff --git a/ssh_config.5 b/ssh_config.5
index 71705cabd..f499396a3 100644
--- a/ssh_config.5
+++ b/ssh_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh_config.5,v 1.268 2018/02/23 07:38:09 jmc Exp $ 36.\" $OpenBSD: ssh_config.5,v 1.281 2018/07/23 19:02:49 kn Exp $
37.Dd $Mdocdate: February 23 2018 $ 37.Dd $Mdocdate: July 23 2018 $
38.Dt SSH_CONFIG 5 38.Dt SSH_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -258,17 +258,9 @@ or
258Use the specified address on the local machine as the source address of 258Use the specified address on the local machine as the source address of
259the connection. 259the connection.
260Only useful on systems with more than one address. 260Only useful on systems with more than one address.
261Note that this option does not work if
262.Cm UsePrivilegedPort
263is set to
264.Cm yes .
265.It Cm BindInterface 261.It Cm BindInterface
266Use the address of the specified interface on the local machine as the 262Use the address of the specified interface on the local machine as the
267source address of the connection. 263source address of the connection.
268Note that this option does not work if
269.Cm UsePrivilegedPort
270is set to
271.Cm yes .
272.It Cm CanonicalDomains 264.It Cm CanonicalDomains
273When 265When
274.Cm CanonicalizeHostname 266.Cm CanonicalizeHostname
@@ -425,8 +417,7 @@ The default is:
425.Bd -literal -offset indent 417.Bd -literal -offset indent
426chacha20-poly1305@openssh.com, 418chacha20-poly1305@openssh.com,
427aes128-ctr,aes192-ctr,aes256-ctr, 419aes128-ctr,aes192-ctr,aes256-ctr,
428aes128-gcm@openssh.com,aes256-gcm@openssh.com, 420aes128-gcm@openssh.com,aes256-gcm@openssh.com
429aes128-cbc,aes192-cbc,aes256-cbc
430.Ed 421.Ed
431.Pp 422.Pp
432The list of available ciphers may also be obtained using 423The list of available ciphers may also be obtained using
@@ -758,7 +749,7 @@ or
758(the default). 749(the default).
759.It Cm HostbasedKeyTypes 750.It Cm HostbasedKeyTypes
760Specifies the key types that will be used for hostbased authentication 751Specifies the key types that will be used for hostbased authentication
761as a comma-separated pattern list. 752as a comma-separated list of patterns.
762Alternately if the specified value begins with a 753Alternately if the specified value begins with a
763.Sq + 754.Sq +
764character, then the specified key types will be appended to the default set 755character, then the specified key types will be appended to the default set
@@ -773,9 +764,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com,
773ecdsa-sha2-nistp384-cert-v01@openssh.com, 764ecdsa-sha2-nistp384-cert-v01@openssh.com,
774ecdsa-sha2-nistp521-cert-v01@openssh.com, 765ecdsa-sha2-nistp521-cert-v01@openssh.com,
775ssh-ed25519-cert-v01@openssh.com, 766ssh-ed25519-cert-v01@openssh.com,
767rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
776ssh-rsa-cert-v01@openssh.com, 768ssh-rsa-cert-v01@openssh.com,
777ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 769ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
778ssh-ed25519,ssh-rsa 770ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
779.Ed 771.Ed
780.Pp 772.Pp
781The 773The
@@ -800,9 +792,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com,
800ecdsa-sha2-nistp384-cert-v01@openssh.com, 792ecdsa-sha2-nistp384-cert-v01@openssh.com,
801ecdsa-sha2-nistp521-cert-v01@openssh.com, 793ecdsa-sha2-nistp521-cert-v01@openssh.com,
802ssh-ed25519-cert-v01@openssh.com, 794ssh-ed25519-cert-v01@openssh.com,
795rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
803ssh-rsa-cert-v01@openssh.com, 796ssh-rsa-cert-v01@openssh.com,
804ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 797ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
805ssh-ed25519,ssh-rsa 798ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
806.Ed 799.Ed
807.Pp 800.Pp
808If hostkeys are known for the destination host then this default is modified 801If hostkeys are known for the destination host then this default is modified
@@ -933,7 +926,7 @@ to unknown options that appear before it.
933.It Cm Include 926.It Cm Include
934Include the specified configuration file(s). 927Include the specified configuration file(s).
935Multiple pathnames may be specified and each pathname may contain 928Multiple pathnames may be specified and each pathname may contain
936.Xr glob 3 929.Xr glob 7
937wildcards and, for user configurations, shell-like 930wildcards and, for user configurations, shell-like
938.Sq ~ 931.Sq ~
939references to user home directories. 932references to user home directories.
@@ -984,9 +977,11 @@ If one argument is specified, it is used as the packet class unconditionally.
984If two values are specified, the first is automatically selected for 977If two values are specified, the first is automatically selected for
985interactive sessions and the second for non-interactive sessions. 978interactive sessions and the second for non-interactive sessions.
986The default is 979The default is
987.Cm lowdelay 980.Cm af21
981(Low-Latency Data)
988for interactive sessions and 982for interactive sessions and
989.Cm throughput 983.Cm cs1
984(Lower Effort)
990for non-interactive sessions. 985for non-interactive sessions.
991.It Cm KbdInteractiveAuthentication 986.It Cm KbdInteractiveAuthentication
992Specifies whether to use keyboard-interactive authentication. 987Specifies whether to use keyboard-interactive authentication.
@@ -1002,10 +997,9 @@ The default is to use the server specified list.
1002The methods available vary depending on what the server supports. 997The methods available vary depending on what the server supports.
1003For an OpenSSH server, 998For an OpenSSH server,
1004it may be zero or more of: 999it may be zero or more of:
1005.Cm bsdauth , 1000.Cm bsdauth
1006.Cm pam ,
1007and 1001and
1008.Cm skey . 1002.Cm pam .
1009.It Cm KexAlgorithms 1003.It Cm KexAlgorithms
1010Specifies the available KEX (Key Exchange) algorithms. 1004Specifies the available KEX (Key Exchange) algorithms.
1011Multiple algorithms must be comma-separated. 1005Multiple algorithms must be comma-separated.
@@ -1239,7 +1233,7 @@ The default is
1239.Cm no . 1233.Cm no .
1240.It Cm PubkeyAcceptedKeyTypes 1234.It Cm PubkeyAcceptedKeyTypes
1241Specifies the key types that will be used for public key authentication 1235Specifies the key types that will be used for public key authentication
1242as a comma-separated pattern list. 1236as a comma-separated list of patterns.
1243Alternately if the specified value begins with a 1237Alternately if the specified value begins with a
1244.Sq + 1238.Sq +
1245character, then the key types after it will be appended to the default 1239character, then the key types after it will be appended to the default
@@ -1254,9 +1248,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com,
1254ecdsa-sha2-nistp384-cert-v01@openssh.com, 1248ecdsa-sha2-nistp384-cert-v01@openssh.com,
1255ecdsa-sha2-nistp521-cert-v01@openssh.com, 1249ecdsa-sha2-nistp521-cert-v01@openssh.com,
1256ssh-ed25519-cert-v01@openssh.com, 1250ssh-ed25519-cert-v01@openssh.com,
1251rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
1257ssh-rsa-cert-v01@openssh.com, 1252ssh-rsa-cert-v01@openssh.com,
1258ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 1253ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
1259ssh-ed25519,ssh-rsa 1254ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
1260.Ed 1255.Ed
1261.Pp 1256.Pp
1262The list of available key types may also be obtained using 1257The list of available key types may also be obtained using
@@ -1307,7 +1302,7 @@ section.
1307.It Cm RemoteForward 1302.It Cm RemoteForward
1308Specifies that a TCP port on the remote machine be forwarded over 1303Specifies that a TCP port on the remote machine be forwarded over
1309the secure channel. 1304the secure channel.
1310The remote port may either be fowarded to a specified host and port 1305The remote port may either be forwarded to a specified host and port
1311from the local machine, or may act as a SOCKS 4/5 proxy that allows a remote 1306from the local machine, or may act as a SOCKS 4/5 proxy that allows a remote
1312client to connect to arbitrary destinations from the local machine. 1307client to connect to arbitrary destinations from the local machine.
1313The first argument must be 1308The first argument must be
@@ -1393,11 +1388,16 @@ Multiple environment variables may be separated by whitespace or spread
1393across multiple 1388across multiple
1394.Cm SendEnv 1389.Cm SendEnv
1395directives. 1390directives.
1396The default is not to send any environment variables.
1397.Pp 1391.Pp
1398See 1392See
1399.Sx PATTERNS 1393.Sx PATTERNS
1400for more information on patterns. 1394for more information on patterns.
1395.Pp
1396It is possible to clear previously set
1397.Cm SendEnv
1398variable names by prefixing patterns with
1399.Pa - .
1400The default is not to send any environment variables.
1401.It Cm ServerAliveCountMax 1401.It Cm ServerAliveCountMax
1402Sets the number of server alive messages (see below) which may be 1402Sets the number of server alive messages (see below) which may be
1403sent without 1403sent without
@@ -1432,6 +1432,12 @@ will send a message through the encrypted
1432channel to request a response from the server. 1432channel to request a response from the server.
1433The default 1433The default
1434is 0, indicating that these messages will not be sent to the server. 1434is 0, indicating that these messages will not be sent to the server.
1435.It Cm SetEnv
1436Directly specify one or more environment variables and their contents to
1437be sent to the server.
1438Similarly to
1439.Cm SendEnv ,
1440the server must be prepared to accept the environment variable.
1435.It Cm StreamLocalBindMask 1441.It Cm StreamLocalBindMask
1436Sets the octal file creation mode mask 1442Sets the octal file creation mode mask
1437.Pq umask 1443.Pq umask
@@ -1588,17 +1594,6 @@ Presently, only
1588from OpenSSH 6.8 and greater support the 1594from OpenSSH 6.8 and greater support the
1589.Qq hostkeys@openssh.com 1595.Qq hostkeys@openssh.com
1590protocol extension used to inform the client of all the server's hostkeys. 1596protocol extension used to inform the client of all the server's hostkeys.
1591.It Cm UsePrivilegedPort
1592Specifies whether to use a privileged port for outgoing connections.
1593The argument must be
1594.Cm yes
1595or
1596.Cm no
1597(the default).
1598If set to
1599.Cm yes ,
1600.Xr ssh 1
1601must be setuid root.
1602.It Cm User 1597.It Cm User
1603Specifies the user to log in as. 1598Specifies the user to log in as.
1604This can be useful when a different user name is used on different machines. 1599This can be useful when a different user name is used on different machines.
@@ -1737,10 +1732,10 @@ The local username.
1737.El 1732.El
1738.Pp 1733.Pp
1739.Cm Match exec 1734.Cm Match exec
1740accepts the tokens %%, %h, %L, %l, %n, %p, %r, and %u. 1735accepts the tokens %%, %h, %i, %L, %l, %n, %p, %r, and %u.
1741.Pp 1736.Pp
1742.Cm CertificateFile 1737.Cm CertificateFile
1743accepts the tokens %%, %d, %h, %l, %r, and %u. 1738accepts the tokens %%, %d, %h, %i, %l, %r, and %u.
1744.Pp 1739.Pp
1745.Cm ControlPath 1740.Cm ControlPath
1746accepts the tokens %%, %C, %h, %i, %L, %l, %n, %p, %r, and %u. 1741accepts the tokens %%, %C, %h, %i, %L, %l, %n, %p, %r, and %u.
@@ -1751,16 +1746,16 @@ accepts the tokens %% and %h.
1751.Cm IdentityAgent 1746.Cm IdentityAgent
1752and 1747and
1753.Cm IdentityFile 1748.Cm IdentityFile
1754accept the tokens %%, %d, %h, %l, %r, and %u. 1749accept the tokens %%, %d, %h, %i, %l, %r, and %u.
1755.Pp 1750.Pp
1756.Cm LocalCommand 1751.Cm LocalCommand
1757accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, %T, and %u. 1752accepts the tokens %%, %C, %d, %h, %i, %l, %n, %p, %r, %T, and %u.
1758.Pp 1753.Pp
1759.Cm ProxyCommand 1754.Cm ProxyCommand
1760accepts the tokens %%, %h, %p, and %r. 1755accepts the tokens %%, %h, %p, and %r.
1761.Pp 1756.Pp
1762.Cm RemoteCommand 1757.Cm RemoteCommand
1763accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, and %u. 1758accepts the tokens %%, %C, %d, %h, %i, %l, %n, %p, %r, and %u.
1764.Sh FILES 1759.Sh FILES
1765.Bl -tag -width Ds 1760.Bl -tag -width Ds
1766.It Pa ~/.ssh/config 1761.It Pa ~/.ssh/config
diff --git a/sshbuf.c b/sshbuf.c
index de783a363..20ddf9eb6 100644
--- a/sshbuf.c
+++ b/sshbuf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf.c,v 1.11 2017/06/01 06:58:25 djm Exp $ */ 1/* $OpenBSD: sshbuf.c,v 1.12 2018/07/09 21:56:06 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -36,7 +36,6 @@ sshbuf_check_sanity(const struct sshbuf *buf)
36 (!buf->readonly && buf->d != buf->cd) || 36 (!buf->readonly && buf->d != buf->cd) ||
37 buf->refcount < 1 || buf->refcount > SSHBUF_REFS_MAX || 37 buf->refcount < 1 || buf->refcount > SSHBUF_REFS_MAX ||
38 buf->cd == NULL || 38 buf->cd == NULL ||
39 (buf->dont_free && (buf->readonly || buf->parent != NULL)) ||
40 buf->max_size > SSHBUF_SIZE_MAX || 39 buf->max_size > SSHBUF_SIZE_MAX ||
41 buf->alloc > buf->max_size || 40 buf->alloc > buf->max_size ||
42 buf->size > buf->alloc || 41 buf->size > buf->alloc ||
@@ -132,23 +131,8 @@ sshbuf_fromb(struct sshbuf *buf)
132} 131}
133 132
134void 133void
135sshbuf_init(struct sshbuf *ret)
136{
137 explicit_bzero(ret, sizeof(*ret));
138 ret->alloc = SSHBUF_SIZE_INIT;
139 ret->max_size = SSHBUF_SIZE_MAX;
140 ret->readonly = 0;
141 ret->dont_free = 1;
142 ret->refcount = 1;
143 if ((ret->cd = ret->d = calloc(1, ret->alloc)) == NULL)
144 ret->alloc = 0;
145}
146
147void
148sshbuf_free(struct sshbuf *buf) 134sshbuf_free(struct sshbuf *buf)
149{ 135{
150 int dont_free = 0;
151
152 if (buf == NULL) 136 if (buf == NULL)
153 return; 137 return;
154 /* 138 /*
@@ -173,14 +157,12 @@ sshbuf_free(struct sshbuf *buf)
173 buf->refcount--; 157 buf->refcount--;
174 if (buf->refcount > 0) 158 if (buf->refcount > 0)
175 return; 159 return;
176 dont_free = buf->dont_free;
177 if (!buf->readonly) { 160 if (!buf->readonly) {
178 explicit_bzero(buf->d, buf->alloc); 161 explicit_bzero(buf->d, buf->alloc);
179 free(buf->d); 162 free(buf->d);
180 } 163 }
181 explicit_bzero(buf, sizeof(*buf)); 164 explicit_bzero(buf, sizeof(*buf));
182 if (!dont_free) 165 free(buf);
183 free(buf);
184} 166}
185 167
186void 168void
diff --git a/sshbuf.h b/sshbuf.h
index 77f1e9e6d..a43598cac 100644
--- a/sshbuf.h
+++ b/sshbuf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf.h,v 1.9 2017/09/12 06:32:07 djm Exp $ */ 1/* $OpenBSD: sshbuf.h,v 1.11 2018/07/09 21:56:06 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -50,15 +50,6 @@ struct sshbuf {
50 struct sshbuf *parent; /* If child, pointer to parent */ 50 struct sshbuf *parent; /* If child, pointer to parent */
51}; 51};
52 52
53#ifndef SSHBUF_NO_DEPREACTED
54/*
55 * NB. Please do not use sshbuf_init() in new code. Please use sshbuf_new()
56 * instead. sshbuf_init() is deprectated and will go away soon (it is
57 * only included to allow compat with buffer_* in OpenSSH)
58 */
59void sshbuf_init(struct sshbuf *buf);
60#endif
61
62/* 53/*
63 * Create a new sshbuf buffer. 54 * Create a new sshbuf buffer.
64 * Returns pointer to buffer on success, or NULL on allocation failure. 55 * Returns pointer to buffer on success, or NULL on allocation failure.
diff --git a/sshconnect.c b/sshconnect.c
index 3805d35d9..78813c164 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect.c,v 1.297 2018/02/23 15:58:38 markus Exp $ */ 1/* $OpenBSD: sshconnect.c,v 1.304 2018/07/27 05:34:42 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -49,14 +49,12 @@
49#endif 49#endif
50 50
51#include "xmalloc.h" 51#include "xmalloc.h"
52#include "key.h"
53#include "hostfile.h" 52#include "hostfile.h"
54#include "ssh.h" 53#include "ssh.h"
55#include "buffer.h" 54#include "sshbuf.h"
56#include "packet.h" 55#include "packet.h"
57#include "uidswap.h"
58#include "compat.h" 56#include "compat.h"
59#include "key.h" 57#include "sshkey.h"
60#include "sshconnect.h" 58#include "sshconnect.h"
61#include "hostfile.h" 59#include "hostfile.h"
62#include "log.h" 60#include "log.h"
@@ -82,8 +80,6 @@ static pid_t proxy_command_pid = 0;
82/* import */ 80/* import */
83extern Options options; 81extern Options options;
84extern char *__progname; 82extern char *__progname;
85extern uid_t original_real_uid;
86extern uid_t original_effective_uid;
87 83
88static int show_other_keys(struct hostkeys *, struct sshkey *); 84static int show_other_keys(struct hostkeys *, struct sshkey *);
89static void warn_changed_key(struct sshkey *); 85static void warn_changed_key(struct sshkey *);
@@ -131,9 +127,6 @@ ssh_proxy_fdpass_connect(struct ssh *ssh, const char *host, u_short port,
131 if ((pid = fork()) == 0) { 127 if ((pid = fork()) == 0) {
132 char *argv[10]; 128 char *argv[10];
133 129
134 /* Child. Permanently give up superuser privileges. */
135 permanently_drop_suid(original_real_uid);
136
137 close(sp[1]); 130 close(sp[1]);
138 /* Redirect stdin and stdout. */ 131 /* Redirect stdin and stdout. */
139 if (sp[0] != 0) { 132 if (sp[0] != 0) {
@@ -213,9 +206,6 @@ ssh_proxy_connect(struct ssh *ssh, const char *host, u_short port,
213 if ((pid = fork()) == 0) { 206 if ((pid = fork()) == 0) {
214 char *argv[10]; 207 char *argv[10];
215 208
216 /* Child. Permanently give up superuser privileges. */
217 permanently_drop_suid(original_real_uid);
218
219 /* Redirect stdin and stdout. */ 209 /* Redirect stdin and stdout. */
220 close(pin[1]); 210 close(pin[1]);
221 if (pin[0] != 0) { 211 if (pin[0] != 0) {
@@ -277,7 +267,7 @@ ssh_kill_proxy_command(void)
277#ifdef HAVE_IFADDRS_H 267#ifdef HAVE_IFADDRS_H
278/* 268/*
279 * Search a interface address list (returned from getifaddrs(3)) for an 269 * Search a interface address list (returned from getifaddrs(3)) for an
280 * address that matches the desired address family on the specifed interface. 270 * address that matches the desired address family on the specified interface.
281 * Returns 0 and fills in *resultp and *rlenp on success. Returns -1 on failure. 271 * Returns 0 and fills in *resultp and *rlenp on success. Returns -1 on failure.
282 */ 272 */
283static int 273static int
@@ -338,12 +328,12 @@ check_ifaddrs(const char *ifname, int af, const struct ifaddrs *ifaddrs,
338#endif 328#endif
339 329
340/* 330/*
341 * Creates a (possibly privileged) socket for use as the ssh connection. 331 * Creates a socket for use as the ssh connection.
342 */ 332 */
343static int 333static int
344ssh_create_socket(int privileged, struct addrinfo *ai) 334ssh_create_socket(struct addrinfo *ai)
345{ 335{
346 int sock, r, oerrno; 336 int sock, r;
347 struct sockaddr_storage bindaddr; 337 struct sockaddr_storage bindaddr;
348 socklen_t bindaddrlen = 0; 338 socklen_t bindaddrlen = 0;
349 struct addrinfo hints, *res = NULL; 339 struct addrinfo hints, *res = NULL;
@@ -360,8 +350,7 @@ ssh_create_socket(int privileged, struct addrinfo *ai)
360 fcntl(sock, F_SETFD, FD_CLOEXEC); 350 fcntl(sock, F_SETFD, FD_CLOEXEC);
361 351
362 /* Bind the socket to an alternative local IP address */ 352 /* Bind the socket to an alternative local IP address */
363 if (options.bind_address == NULL && options.bind_interface == NULL && 353 if (options.bind_address == NULL && options.bind_interface == NULL)
364 !privileged)
365 return sock; 354 return sock;
366 355
367 if (options.bind_address != NULL) { 356 if (options.bind_address != NULL) {
@@ -410,22 +399,7 @@ ssh_create_socket(int privileged, struct addrinfo *ai)
410 ssh_gai_strerror(r)); 399 ssh_gai_strerror(r));
411 goto fail; 400 goto fail;
412 } 401 }
413 /* 402 if (bind(sock, (struct sockaddr *)&bindaddr, bindaddrlen) != 0) {
414 * If we are running as root and want to connect to a privileged
415 * port, bind our own socket to a privileged port.
416 */
417 if (privileged) {
418 PRIV_START;
419 r = bindresvport_sa(sock,
420 bindaddrlen == 0 ? NULL : (struct sockaddr *)&bindaddr);
421 oerrno = errno;
422 PRIV_END;
423 if (r < 0) {
424 error("bindresvport_sa %s: %s", ntop,
425 strerror(oerrno));
426 goto fail;
427 }
428 } else if (bind(sock, (struct sockaddr *)&bindaddr, bindaddrlen) != 0) {
429 error("bind %s: %s", ntop, strerror(errno)); 403 error("bind %s: %s", ntop, strerror(errno));
430 goto fail; 404 goto fail;
431 } 405 }
@@ -515,9 +489,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
515/* 489/*
516 * Opens a TCP/IP connection to the remote server on the given host. 490 * Opens a TCP/IP connection to the remote server on the given host.
517 * The address of the remote host will be returned in hostaddr. 491 * The address of the remote host will be returned in hostaddr.
518 * If port is 0, the default port will be used. If needpriv is true, 492 * If port is 0, the default port will be used.
519 * a privileged port will be allocated to make the connection.
520 * This requires super-user privileges if needpriv is true.
521 * Connection_attempts specifies the maximum number of tries (one per 493 * Connection_attempts specifies the maximum number of tries (one per
522 * second). If proxy_command is non-NULL, it specifies the command (with %h 494 * second). If proxy_command is non-NULL, it specifies the command (with %h
523 * and %p substituted for host and port, respectively) to use to contact 495 * and %p substituted for host and port, respectively) to use to contact
@@ -526,14 +498,14 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
526static int 498static int
527ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, 499ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop,
528 struct sockaddr_storage *hostaddr, u_short port, int family, 500 struct sockaddr_storage *hostaddr, u_short port, int family,
529 int connection_attempts, int *timeout_ms, int want_keepalive, int needpriv) 501 int connection_attempts, int *timeout_ms, int want_keepalive)
530{ 502{
531 int on = 1; 503 int on = 1;
532 int oerrno, sock = -1, attempt; 504 int oerrno, sock = -1, attempt;
533 char ntop[NI_MAXHOST], strport[NI_MAXSERV]; 505 char ntop[NI_MAXHOST], strport[NI_MAXSERV];
534 struct addrinfo *ai; 506 struct addrinfo *ai;
535 507
536 debug2("%s: needpriv %d", __func__, needpriv); 508 debug2("%s", __func__);
537 memset(ntop, 0, sizeof(ntop)); 509 memset(ntop, 0, sizeof(ntop));
538 memset(strport, 0, sizeof(strport)); 510 memset(strport, 0, sizeof(strport));
539 511
@@ -565,7 +537,7 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop,
565 host, ntop, strport); 537 host, ntop, strport);
566 538
567 /* Create a socket for connecting. */ 539 /* Create a socket for connecting. */
568 sock = ssh_create_socket(needpriv, ai); 540 sock = ssh_create_socket(ai);
569 if (sock < 0) { 541 if (sock < 0) {
570 /* Any error is already output */ 542 /* Any error is already output */
571 errno = 0; 543 errno = 0;
@@ -615,12 +587,11 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop,
615int 587int
616ssh_connect(struct ssh *ssh, const char *host, struct addrinfo *addrs, 588ssh_connect(struct ssh *ssh, const char *host, struct addrinfo *addrs,
617 struct sockaddr_storage *hostaddr, u_short port, int family, 589 struct sockaddr_storage *hostaddr, u_short port, int family,
618 int connection_attempts, int *timeout_ms, int want_keepalive, int needpriv) 590 int connection_attempts, int *timeout_ms, int want_keepalive)
619{ 591{
620 if (options.proxy_command == NULL) { 592 if (options.proxy_command == NULL) {
621 return ssh_connect_direct(ssh, host, addrs, hostaddr, port, 593 return ssh_connect_direct(ssh, host, addrs, hostaddr, port,
622 family, connection_attempts, timeout_ms, want_keepalive, 594 family, connection_attempts, timeout_ms, want_keepalive);
623 needpriv);
624 } else if (strcmp(options.proxy_command, "-") == 0) { 595 } else if (strcmp(options.proxy_command, "-") == 0) {
625 if ((ssh_packet_set_connection(ssh, 596 if ((ssh_packet_set_connection(ssh,
626 STDIN_FILENO, STDOUT_FILENO)) == NULL) 597 STDIN_FILENO, STDOUT_FILENO)) == NULL)
@@ -767,11 +738,11 @@ check_host_cert(const char *host, const struct sshkey *host_key)
767{ 738{
768 const char *reason; 739 const char *reason;
769 740
770 if (key_cert_check_authority(host_key, 1, 0, host, &reason) != 0) { 741 if (sshkey_cert_check_authority(host_key, 1, 0, host, &reason) != 0) {
771 error("%s", reason); 742 error("%s", reason);
772 return 0; 743 return 0;
773 } 744 }
774 if (buffer_len(host_key->cert->critical) != 0) { 745 if (sshbuf_len(host_key->cert->critical) != 0) {
775 error("Certificate for %s contains unsupported " 746 error("Certificate for %s contains unsupported "
776 "critical options(s)", host); 747 "critical options(s)", host);
777 return 0; 748 return 0;
@@ -1496,9 +1467,9 @@ show_other_keys(struct hostkeys *hostkeys, struct sshkey *key)
1496 logit("WARNING: %s key found for host %s\n" 1467 logit("WARNING: %s key found for host %s\n"
1497 "in %s:%lu\n" 1468 "in %s:%lu\n"
1498 "%s key fingerprint %s.", 1469 "%s key fingerprint %s.",
1499 key_type(found->key), 1470 sshkey_type(found->key),
1500 found->host, found->file, found->line, 1471 found->host, found->file, found->line,
1501 key_type(found->key), fp); 1472 sshkey_type(found->key), fp);
1502 if (options.visual_host_key) 1473 if (options.visual_host_key)
1503 logit("%s", ra); 1474 logit("%s", ra);
1504 free(ra); 1475 free(ra);
@@ -1525,7 +1496,7 @@ warn_changed_key(struct sshkey *host_key)
1525 error("Someone could be eavesdropping on you right now (man-in-the-middle attack)!"); 1496 error("Someone could be eavesdropping on you right now (man-in-the-middle attack)!");
1526 error("It is also possible that a host key has just been changed."); 1497 error("It is also possible that a host key has just been changed.");
1527 error("The fingerprint for the %s key sent by the remote host is\n%s.", 1498 error("The fingerprint for the %s key sent by the remote host is\n%s.",
1528 key_type(host_key), fp); 1499 sshkey_type(host_key), fp);
1529 error("Please contact your system administrator."); 1500 error("Please contact your system administrator.");
1530 1501
1531 free(fp); 1502 free(fp);
diff --git a/sshconnect.h b/sshconnect.h
index dd648b096..890d85733 100644
--- a/sshconnect.h
+++ b/sshconnect.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect.h,v 1.32 2018/02/10 09:25:35 djm Exp $ */ 1/* $OpenBSD: sshconnect.h,v 1.35 2018/07/19 10:28:47 dtucker Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -28,14 +28,13 @@ typedef struct Sensitive Sensitive;
28struct Sensitive { 28struct Sensitive {
29 struct sshkey **keys; 29 struct sshkey **keys;
30 int nkeys; 30 int nkeys;
31 int external_keysign;
32}; 31};
33 32
34struct addrinfo; 33struct addrinfo;
35struct ssh; 34struct ssh;
36 35
37int ssh_connect(struct ssh *, const char *, struct addrinfo *, 36int ssh_connect(struct ssh *, const char *, struct addrinfo *,
38 struct sockaddr_storage *, u_short, int, int, int *, int, int); 37 struct sockaddr_storage *, u_short, int, int, int *, int);
39void ssh_kill_proxy_command(void); 38void ssh_kill_proxy_command(void);
40 39
41void ssh_login(Sensitive *, const char *, struct sockaddr *, u_short, 40void ssh_login(Sensitive *, const char *, struct sockaddr *, u_short,
@@ -58,22 +57,3 @@ void ssh_put_password(char *);
58int ssh_local_cmd(const char *); 57int ssh_local_cmd(const char *);
59 58
60void maybe_add_key_to_agent(char *, const struct sshkey *, char *, char *); 59void maybe_add_key_to_agent(char *, const struct sshkey *, char *, char *);
61
62/*
63 * Macros to raise/lower permissions.
64 */
65#define PRIV_START do { \
66 int save_errno = errno; \
67 if (seteuid(original_effective_uid) != 0) \
68 fatal("PRIV_START: seteuid: %s", \
69 strerror(errno)); \
70 errno = save_errno; \
71} while (0)
72
73#define PRIV_END do { \
74 int save_errno = errno; \
75 if (seteuid(original_real_uid) != 0) \
76 fatal("PRIV_END: seteuid: %s", \
77 strerror(errno)); \
78 errno = save_errno; \
79} while (0)
diff --git a/sshconnect2.c b/sshconnect2.c
index 1f4a74cf4..10e4f0a08 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect2.c,v 1.270 2018/03/24 19:28:43 markus Exp $ */ 1/* $OpenBSD: sshconnect2.c,v 1.284 2018/08/13 02:41:05 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Damien Miller. All rights reserved. 4 * Copyright (c) 2008 Damien Miller. All rights reserved.
@@ -49,11 +49,11 @@
49#include "xmalloc.h" 49#include "xmalloc.h"
50#include "ssh.h" 50#include "ssh.h"
51#include "ssh2.h" 51#include "ssh2.h"
52#include "buffer.h" 52#include "sshbuf.h"
53#include "packet.h" 53#include "packet.h"
54#include "compat.h" 54#include "compat.h"
55#include "cipher.h" 55#include "cipher.h"
56#include "key.h" 56#include "sshkey.h"
57#include "kex.h" 57#include "kex.h"
58#include "myproposal.h" 58#include "myproposal.h"
59#include "sshconnect.h" 59#include "sshconnect.h"
@@ -158,7 +158,7 @@ void
158ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) 158ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port)
159{ 159{
160 char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; 160 char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT };
161 char *s; 161 char *s, *all_key;
162 struct kex *kex; 162 struct kex *kex;
163 int r; 163 int r;
164 164
@@ -178,9 +178,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port)
178 myproposal[PROPOSAL_MAC_ALGS_CTOS] = 178 myproposal[PROPOSAL_MAC_ALGS_CTOS] =
179 myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs; 179 myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs;
180 if (options.hostkeyalgorithms != NULL) { 180 if (options.hostkeyalgorithms != NULL) {
181 if (kex_assemble_names(KEX_DEFAULT_PK_ALG, 181 all_key = sshkey_alg_list(0, 0, 1, ',');
182 &options.hostkeyalgorithms) != 0) 182 if (kex_assemble_names(&options.hostkeyalgorithms,
183 KEX_DEFAULT_PK_ALG, all_key) != 0)
183 fatal("%s: kex_assemble_namelist", __func__); 184 fatal("%s: kex_assemble_namelist", __func__);
185 free(all_key);
184 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = 186 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] =
185 compat_pkalg_proposal(options.hostkeyalgorithms); 187 compat_pkalg_proposal(options.hostkeyalgorithms);
186 } else { 188 } else {
@@ -230,10 +232,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port)
230 232
231#ifdef DEBUG_KEXDH 233#ifdef DEBUG_KEXDH
232 /* send 1st encrypted/maced/compressed message */ 234 /* send 1st encrypted/maced/compressed message */
233 packet_start(SSH2_MSG_IGNORE); 235 if ((r = sshpkt_start(ssh, SSH2_MSG_IGNORE)) != 0 ||
234 packet_put_cstring("markus"); 236 (r = sshpkt_put_cstring(ssh, "markus")) != 0 ||
235 packet_send(); 237 (r = sshpkt_send(ssh)) != 0 ||
236 packet_write_wait(); 238 (r = ssh_packet_write_wait(ssh)) != 0)
239 fatal("%s: %s", __func__, ssh_err(r));
237#endif 240#endif
238} 241}
239 242
@@ -315,7 +318,7 @@ int input_gssapi_errtok(int, u_int32_t, struct ssh *);
315 318
316void userauth(Authctxt *, char *); 319void userauth(Authctxt *, char *);
317 320
318static int sign_and_send_pubkey(Authctxt *, Identity *); 321static int sign_and_send_pubkey(struct ssh *ssh, Authctxt *, Identity *);
319static void pubkey_prepare(Authctxt *); 322static void pubkey_prepare(Authctxt *);
320static void pubkey_cleanup(Authctxt *); 323static void pubkey_cleanup(Authctxt *);
321static void pubkey_reset(Authctxt *); 324static void pubkey_reset(Authctxt *);
@@ -455,6 +458,8 @@ input_userauth_ext_info(int type, u_int32_t seqnr, struct ssh *ssh)
455void 458void
456userauth(Authctxt *authctxt, char *authlist) 459userauth(Authctxt *authctxt, char *authlist)
457{ 460{
461 struct ssh *ssh = active_state; /* XXX */
462
458 if (authctxt->method != NULL && authctxt->method->cleanup != NULL) 463 if (authctxt->method != NULL && authctxt->method->cleanup != NULL)
459 authctxt->method->cleanup(authctxt); 464 authctxt->method->cleanup(authctxt);
460 465
@@ -474,7 +479,7 @@ userauth(Authctxt *authctxt, char *authlist)
474 authctxt->method = method; 479 authctxt->method = method;
475 480
476 /* reset the per method handler */ 481 /* reset the per method handler */
477 dispatch_range(SSH2_MSG_USERAUTH_PER_METHOD_MIN, 482 ssh_dispatch_range(ssh, SSH2_MSG_USERAUTH_PER_METHOD_MIN,
478 SSH2_MSG_USERAUTH_PER_METHOD_MAX, NULL); 483 SSH2_MSG_USERAUTH_PER_METHOD_MAX, NULL);
479 484
480 /* and try new method */ 485 /* and try new method */
@@ -551,14 +556,16 @@ input_userauth_failure(int type, u_int32_t seq, struct ssh *ssh)
551{ 556{
552 Authctxt *authctxt = ssh->authctxt; 557 Authctxt *authctxt = ssh->authctxt;
553 char *authlist = NULL; 558 char *authlist = NULL;
554 int partial; 559 u_char partial;
560 int r;
555 561
556 if (authctxt == NULL) 562 if (authctxt == NULL)
557 fatal("input_userauth_failure: no authentication context"); 563 fatal("input_userauth_failure: no authentication context");
558 564
559 authlist = packet_get_string(NULL); 565 if ((r = sshpkt_get_cstring(ssh, &authlist, NULL)) != 0 ||
560 partial = packet_get_char(); 566 (r = sshpkt_get_u8(ssh, &partial)) != 0 ||
561 packet_check_eom(); 567 (r = sshpkt_get_end(ssh)) != 0)
568 goto out;
562 569
563 if (partial != 0) { 570 if (partial != 0) {
564 verbose("Authenticated with partial success."); 571 verbose("Authenticated with partial success.");
@@ -568,6 +575,9 @@ input_userauth_failure(int type, u_int32_t seq, struct ssh *ssh)
568 debug("Authentications that can continue: %s", authlist); 575 debug("Authentications that can continue: %s", authlist);
569 576
570 userauth(authctxt, authlist); 577 userauth(authctxt, authlist);
578 authlist = NULL;
579 out:
580 free(authlist);
571 return 0; 581 return 0;
572} 582}
573 583
@@ -579,25 +589,27 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
579 struct sshkey *key = NULL; 589 struct sshkey *key = NULL;
580 Identity *id = NULL; 590 Identity *id = NULL;
581 int pktype, sent = 0; 591 int pktype, sent = 0;
582 u_int alen, blen; 592 size_t blen;
583 char *pkalg, *fp; 593 char *pkalg = NULL, *fp;
584 u_char *pkblob; 594 u_char *pkblob = NULL;
595 int r;
585 596
586 if (authctxt == NULL) 597 if (authctxt == NULL)
587 fatal("input_userauth_pk_ok: no authentication context"); 598 fatal("input_userauth_pk_ok: no authentication context");
588 599
589 pkalg = packet_get_string(&alen); 600 if ((r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 ||
590 pkblob = packet_get_string(&blen); 601 (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0 ||
591 packet_check_eom(); 602 (r = sshpkt_get_end(ssh)) != 0)
603 goto done;
592 604
593 debug("Server accepts key: pkalg %s blen %u", pkalg, blen); 605 debug("Server accepts key: pkalg %s blen %zu", pkalg, blen);
594 606
595 if ((pktype = key_type_from_name(pkalg)) == KEY_UNSPEC) { 607 if ((pktype = sshkey_type_from_name(pkalg)) == KEY_UNSPEC) {
596 debug("unknown pkalg %s", pkalg); 608 debug("unknown pkalg %s", pkalg);
597 goto done; 609 goto done;
598 } 610 }
599 if ((key = key_from_blob(pkblob, blen)) == NULL) { 611 if ((r = sshkey_from_blob(pkblob, blen, &key)) != 0) {
600 debug("no key from blob. pkalg %s", pkalg); 612 debug("no key from blob. pkalg %s: %s", pkalg, ssh_err(r));
601 goto done; 613 goto done;
602 } 614 }
603 if (key->type != pktype) { 615 if (key->type != pktype) {
@@ -618,31 +630,33 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
618 * duplicate keys 630 * duplicate keys
619 */ 631 */
620 TAILQ_FOREACH_REVERSE(id, &authctxt->keys, idlist, next) { 632 TAILQ_FOREACH_REVERSE(id, &authctxt->keys, idlist, next) {
621 if (key_equal(key, id->key)) { 633 if (sshkey_equal(key, id->key)) {
622 sent = sign_and_send_pubkey(authctxt, id); 634 sent = sign_and_send_pubkey(ssh, authctxt, id);
623 break; 635 break;
624 } 636 }
625 } 637 }
626done: 638 r = 0;
627 key_free(key); 639 done:
640 sshkey_free(key);
628 free(pkalg); 641 free(pkalg);
629 free(pkblob); 642 free(pkblob);
630 643
631 /* try another method if we did not send a packet */ 644 /* try another method if we did not send a packet */
632 if (sent == 0) 645 if (r == 0 && sent == 0)
633 userauth(authctxt, NULL); 646 userauth(authctxt, NULL);
634 return 0; 647 return r;
635} 648}
636 649
637#ifdef GSSAPI 650#ifdef GSSAPI
638int 651int
639userauth_gssapi(Authctxt *authctxt) 652userauth_gssapi(Authctxt *authctxt)
640{ 653{
654 struct ssh *ssh = active_state; /* XXX */
641 Gssctxt *gssctxt = NULL; 655 Gssctxt *gssctxt = NULL;
642 static gss_OID_set gss_supported = NULL; 656 static gss_OID_set gss_supported = NULL;
643 static u_int mech = 0; 657 static u_int mech = 0;
644 OM_uint32 min; 658 OM_uint32 min;
645 int ok = 0; 659 int r, ok = 0;
646 660
647 /* Try one GSSAPI method at a time, rather than sending them all at 661 /* Try one GSSAPI method at a time, rather than sending them all at
648 * once. */ 662 * once. */
@@ -654,7 +668,7 @@ userauth_gssapi(Authctxt *authctxt)
654 while (mech < gss_supported->count && !ok) { 668 while (mech < gss_supported->count && !ok) {
655 /* My DER encoding requires length<128 */ 669 /* My DER encoding requires length<128 */
656 if (gss_supported->elements[mech].length < 128 && 670 if (gss_supported->elements[mech].length < 128 &&
657 ssh_gssapi_check_mechanism(&gssctxt, 671 ssh_gssapi_check_mechanism(&gssctxt,
658 &gss_supported->elements[mech], authctxt->host)) { 672 &gss_supported->elements[mech], authctxt->host)) {
659 ok = 1; /* Mechanism works */ 673 ok = 1; /* Mechanism works */
660 } else { 674 } else {
@@ -667,25 +681,26 @@ userauth_gssapi(Authctxt *authctxt)
667 681
668 authctxt->methoddata=(void *)gssctxt; 682 authctxt->methoddata=(void *)gssctxt;
669 683
670 packet_start(SSH2_MSG_USERAUTH_REQUEST); 684 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
671 packet_put_cstring(authctxt->server_user); 685 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 ||
672 packet_put_cstring(authctxt->service); 686 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 ||
673 packet_put_cstring(authctxt->method->name); 687 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 ||
674 688 (r = sshpkt_put_u32(ssh, 1)) != 0 ||
675 packet_put_int(1); 689 (r = sshpkt_put_u32(ssh,
676 690 (gss_supported->elements[mech].length) + 2)) != 0 ||
677 packet_put_int((gss_supported->elements[mech].length) + 2); 691 (r = sshpkt_put_u8(ssh, SSH_GSS_OIDTYPE)) != 0 ||
678 packet_put_char(SSH_GSS_OIDTYPE); 692 (r = sshpkt_put_u8(ssh,
679 packet_put_char(gss_supported->elements[mech].length); 693 gss_supported->elements[mech].length)) != 0 ||
680 packet_put_raw(gss_supported->elements[mech].elements, 694 (r = sshpkt_put(ssh,
681 gss_supported->elements[mech].length); 695 gss_supported->elements[mech].elements,
682 696 gss_supported->elements[mech].length)) != 0 ||
683 packet_send(); 697 (r = sshpkt_send(ssh)) != 0)
698 fatal("%s: %s", __func__, ssh_err(r));
684 699
685 dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_RESPONSE, &input_gssapi_response); 700 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_RESPONSE, &input_gssapi_response);
686 dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, &input_gssapi_token); 701 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_TOKEN, &input_gssapi_token);
687 dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_ERROR, &input_gssapi_error); 702 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_ERROR, &input_gssapi_error);
688 dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK, &input_gssapi_errtok); 703 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_GSSAPI_ERRTOK, &input_gssapi_errtok);
689 704
690 mech++; /* Move along to next candidate */ 705 mech++; /* Move along to next candidate */
691 706
@@ -701,44 +716,56 @@ process_gssapi_token(struct ssh *ssh, gss_buffer_t recv_tok)
701 gss_buffer_desc mic = GSS_C_EMPTY_BUFFER; 716 gss_buffer_desc mic = GSS_C_EMPTY_BUFFER;
702 gss_buffer_desc gssbuf; 717 gss_buffer_desc gssbuf;
703 OM_uint32 status, ms, flags; 718 OM_uint32 status, ms, flags;
704 Buffer b; 719 int r;
705 720
706 status = ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds, 721 status = ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds,
707 recv_tok, &send_tok, &flags); 722 recv_tok, &send_tok, &flags);
708 723
709 if (send_tok.length > 0) { 724 if (send_tok.length > 0) {
710 if (GSS_ERROR(status)) 725 u_char type = GSS_ERROR(status) ?
711 packet_start(SSH2_MSG_USERAUTH_GSSAPI_ERRTOK); 726 SSH2_MSG_USERAUTH_GSSAPI_ERRTOK :
712 else 727 SSH2_MSG_USERAUTH_GSSAPI_TOKEN;
713 packet_start(SSH2_MSG_USERAUTH_GSSAPI_TOKEN); 728
729 if ((r = sshpkt_start(ssh, type)) != 0 ||
730 (r = sshpkt_put_string(ssh, send_tok.value,
731 send_tok.length)) != 0 ||
732 (r = sshpkt_send(ssh)) != 0)
733 fatal("%s: %s", __func__, ssh_err(r));
714 734
715 packet_put_string(send_tok.value, send_tok.length);
716 packet_send();
717 gss_release_buffer(&ms, &send_tok); 735 gss_release_buffer(&ms, &send_tok);
718 } 736 }
719 737
720 if (status == GSS_S_COMPLETE) { 738 if (status == GSS_S_COMPLETE) {
721 /* send either complete or MIC, depending on mechanism */ 739 /* send either complete or MIC, depending on mechanism */
722 if (!(flags & GSS_C_INTEG_FLAG)) { 740 if (!(flags & GSS_C_INTEG_FLAG)) {
723 packet_start(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE); 741 if ((r = sshpkt_start(ssh,
724 packet_send(); 742 SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE)) != 0 ||
743 (r = sshpkt_send(ssh)) != 0)
744 fatal("%s: %s", __func__, ssh_err(r));
725 } else { 745 } else {
726 ssh_gssapi_buildmic(&b, authctxt->server_user, 746 struct sshbuf *b;
747
748 if ((b = sshbuf_new()) == NULL)
749 fatal("%s: sshbuf_new failed", __func__);
750 ssh_gssapi_buildmic(b, authctxt->server_user,
727 authctxt->service, "gssapi-with-mic"); 751 authctxt->service, "gssapi-with-mic");
728 752
729 gssbuf.value = buffer_ptr(&b); 753 if ((gssbuf.value = sshbuf_mutable_ptr(b)) == NULL)
730 gssbuf.length = buffer_len(&b); 754 fatal("%s: sshbuf_mutable_ptr failed", __func__);
755 gssbuf.length = sshbuf_len(b);
731 756
732 status = ssh_gssapi_sign(gssctxt, &gssbuf, &mic); 757 status = ssh_gssapi_sign(gssctxt, &gssbuf, &mic);
733 758
734 if (!GSS_ERROR(status)) { 759 if (!GSS_ERROR(status)) {
735 packet_start(SSH2_MSG_USERAUTH_GSSAPI_MIC); 760 if ((r = sshpkt_start(ssh,
736 packet_put_string(mic.value, mic.length); 761 SSH2_MSG_USERAUTH_GSSAPI_MIC)) != 0 ||
737 762 (r = sshpkt_put_string(ssh, mic.value,
738 packet_send(); 763 mic.length)) != 0 ||
764 (r = sshpkt_send(ssh)) != 0)
765 fatal("%s: %s", __func__, ssh_err(r));
739 } 766 }
740 767
741 buffer_free(&b); 768 sshbuf_free(b);
742 gss_release_buffer(&ms, &mic); 769 gss_release_buffer(&ms, &mic);
743 } 770 }
744 } 771 }
@@ -752,39 +779,43 @@ input_gssapi_response(int type, u_int32_t plen, struct ssh *ssh)
752{ 779{
753 Authctxt *authctxt = ssh->authctxt; 780 Authctxt *authctxt = ssh->authctxt;
754 Gssctxt *gssctxt; 781 Gssctxt *gssctxt;
755 int oidlen; 782 size_t oidlen;
756 char *oidv; 783 u_char *oidv = NULL;
784 int r;
757 785
758 if (authctxt == NULL) 786 if (authctxt == NULL)
759 fatal("input_gssapi_response: no authentication context"); 787 fatal("input_gssapi_response: no authentication context");
760 gssctxt = authctxt->methoddata; 788 gssctxt = authctxt->methoddata;
761 789
762 /* Setup our OID */ 790 /* Setup our OID */
763 oidv = packet_get_string(&oidlen); 791 if ((r = sshpkt_get_string(ssh, &oidv, &oidlen)) != 0)
792 goto done;
764 793
765 if (oidlen <= 2 || 794 if (oidlen <= 2 ||
766 oidv[0] != SSH_GSS_OIDTYPE || 795 oidv[0] != SSH_GSS_OIDTYPE ||
767 oidv[1] != oidlen - 2) { 796 oidv[1] != oidlen - 2) {
768 free(oidv);
769 debug("Badly encoded mechanism OID received"); 797 debug("Badly encoded mechanism OID received");
770 userauth(authctxt, NULL); 798 userauth(authctxt, NULL);
771 return 0; 799 goto ok;
772 } 800 }
773 801
774 if (!ssh_gssapi_check_oid(gssctxt, oidv + 2, oidlen - 2)) 802 if (!ssh_gssapi_check_oid(gssctxt, oidv + 2, oidlen - 2))
775 fatal("Server returned different OID than expected"); 803 fatal("Server returned different OID than expected");
776 804
777 packet_check_eom(); 805 if ((r = sshpkt_get_end(ssh)) != 0)
778 806 goto done;
779 free(oidv);
780 807
781 if (GSS_ERROR(process_gssapi_token(ssh, GSS_C_NO_BUFFER))) { 808 if (GSS_ERROR(process_gssapi_token(ssh, GSS_C_NO_BUFFER))) {
782 /* Start again with next method on list */ 809 /* Start again with next method on list */
783 debug("Trying to start again"); 810 debug("Trying to start again");
784 userauth(authctxt, NULL); 811 userauth(authctxt, NULL);
785 return 0; 812 goto ok;
786 } 813 }
787 return 0; 814 ok:
815 r = 0;
816 done:
817 free(oidv);
818 return r;
788} 819}
789 820
790/* ARGSUSED */ 821/* ARGSUSED */
@@ -793,27 +824,31 @@ input_gssapi_token(int type, u_int32_t plen, struct ssh *ssh)
793{ 824{
794 Authctxt *authctxt = ssh->authctxt; 825 Authctxt *authctxt = ssh->authctxt;
795 gss_buffer_desc recv_tok; 826 gss_buffer_desc recv_tok;
827 u_char *p = NULL;
828 size_t len;
796 OM_uint32 status; 829 OM_uint32 status;
797 u_int slen; 830 int r;
798 831
799 if (authctxt == NULL) 832 if (authctxt == NULL)
800 fatal("input_gssapi_response: no authentication context"); 833 fatal("input_gssapi_response: no authentication context");
801 834
802 recv_tok.value = packet_get_string(&slen); 835 if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 ||
803 recv_tok.length = slen; /* safe typecast */ 836 (r = sshpkt_get_end(ssh)) != 0)
804 837 goto out;
805 packet_check_eom();
806 838
839 recv_tok.value = p;
840 recv_tok.length = len;
807 status = process_gssapi_token(ssh, &recv_tok); 841 status = process_gssapi_token(ssh, &recv_tok);
808 842
809 free(recv_tok.value); 843 /* Start again with the next method in the list */
810
811 if (GSS_ERROR(status)) { 844 if (GSS_ERROR(status)) {
812 /* Start again with the next method in the list */
813 userauth(authctxt, NULL); 845 userauth(authctxt, NULL);
814 return 0; 846 /* ok */
815 } 847 }
816 return 0; 848 r = 0;
849 out:
850 free(p);
851 return r;
817} 852}
818 853
819/* ARGSUSED */ 854/* ARGSUSED */
@@ -825,22 +860,26 @@ input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh)
825 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; 860 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
826 gss_buffer_desc recv_tok; 861 gss_buffer_desc recv_tok;
827 OM_uint32 ms; 862 OM_uint32 ms;
828 u_int len; 863 u_char *p = NULL;
864 size_t len;
865 int r;
829 866
830 if (authctxt == NULL) 867 if (authctxt == NULL)
831 fatal("input_gssapi_response: no authentication context"); 868 fatal("input_gssapi_response: no authentication context");
832 gssctxt = authctxt->methoddata; 869 gssctxt = authctxt->methoddata;
833 870
834 recv_tok.value = packet_get_string(&len); 871 if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 ||
835 recv_tok.length = len; 872 (r = sshpkt_get_end(ssh)) != 0) {
836 873 free(p);
837 packet_check_eom(); 874 return r;
875 }
838 876
839 /* Stick it into GSSAPI and see what it says */ 877 /* Stick it into GSSAPI and see what it says */
878 recv_tok.value = p;
879 recv_tok.length = len;
840 (void)ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds, 880 (void)ssh_gssapi_init_ctx(gssctxt, options.gss_deleg_creds,
841 &recv_tok, &send_tok, NULL); 881 &recv_tok, &send_tok, NULL);
842 882 free(p);
843 free(recv_tok.value);
844 gss_release_buffer(&ms, &send_tok); 883 gss_release_buffer(&ms, &send_tok);
845 884
846 /* Server will be returning a failed packet after this one */ 885 /* Server will be returning a failed packet after this one */
@@ -851,43 +890,50 @@ input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh)
851int 890int
852input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh) 891input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh)
853{ 892{
854 char *msg; 893 char *msg = NULL;
855 char *lang; 894 char *lang = NULL;
856 895 int r;
857 /* maj */(void)packet_get_int();
858 /* min */(void)packet_get_int();
859 msg=packet_get_string(NULL);
860 lang=packet_get_string(NULL);
861
862 packet_check_eom();
863 896
897 if ((r = sshpkt_get_u32(ssh, NULL)) != 0 || /* maj */
898 (r = sshpkt_get_u32(ssh, NULL)) != 0 || /* min */
899 (r = sshpkt_get_cstring(ssh, &msg, NULL)) != 0 ||
900 (r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0)
901 goto out;
902 r = sshpkt_get_end(ssh);
864 debug("Server GSSAPI Error:\n%s", msg); 903 debug("Server GSSAPI Error:\n%s", msg);
904 out:
865 free(msg); 905 free(msg);
866 free(lang); 906 free(lang);
867 return 0; 907 return r;
868} 908}
869#endif /* GSSAPI */ 909#endif /* GSSAPI */
870 910
871int 911int
872userauth_none(Authctxt *authctxt) 912userauth_none(Authctxt *authctxt)
873{ 913{
914 struct ssh *ssh = active_state; /* XXX */
915 int r;
916
874 /* initial userauth request */ 917 /* initial userauth request */
875 packet_start(SSH2_MSG_USERAUTH_REQUEST); 918 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
876 packet_put_cstring(authctxt->server_user); 919 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 ||
877 packet_put_cstring(authctxt->service); 920 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 ||
878 packet_put_cstring(authctxt->method->name); 921 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 ||
879 packet_send(); 922 (r = sshpkt_send(ssh)) != 0)
923 fatal("%s: %s", __func__, ssh_err(r));
880 return 1; 924 return 1;
881} 925}
882 926
883int 927int
884userauth_passwd(Authctxt *authctxt) 928userauth_passwd(Authctxt *authctxt)
885{ 929{
930 struct ssh *ssh = active_state; /* XXX */
886 static int attempt = 0; 931 static int attempt = 0;
887 char prompt[256]; 932 char prompt[256];
888 char *password; 933 char *password;
889 const char *host = options.host_key_alias ? options.host_key_alias : 934 const char *host = options.host_key_alias ? options.host_key_alias :
890 authctxt->host; 935 authctxt->host;
936 int r;
891 937
892 if (attempt++ >= options.number_of_password_prompts) 938 if (attempt++ >= options.number_of_password_prompts)
893 return 0; 939 return 0;
@@ -898,18 +944,20 @@ userauth_passwd(Authctxt *authctxt)
898 snprintf(prompt, sizeof(prompt), "%.30s@%.128s's password: ", 944 snprintf(prompt, sizeof(prompt), "%.30s@%.128s's password: ",
899 authctxt->server_user, host); 945 authctxt->server_user, host);
900 password = read_passphrase(prompt, 0); 946 password = read_passphrase(prompt, 0);
901 packet_start(SSH2_MSG_USERAUTH_REQUEST); 947 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
902 packet_put_cstring(authctxt->server_user); 948 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 ||
903 packet_put_cstring(authctxt->service); 949 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 ||
904 packet_put_cstring(authctxt->method->name); 950 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 ||
905 packet_put_char(0); 951 (r = sshpkt_put_u8(ssh, 0)) != 0 ||
906 packet_put_cstring(password); 952 (r = sshpkt_put_cstring(ssh, password)) != 0 ||
907 explicit_bzero(password, strlen(password)); 953 (r = sshpkt_add_padding(ssh, 64)) != 0 ||
908 free(password); 954 (r = sshpkt_send(ssh)) != 0)
909 packet_add_padding(64); 955 fatal("%s: %s", __func__, ssh_err(r));
910 packet_send(); 956
911 957 if (password)
912 dispatch_set(SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ, 958 freezero(password, strlen(password));
959
960 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ,
913 &input_userauth_passwd_changereq); 961 &input_userauth_passwd_changereq);
914 962
915 return 1; 963 return 1;
@@ -923,9 +971,10 @@ int
923input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh) 971input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh)
924{ 972{
925 Authctxt *authctxt = ssh->authctxt; 973 Authctxt *authctxt = ssh->authctxt;
926 char *info, *lang, *password = NULL, *retype = NULL; 974 char *info = NULL, *lang = NULL, *password = NULL, *retype = NULL;
927 char prompt[256]; 975 char prompt[256];
928 const char *host; 976 const char *host;
977 int r;
929 978
930 debug2("input_userauth_passwd_changereq"); 979 debug2("input_userauth_passwd_changereq");
931 980
@@ -934,24 +983,26 @@ input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh)
934 "no authentication context"); 983 "no authentication context");
935 host = options.host_key_alias ? options.host_key_alias : authctxt->host; 984 host = options.host_key_alias ? options.host_key_alias : authctxt->host;
936 985
937 info = packet_get_string(NULL); 986 if ((r = sshpkt_get_cstring(ssh, &info, NULL)) != 0 ||
938 lang = packet_get_string(NULL); 987 (r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0)
988 goto out;
939 if (strlen(info) > 0) 989 if (strlen(info) > 0)
940 logit("%s", info); 990 logit("%s", info);
941 free(info); 991 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
942 free(lang); 992 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 ||
943 packet_start(SSH2_MSG_USERAUTH_REQUEST); 993 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 ||
944 packet_put_cstring(authctxt->server_user); 994 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 ||
945 packet_put_cstring(authctxt->service); 995 (r = sshpkt_put_u8(ssh, 1)) != 0) /* additional info */
946 packet_put_cstring(authctxt->method->name); 996 goto out;
947 packet_put_char(1); /* additional info */ 997
948 snprintf(prompt, sizeof(prompt), 998 snprintf(prompt, sizeof(prompt),
949 "Enter %.30s@%.128s's old password: ", 999 "Enter %.30s@%.128s's old password: ",
950 authctxt->server_user, host); 1000 authctxt->server_user, host);
951 password = read_passphrase(prompt, 0); 1001 password = read_passphrase(prompt, 0);
952 packet_put_cstring(password); 1002 if ((r = sshpkt_put_cstring(ssh, password)) != 0)
953 explicit_bzero(password, strlen(password)); 1003 goto out;
954 free(password); 1004
1005 freezero(password, strlen(password));
955 password = NULL; 1006 password = NULL;
956 while (password == NULL) { 1007 while (password == NULL) {
957 snprintf(prompt, sizeof(prompt), 1008 snprintf(prompt, sizeof(prompt),
@@ -960,99 +1011,113 @@ input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh)
960 password = read_passphrase(prompt, RP_ALLOW_EOF); 1011 password = read_passphrase(prompt, RP_ALLOW_EOF);
961 if (password == NULL) { 1012 if (password == NULL) {
962 /* bail out */ 1013 /* bail out */
963 return 0; 1014 r = 0;
1015 goto out;
964 } 1016 }
965 snprintf(prompt, sizeof(prompt), 1017 snprintf(prompt, sizeof(prompt),
966 "Retype %.30s@%.128s's new password: ", 1018 "Retype %.30s@%.128s's new password: ",
967 authctxt->server_user, host); 1019 authctxt->server_user, host);
968 retype = read_passphrase(prompt, 0); 1020 retype = read_passphrase(prompt, 0);
969 if (strcmp(password, retype) != 0) { 1021 if (strcmp(password, retype) != 0) {
970 explicit_bzero(password, strlen(password)); 1022 freezero(password, strlen(password));
971 free(password);
972 logit("Mismatch; try again, EOF to quit."); 1023 logit("Mismatch; try again, EOF to quit.");
973 password = NULL; 1024 password = NULL;
974 } 1025 }
975 explicit_bzero(retype, strlen(retype)); 1026 freezero(retype, strlen(retype));
976 free(retype);
977 } 1027 }
978 packet_put_cstring(password); 1028 if ((r = sshpkt_put_cstring(ssh, password)) != 0 ||
979 explicit_bzero(password, strlen(password)); 1029 (r = sshpkt_add_padding(ssh, 64)) != 0 ||
980 free(password); 1030 (r = sshpkt_send(ssh)) != 0)
981 packet_add_padding(64); 1031 goto out;
982 packet_send();
983 1032
984 dispatch_set(SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ, 1033 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ,
985 &input_userauth_passwd_changereq); 1034 &input_userauth_passwd_changereq);
986 return 0; 1035 r = 0;
987} 1036 out:
988 1037 if (password)
989static const char * 1038 freezero(password, strlen(password));
990key_sign_encode(const struct sshkey *key) 1039 free(info);
991{ 1040 free(lang);
992 struct ssh *ssh = active_state; 1041 return r;
993
994 if (key->type == KEY_RSA) {
995 switch (ssh->kex->rsa_sha2) {
996 case 256:
997 return "rsa-sha2-256";
998 case 512:
999 return "rsa-sha2-512";
1000 }
1001 }
1002 return key_ssh_name(key);
1003} 1042}
1004 1043
1005/* 1044/*
1006 * Some agents will return ssh-rsa signatures when asked to make a 1045 * Select an algorithm for publickey signatures.
1007 * rsa-sha2-* signature. Check what they actually gave back and warn the 1046 * Returns algorithm (caller must free) or NULL if no mutual algorithm found.
1008 * user if the agent has returned an unexpected type. 1047 *
1048 * Call with ssh==NULL to ignore server-sig-algs extension list and
1049 * only attempt with the key's base signature type.
1009 */ 1050 */
1010static int 1051static char *
1011check_sigtype(const struct sshkey *key, const u_char *sig, size_t len) 1052key_sig_algorithm(struct ssh *ssh, const struct sshkey *key)
1012{ 1053{
1013 int r; 1054 char *allowed, *oallowed, *cp, *tmp, *alg = NULL;
1014 char *sigtype = NULL;
1015 const char *alg = key_sign_encode(key);
1016 1055
1017 if (sshkey_is_cert(key)) 1056 /*
1018 return 0; 1057 * The signature algorithm will only differ from the key algorithm
1019 if ((r = sshkey_sigtype(sig, len, &sigtype)) != 0) 1058 * for RSA keys/certs and when the server advertises support for
1020 return r; 1059 * newer (SHA2) algorithms.
1021 if (strcmp(sigtype, alg) != 0) { 1060 */
1022 logit("warning: agent returned different signature type %s " 1061 if (ssh == NULL || ssh->kex->server_sig_algs == NULL ||
1023 "(expected %s)", sigtype, alg); 1062 (key->type != KEY_RSA && key->type != KEY_RSA_CERT)) {
1063 /* Filter base key signature alg against our configuration */
1064 return match_list(sshkey_ssh_name(key),
1065 options.pubkey_key_types, NULL);
1024 } 1066 }
1025 free(sigtype); 1067
1026 /* Incorrect signature types aren't an error ... yet */ 1068 /*
1027 return 0; 1069 * For RSA keys/certs, since these might have a different sig type:
1070 * find the first entry in PubkeyAcceptedKeyTypes of the right type
1071 * that also appears in the supported signature algorithms list from
1072 * the server.
1073 */
1074 oallowed = allowed = xstrdup(options.pubkey_key_types);
1075 while ((cp = strsep(&allowed, ",")) != NULL) {
1076 if (sshkey_type_from_name(cp) != key->type)
1077 continue;
1078 tmp = match_list(sshkey_sigalg_by_name(cp), ssh->kex->server_sig_algs, NULL);
1079 if (tmp != NULL)
1080 alg = xstrdup(cp);
1081 free(tmp);
1082 if (alg != NULL)
1083 break;
1084 }
1085 free(oallowed);
1086 return alg;
1028} 1087}
1029 1088
1030static int 1089static int
1031identity_sign(struct identity *id, u_char **sigp, size_t *lenp, 1090identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
1032 const u_char *data, size_t datalen, u_int compat) 1091 const u_char *data, size_t datalen, u_int compat, const char *alg)
1033{ 1092{
1034 struct sshkey *prv; 1093 struct sshkey *prv;
1035 int r; 1094 int r;
1036 1095
1037 /* the agent supports this key */ 1096 /* The agent supports this key. */
1038 if (id->key != NULL && id->agent_fd != -1) { 1097 if (id->key != NULL && id->agent_fd != -1) {
1039 if ((r = ssh_agent_sign(id->agent_fd, id->key, sigp, lenp, 1098 return ssh_agent_sign(id->agent_fd, id->key, sigp, lenp,
1040 data, datalen, key_sign_encode(id->key), compat)) != 0 || 1099 data, datalen, alg, compat);
1041 (r = check_sigtype(id->key, *sigp, *lenp)) != 0)
1042 return r;
1043 return 0;
1044 } 1100 }
1045 1101
1046 /* 1102 /*
1047 * we have already loaded the private key or 1103 * We have already loaded the private key or the private key is
1048 * the private key is stored in external hardware 1104 * stored in external hardware.
1049 */ 1105 */
1050 if (id->key != NULL && 1106 if (id->key != NULL &&
1051 (id->isprivate || (id->key->flags & SSHKEY_FLAG_EXT))) 1107 (id->isprivate || (id->key->flags & SSHKEY_FLAG_EXT))) {
1052 return (sshkey_sign(id->key, sigp, lenp, data, datalen, 1108 if ((r = sshkey_sign(id->key, sigp, lenp, data, datalen,
1053 key_sign_encode(id->key), compat)); 1109 alg, compat)) != 0)
1110 return r;
1111 /*
1112 * PKCS#11 tokens may not support all signature algorithms,
1113 * so check what we get back.
1114 */
1115 if ((r = sshkey_check_sigtype(*sigp, *lenp, alg)) != 0)
1116 return r;
1117 return 0;
1118 }
1054 1119
1055 /* load the private key from the file */ 1120 /* Load the private key from the file. */
1056 if ((prv = load_identity_file(id)) == NULL) 1121 if ((prv = load_identity_file(id)) == NULL)
1057 return SSH_ERR_KEY_NOT_FOUND; 1122 return SSH_ERR_KEY_NOT_FOUND;
1058 if (id->key != NULL && !sshkey_equal_public(prv, id->key)) { 1123 if (id->key != NULL && !sshkey_equal_public(prv, id->key)) {
@@ -1060,8 +1125,7 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
1060 __func__, id->filename); 1125 __func__, id->filename);
1061 return SSH_ERR_KEY_NOT_FOUND; 1126 return SSH_ERR_KEY_NOT_FOUND;
1062 } 1127 }
1063 r = sshkey_sign(prv, sigp, lenp, data, datalen, 1128 r = sshkey_sign(prv, sigp, lenp, data, datalen, alg, compat);
1064 key_sign_encode(prv), compat);
1065 sshkey_free(prv); 1129 sshkey_free(prv);
1066 return r; 1130 return r;
1067} 1131}
@@ -1086,57 +1150,35 @@ id_filename_matches(Identity *id, Identity *private_id)
1086} 1150}
1087 1151
1088static int 1152static int
1089sign_and_send_pubkey(Authctxt *authctxt, Identity *id) 1153sign_and_send_pubkey(struct ssh *ssh, Authctxt *authctxt, Identity *id)
1090{ 1154{
1091 Buffer b; 1155 struct sshbuf *b = NULL;
1092 Identity *private_id; 1156 Identity *private_id, *sign_id = NULL;
1093 u_char *blob, *signature; 1157 u_char *signature = NULL;
1094 size_t slen; 1158 size_t slen = 0, skip = 0;
1095 u_int bloblen, skip = 0; 1159 int r, fallback_sigtype, sent = 0;
1096 int matched, ret = -1, have_sig = 1; 1160 char *alg = NULL, *fp = NULL;
1097 char *fp; 1161 const char *loc = "";
1098 1162
1099 if ((fp = sshkey_fingerprint(id->key, options.fingerprint_hash, 1163 if ((fp = sshkey_fingerprint(id->key, options.fingerprint_hash,
1100 SSH_FP_DEFAULT)) == NULL) 1164 SSH_FP_DEFAULT)) == NULL)
1101 return 0; 1165 return 0;
1102 debug3("%s: %s %s", __func__, key_type(id->key), fp);
1103 free(fp);
1104 1166
1105 if (key_to_blob(id->key, &blob, &bloblen) == 0) { 1167 debug3("%s: %s %s", __func__, sshkey_type(id->key), fp);
1106 /* we cannot handle this key */
1107 debug3("sign_and_send_pubkey: cannot handle key");
1108 return 0;
1109 }
1110 /* data to be signed */
1111 buffer_init(&b);
1112 if (datafellows & SSH_OLD_SESSIONID) {
1113 buffer_append(&b, session_id2, session_id2_len);
1114 skip = session_id2_len;
1115 } else {
1116 buffer_put_string(&b, session_id2, session_id2_len);
1117 skip = buffer_len(&b);
1118 }
1119 buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST);
1120 buffer_put_cstring(&b, authctxt->server_user);
1121 buffer_put_cstring(&b, authctxt->service);
1122 buffer_put_cstring(&b, authctxt->method->name);
1123 buffer_put_char(&b, have_sig);
1124 buffer_put_cstring(&b, key_sign_encode(id->key));
1125 buffer_put_string(&b, blob, bloblen);
1126 1168
1127 /* 1169 /*
1128 * If the key is an certificate, try to find a matching private key 1170 * If the key is an certificate, try to find a matching private key
1129 * and use it to complete the signature. 1171 * and use it to complete the signature.
1130 * If no such private key exists, fall back to trying the certificate 1172 * If no such private key exists, fall back to trying the certificate
1131 * key itself in case it has a private half already loaded. 1173 * key itself in case it has a private half already loaded.
1174 * This will try to set sign_id to the private key that will perform
1175 * the signature.
1132 */ 1176 */
1133 if (key_is_cert(id->key)) { 1177 if (sshkey_is_cert(id->key)) {
1134 matched = 0;
1135 TAILQ_FOREACH(private_id, &authctxt->keys, next) { 1178 TAILQ_FOREACH(private_id, &authctxt->keys, next) {
1136 if (sshkey_equal_public(id->key, private_id->key) && 1179 if (sshkey_equal_public(id->key, private_id->key) &&
1137 id->key->type != private_id->key->type) { 1180 id->key->type != private_id->key->type) {
1138 id = private_id; 1181 sign_id = private_id;
1139 matched = 1;
1140 break; 1182 break;
1141 } 1183 }
1142 } 1184 }
@@ -1147,18 +1189,18 @@ sign_and_send_pubkey(Authctxt *authctxt, Identity *id)
1147 * of keeping just a private key file and public 1189 * of keeping just a private key file and public
1148 * certificate on disk. 1190 * certificate on disk.
1149 */ 1191 */
1150 if (!matched && !id->isprivate && id->agent_fd == -1 && 1192 if (sign_id == NULL &&
1193 !id->isprivate && id->agent_fd == -1 &&
1151 (id->key->flags & SSHKEY_FLAG_EXT) == 0) { 1194 (id->key->flags & SSHKEY_FLAG_EXT) == 0) {
1152 TAILQ_FOREACH(private_id, &authctxt->keys, next) { 1195 TAILQ_FOREACH(private_id, &authctxt->keys, next) {
1153 if (private_id->key == NULL && 1196 if (private_id->key == NULL &&
1154 id_filename_matches(id, private_id)) { 1197 id_filename_matches(id, private_id)) {
1155 id = private_id; 1198 sign_id = private_id;
1156 matched = 1;
1157 break; 1199 break;
1158 } 1200 }
1159 } 1201 }
1160 } 1202 }
1161 if (matched) { 1203 if (sign_id != NULL) {
1162 debug2("%s: using private key \"%s\"%s for " 1204 debug2("%s: using private key \"%s\"%s for "
1163 "certificate", __func__, id->filename, 1205 "certificate", __func__, id->filename,
1164 id->agent_fd != -1 ? " from agent" : ""); 1206 id->agent_fd != -1 ? " from agent" : "");
@@ -1168,65 +1210,141 @@ sign_and_send_pubkey(Authctxt *authctxt, Identity *id)
1168 } 1210 }
1169 } 1211 }
1170 1212
1171 /* generate signature */ 1213 /*
1172 ret = identity_sign(id, &signature, &slen, 1214 * If the above didn't select another identity to do the signing
1173 buffer_ptr(&b), buffer_len(&b), datafellows); 1215 * then default to the one we started with.
1174 if (ret != 0) { 1216 */
1175 if (ret != SSH_ERR_KEY_NOT_FOUND) 1217 if (sign_id == NULL)
1176 error("%s: signing failed: %s", __func__, ssh_err(ret)); 1218 sign_id = id;
1177 free(blob); 1219
1178 buffer_free(&b); 1220 /* assemble and sign data */
1179 return 0; 1221 for (fallback_sigtype = 0; fallback_sigtype <= 1; fallback_sigtype++) {
1222 free(alg);
1223 slen = 0;
1224 signature = NULL;
1225 if ((alg = key_sig_algorithm(fallback_sigtype ? NULL : ssh,
1226 id->key)) == NULL) {
1227 error("%s: no mutual signature supported", __func__);
1228 goto out;
1229 }
1230 debug3("%s: signing using %s", __func__, alg);
1231
1232 sshbuf_free(b);
1233 if ((b = sshbuf_new()) == NULL)
1234 fatal("%s: sshbuf_new failed", __func__);
1235 if (datafellows & SSH_OLD_SESSIONID) {
1236 if ((r = sshbuf_put(b, session_id2,
1237 session_id2_len)) != 0) {
1238 fatal("%s: sshbuf_put: %s",
1239 __func__, ssh_err(r));
1240 }
1241 } else {
1242 if ((r = sshbuf_put_string(b, session_id2,
1243 session_id2_len)) != 0) {
1244 fatal("%s: sshbuf_put_string: %s",
1245 __func__, ssh_err(r));
1246 }
1247 }
1248 skip = sshbuf_len(b);
1249 if ((r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
1250 (r = sshbuf_put_cstring(b, authctxt->server_user)) != 0 ||
1251 (r = sshbuf_put_cstring(b, authctxt->service)) != 0 ||
1252 (r = sshbuf_put_cstring(b, authctxt->method->name)) != 0 ||
1253 (r = sshbuf_put_u8(b, 1)) != 0 ||
1254 (r = sshbuf_put_cstring(b, alg)) != 0 ||
1255 (r = sshkey_puts(id->key, b)) != 0) {
1256 fatal("%s: assemble signed data: %s",
1257 __func__, ssh_err(r));
1258 }
1259
1260 /* generate signature */
1261 r = identity_sign(sign_id, &signature, &slen,
1262 sshbuf_ptr(b), sshbuf_len(b), datafellows, alg);
1263 if (r == 0)
1264 break;
1265 else if (r == SSH_ERR_KEY_NOT_FOUND)
1266 goto out; /* soft failure */
1267 else if (r == SSH_ERR_SIGN_ALG_UNSUPPORTED &&
1268 !fallback_sigtype) {
1269 if (sign_id->agent_fd != -1)
1270 loc = "agent ";
1271 else if ((sign_id->key->flags & SSHKEY_FLAG_EXT) != 0)
1272 loc = "token ";
1273 logit("%skey %s %s returned incorrect signature type",
1274 loc, sshkey_type(id->key), fp);
1275 continue;
1276 }
1277 error("%s: signing failed: %s", __func__, ssh_err(r));
1278 goto out;
1180 } 1279 }
1181#ifdef DEBUG_PK 1280 if (slen == 0 || signature == NULL) /* shouldn't happen */
1182 buffer_dump(&b); 1281 fatal("%s: no signature", __func__);
1183#endif
1184 free(blob);
1185 1282
1186 /* append signature */ 1283 /* append signature */
1187 buffer_put_string(&b, signature, slen); 1284 if ((r = sshbuf_put_string(b, signature, slen)) != 0)
1188 free(signature); 1285 fatal("%s: append signature: %s", __func__, ssh_err(r));
1189 1286
1287#ifdef DEBUG_PK
1288 sshbuf_dump(b, stderr);
1289#endif
1190 /* skip session id and packet type */ 1290 /* skip session id and packet type */
1191 if (buffer_len(&b) < skip + 1) 1291 if ((r = sshbuf_consume(b, skip + 1)) != 0)
1192 fatal("userauth_pubkey: internal error"); 1292 fatal("%s: consume: %s", __func__, ssh_err(r));
1193 buffer_consume(&b, skip + 1);
1194 1293
1195 /* put remaining data from buffer into packet */ 1294 /* put remaining data from buffer into packet */
1196 packet_start(SSH2_MSG_USERAUTH_REQUEST); 1295 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
1197 packet_put_raw(buffer_ptr(&b), buffer_len(&b)); 1296 (r = sshpkt_putb(ssh, b)) != 0 ||
1198 buffer_free(&b); 1297 (r = sshpkt_send(ssh)) != 0)
1199 packet_send(); 1298 fatal("%s: enqueue request: %s", __func__, ssh_err(r));
1200 1299
1201 return 1; 1300 /* success */
1301 sent = 1;
1302
1303 out:
1304 free(fp);
1305 free(alg);
1306 sshbuf_free(b);
1307 freezero(signature, slen);
1308 return sent;
1202} 1309}
1203 1310
1204static int 1311static int
1205send_pubkey_test(Authctxt *authctxt, Identity *id) 1312send_pubkey_test(struct ssh *ssh, Authctxt *authctxt, Identity *id)
1206{ 1313{
1207 u_char *blob; 1314 u_char *blob = NULL;
1208 u_int bloblen, have_sig = 0; 1315 char *alg = NULL;
1209 1316 size_t bloblen;
1210 debug3("send_pubkey_test"); 1317 u_int have_sig = 0;
1318 int sent = 0, r;
1319
1320 if ((alg = key_sig_algorithm(ssh, id->key)) == NULL) {
1321 debug("%s: no mutual signature algorithm", __func__);
1322 goto out;
1323 }
1211 1324
1212 if (key_to_blob(id->key, &blob, &bloblen) == 0) { 1325 if ((r = sshkey_to_blob(id->key, &blob, &bloblen)) != 0) {
1213 /* we cannot handle this key */ 1326 /* we cannot handle this key */
1214 debug3("send_pubkey_test: cannot handle key"); 1327 debug3("%s: cannot handle key", __func__);
1215 return 0; 1328 goto out;
1216 } 1329 }
1217 /* register callback for USERAUTH_PK_OK message */ 1330 /* register callback for USERAUTH_PK_OK message */
1218 dispatch_set(SSH2_MSG_USERAUTH_PK_OK, &input_userauth_pk_ok); 1331 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_PK_OK, &input_userauth_pk_ok);
1219 1332
1220 packet_start(SSH2_MSG_USERAUTH_REQUEST); 1333 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
1221 packet_put_cstring(authctxt->server_user); 1334 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 ||
1222 packet_put_cstring(authctxt->service); 1335 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 ||
1223 packet_put_cstring(authctxt->method->name); 1336 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 ||
1224 packet_put_char(have_sig); 1337 (r = sshpkt_put_u8(ssh, have_sig)) != 0 ||
1225 packet_put_cstring(key_sign_encode(id->key)); 1338 (r = sshpkt_put_cstring(ssh, alg)) != 0 ||
1226 packet_put_string(blob, bloblen); 1339 (r = sshpkt_put_string(ssh, blob, bloblen)) != 0 ||
1340 (r = sshpkt_send(ssh)) != 0)
1341 fatal("%s: %s", __func__, ssh_err(r));
1342 sent = 1;
1343
1344 out:
1345 free(alg);
1227 free(blob); 1346 free(blob);
1228 packet_send(); 1347 return sent;
1229 return 1;
1230} 1348}
1231 1349
1232static struct sshkey * 1350static struct sshkey *
@@ -1284,10 +1402,8 @@ load_identity_file(Identity *id)
1284 !(id->key && id->isprivate)) 1402 !(id->key && id->isprivate))
1285 maybe_add_key_to_agent(id->filename, private, comment, 1403 maybe_add_key_to_agent(id->filename, private, comment,
1286 passphrase); 1404 passphrase);
1287 if (i > 0) { 1405 if (i > 0)
1288 explicit_bzero(passphrase, strlen(passphrase)); 1406 freezero(passphrase, strlen(passphrase));
1289 free(passphrase);
1290 }
1291 free(comment); 1407 free(comment);
1292 if (private != NULL || quit) 1408 if (private != NULL || quit)
1293 break; 1409 break;
@@ -1295,6 +1411,36 @@ load_identity_file(Identity *id)
1295 return private; 1411 return private;
1296} 1412}
1297 1413
1414static int
1415key_type_allowed_by_config(struct sshkey *key)
1416{
1417 if (match_pattern_list(sshkey_ssh_name(key),
1418 options.pubkey_key_types, 0) == 1)
1419 return 1;
1420
1421 /* RSA keys/certs might be allowed by alternate signature types */
1422 switch (key->type) {
1423 case KEY_RSA:
1424 if (match_pattern_list("rsa-sha2-512",
1425 options.pubkey_key_types, 0) == 1)
1426 return 1;
1427 if (match_pattern_list("rsa-sha2-256",
1428 options.pubkey_key_types, 0) == 1)
1429 return 1;
1430 break;
1431 case KEY_RSA_CERT:
1432 if (match_pattern_list("rsa-sha2-512-cert-v01@openssh.com",
1433 options.pubkey_key_types, 0) == 1)
1434 return 1;
1435 if (match_pattern_list("rsa-sha2-256-cert-v01@openssh.com",
1436 options.pubkey_key_types, 0) == 1)
1437 return 1;
1438 break;
1439 }
1440 return 0;
1441}
1442
1443
1298/* 1444/*
1299 * try keys in the following order: 1445 * try keys in the following order:
1300 * 1. certificates listed in the config file 1446 * 1. certificates listed in the config file
@@ -1334,7 +1480,7 @@ pubkey_prepare(Authctxt *authctxt)
1334 /* list of certificates specified by user */ 1480 /* list of certificates specified by user */
1335 for (i = 0; i < options.num_certificate_files; i++) { 1481 for (i = 0; i < options.num_certificate_files; i++) {
1336 key = options.certificates[i]; 1482 key = options.certificates[i];
1337 if (!key_is_cert(key) || key->cert == NULL || 1483 if (!sshkey_is_cert(key) || key->cert == NULL ||
1338 key->cert->type != SSH2_CERT_TYPE_USER) 1484 key->cert->type != SSH2_CERT_TYPE_USER)
1339 continue; 1485 continue;
1340 id = xcalloc(1, sizeof(*id)); 1486 id = xcalloc(1, sizeof(*id));
@@ -1408,8 +1554,7 @@ pubkey_prepare(Authctxt *authctxt)
1408 /* If IdentitiesOnly set and key not found then don't use it */ 1554 /* If IdentitiesOnly set and key not found then don't use it */
1409 if (!found && options.identities_only) { 1555 if (!found && options.identities_only) {
1410 TAILQ_REMOVE(&files, id, next); 1556 TAILQ_REMOVE(&files, id, next);
1411 explicit_bzero(id, sizeof(*id)); 1557 freezero(id, sizeof(*id));
1412 free(id);
1413 } 1558 }
1414 } 1559 }
1415 /* append remaining keys from the config file */ 1560 /* append remaining keys from the config file */
@@ -1419,9 +1564,7 @@ pubkey_prepare(Authctxt *authctxt)
1419 } 1564 }
1420 /* finally, filter by PubkeyAcceptedKeyTypes */ 1565 /* finally, filter by PubkeyAcceptedKeyTypes */
1421 TAILQ_FOREACH_SAFE(id, preferred, next, id2) { 1566 TAILQ_FOREACH_SAFE(id, preferred, next, id2) {
1422 if (id->key != NULL && 1567 if (id->key != NULL && !key_type_allowed_by_config(id->key)) {
1423 match_pattern_list(sshkey_ssh_name(id->key),
1424 options.pubkey_key_types, 0) != 1) {
1425 debug("Skipping %s key %s - " 1568 debug("Skipping %s key %s - "
1426 "not in PubkeyAcceptedKeyTypes", 1569 "not in PubkeyAcceptedKeyTypes",
1427 sshkey_ssh_name(id->key), id->filename); 1570 sshkey_ssh_name(id->key), id->filename);
@@ -1467,10 +1610,10 @@ try_identity(Identity *id)
1467{ 1610{
1468 if (!id->key) 1611 if (!id->key)
1469 return (0); 1612 return (0);
1470 if (key_type_plain(id->key->type) == KEY_RSA && 1613 if (sshkey_type_plain(id->key->type) == KEY_RSA &&
1471 (datafellows & SSH_BUG_RSASIGMD5) != 0) { 1614 (datafellows & SSH_BUG_RSASIGMD5) != 0) {
1472 debug("Skipped %s key %s for RSA/MD5 server", 1615 debug("Skipped %s key %s for RSA/MD5 server",
1473 key_type(id->key), id->filename); 1616 sshkey_type(id->key), id->filename);
1474 return (0); 1617 return (0);
1475 } 1618 }
1476 return 1; 1619 return 1;
@@ -1479,6 +1622,7 @@ try_identity(Identity *id)
1479int 1622int
1480userauth_pubkey(Authctxt *authctxt) 1623userauth_pubkey(Authctxt *authctxt)
1481{ 1624{
1625 struct ssh *ssh = active_state; /* XXX */
1482 Identity *id; 1626 Identity *id;
1483 int sent = 0; 1627 int sent = 0;
1484 char *fp; 1628 char *fp;
@@ -1506,7 +1650,7 @@ userauth_pubkey(Authctxt *authctxt)
1506 debug("Offering public key: %s %s %s", 1650 debug("Offering public key: %s %s %s",
1507 sshkey_type(id->key), fp, id->filename); 1651 sshkey_type(id->key), fp, id->filename);
1508 free(fp); 1652 free(fp);
1509 sent = send_pubkey_test(authctxt, id); 1653 sent = send_pubkey_test(ssh, authctxt, id);
1510 } 1654 }
1511 } else { 1655 } else {
1512 debug("Trying private key: %s", id->filename); 1656 debug("Trying private key: %s", id->filename);
@@ -1514,10 +1658,10 @@ userauth_pubkey(Authctxt *authctxt)
1514 if (id->key != NULL) { 1658 if (id->key != NULL) {
1515 if (try_identity(id)) { 1659 if (try_identity(id)) {
1516 id->isprivate = 1; 1660 id->isprivate = 1;
1517 sent = sign_and_send_pubkey( 1661 sent = sign_and_send_pubkey(ssh,
1518 authctxt, id); 1662 authctxt, id);
1519 } 1663 }
1520 key_free(id->key); 1664 sshkey_free(id->key);
1521 id->key = NULL; 1665 id->key = NULL;
1522 id->isprivate = 0; 1666 id->isprivate = 0;
1523 } 1667 }
@@ -1534,28 +1678,31 @@ userauth_pubkey(Authctxt *authctxt)
1534int 1678int
1535userauth_kbdint(Authctxt *authctxt) 1679userauth_kbdint(Authctxt *authctxt)
1536{ 1680{
1681 struct ssh *ssh = active_state; /* XXX */
1537 static int attempt = 0; 1682 static int attempt = 0;
1683 int r;
1538 1684
1539 if (attempt++ >= options.number_of_password_prompts) 1685 if (attempt++ >= options.number_of_password_prompts)
1540 return 0; 1686 return 0;
1541 /* disable if no SSH2_MSG_USERAUTH_INFO_REQUEST has been seen */ 1687 /* disable if no SSH2_MSG_USERAUTH_INFO_REQUEST has been seen */
1542 if (attempt > 1 && !authctxt->info_req_seen) { 1688 if (attempt > 1 && !authctxt->info_req_seen) {
1543 debug3("userauth_kbdint: disable: no info_req_seen"); 1689 debug3("userauth_kbdint: disable: no info_req_seen");
1544 dispatch_set(SSH2_MSG_USERAUTH_INFO_REQUEST, NULL); 1690 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_INFO_REQUEST, NULL);
1545 return 0; 1691 return 0;
1546 } 1692 }
1547 1693
1548 debug2("userauth_kbdint"); 1694 debug2("userauth_kbdint");
1549 packet_start(SSH2_MSG_USERAUTH_REQUEST); 1695 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 ||
1550 packet_put_cstring(authctxt->server_user); 1696 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 ||
1551 packet_put_cstring(authctxt->service); 1697 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 ||
1552 packet_put_cstring(authctxt->method->name); 1698 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 ||
1553 packet_put_cstring(""); /* lang */ 1699 (r = sshpkt_put_cstring(ssh, "")) != 0 || /* lang */
1554 packet_put_cstring(options.kbd_interactive_devices ? 1700 (r = sshpkt_put_cstring(ssh, options.kbd_interactive_devices ?
1555 options.kbd_interactive_devices : ""); 1701 options.kbd_interactive_devices : "")) != 0 ||
1556 packet_send(); 1702 (r = sshpkt_send(ssh)) != 0)
1557 1703 fatal("%s: %s", __func__, ssh_err(r));
1558 dispatch_set(SSH2_MSG_USERAUTH_INFO_REQUEST, &input_userauth_info_req); 1704
1705 ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_INFO_REQUEST, &input_userauth_info_req);
1559 return 1; 1706 return 1;
1560} 1707}
1561 1708
@@ -1566,9 +1713,11 @@ int
1566input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh) 1713input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh)
1567{ 1714{
1568 Authctxt *authctxt = ssh->authctxt; 1715 Authctxt *authctxt = ssh->authctxt;
1569 char *name, *inst, *lang, *prompt, *response; 1716 char *name = NULL, *inst = NULL, *lang = NULL, *prompt = NULL;
1717 char *response = NULL;
1718 u_char echo = 0;
1570 u_int num_prompts, i; 1719 u_int num_prompts, i;
1571 int echo = 0; 1720 int r;
1572 1721
1573 debug2("input_userauth_info_req"); 1722 debug2("input_userauth_info_req");
1574 1723
@@ -1577,44 +1726,52 @@ input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh)
1577 1726
1578 authctxt->info_req_seen = 1; 1727 authctxt->info_req_seen = 1;
1579 1728
1580 name = packet_get_string(NULL); 1729 if ((r = sshpkt_get_cstring(ssh, &name, NULL)) != 0 ||
1581 inst = packet_get_string(NULL); 1730 (r = sshpkt_get_cstring(ssh, &inst, NULL)) != 0 ||
1582 lang = packet_get_string(NULL); 1731 (r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0)
1732 goto out;
1583 if (strlen(name) > 0) 1733 if (strlen(name) > 0)
1584 logit("%s", name); 1734 logit("%s", name);
1585 if (strlen(inst) > 0) 1735 if (strlen(inst) > 0)
1586 logit("%s", inst); 1736 logit("%s", inst);
1587 free(name);
1588 free(inst);
1589 free(lang);
1590 1737
1591 num_prompts = packet_get_int(); 1738 if ((r = sshpkt_get_u32(ssh, &num_prompts)) != 0)
1739 goto out;
1592 /* 1740 /*
1593 * Begin to build info response packet based on prompts requested. 1741 * Begin to build info response packet based on prompts requested.
1594 * We commit to providing the correct number of responses, so if 1742 * We commit to providing the correct number of responses, so if
1595 * further on we run into a problem that prevents this, we have to 1743 * further on we run into a problem that prevents this, we have to
1596 * be sure and clean this up and send a correct error response. 1744 * be sure and clean this up and send a correct error response.
1597 */ 1745 */
1598 packet_start(SSH2_MSG_USERAUTH_INFO_RESPONSE); 1746 if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_INFO_RESPONSE)) != 0 ||
1599 packet_put_int(num_prompts); 1747 (r = sshpkt_put_u32(ssh, num_prompts)) != 0)
1748 goto out;
1600 1749
1601 debug2("input_userauth_info_req: num_prompts %d", num_prompts); 1750 debug2("input_userauth_info_req: num_prompts %d", num_prompts);
1602 for (i = 0; i < num_prompts; i++) { 1751 for (i = 0; i < num_prompts; i++) {
1603 prompt = packet_get_string(NULL); 1752 if ((r = sshpkt_get_cstring(ssh, &prompt, NULL)) != 0 ||
1604 echo = packet_get_char(); 1753 (r = sshpkt_get_u8(ssh, &echo)) != 0)
1605 1754 goto out;
1606 response = read_passphrase(prompt, echo ? RP_ECHO : 0); 1755 response = read_passphrase(prompt, echo ? RP_ECHO : 0);
1607 1756 if ((r = sshpkt_put_cstring(ssh, response)) != 0)
1608 packet_put_cstring(response); 1757 goto out;
1609 explicit_bzero(response, strlen(response)); 1758 freezero(response, strlen(response));
1610 free(response);
1611 free(prompt); 1759 free(prompt);
1760 response = prompt = NULL;
1612 } 1761 }
1613 packet_check_eom(); /* done with parsing incoming message. */ 1762 /* done with parsing incoming message. */
1614 1763 if ((r = sshpkt_get_end(ssh)) != 0 ||
1615 packet_add_padding(64); 1764 (r = sshpkt_add_padding(ssh, 64)) != 0)
1616 packet_send(); 1765 goto out;
1617 return 0; 1766 r = sshpkt_send(ssh);
1767 out:
1768 if (response)
1769 freezero(response, strlen(response));
1770 free(prompt);
1771 free(name);
1772 free(inst);
1773 free(lang);
1774 return r;
1618} 1775}
1619 1776
1620static int 1777static int
@@ -1655,7 +1812,6 @@ ssh_keysign(struct sshkey *key, u_char **sigp, size_t *lenp,
1655 if (pid == 0) { 1812 if (pid == 0) {
1656 /* keep the socket on exec */ 1813 /* keep the socket on exec */
1657 fcntl(sock, F_SETFD, 0); 1814 fcntl(sock, F_SETFD, 0);
1658 permanently_drop_suid(getuid());
1659 close(from[0]); 1815 close(from[0]);
1660 if (dup2(from[1], STDOUT_FILENO) < 0) 1816 if (dup2(from[1], STDOUT_FILENO) < 0)
1661 fatal("%s: dup2: %s", __func__, strerror(errno)); 1817 fatal("%s: dup2: %s", __func__, strerror(errno));
@@ -1735,7 +1891,7 @@ ssh_keysign(struct sshkey *key, u_char **sigp, size_t *lenp,
1735int 1891int
1736userauth_hostbased(Authctxt *authctxt) 1892userauth_hostbased(Authctxt *authctxt)
1737{ 1893{
1738 struct ssh *ssh = active_state; 1894 struct ssh *ssh = active_state; /* XXX */
1739 struct sshkey *private = NULL; 1895 struct sshkey *private = NULL;
1740 struct sshbuf *b = NULL; 1896 struct sshbuf *b = NULL;
1741 u_char *sig = NULL, *keyblob = NULL; 1897 u_char *sig = NULL, *keyblob = NULL;
@@ -1822,7 +1978,7 @@ userauth_hostbased(Authctxt *authctxt)
1822 (r = sshbuf_put_cstring(b, authctxt->server_user)) != 0 || 1978 (r = sshbuf_put_cstring(b, authctxt->server_user)) != 0 ||
1823 (r = sshbuf_put_cstring(b, authctxt->service)) != 0 || 1979 (r = sshbuf_put_cstring(b, authctxt->service)) != 0 ||
1824 (r = sshbuf_put_cstring(b, authctxt->method->name)) != 0 || 1980 (r = sshbuf_put_cstring(b, authctxt->method->name)) != 0 ||
1825 (r = sshbuf_put_cstring(b, key_ssh_name(private))) != 0 || 1981 (r = sshbuf_put_cstring(b, sshkey_ssh_name(private))) != 0 ||
1826 (r = sshbuf_put_string(b, keyblob, keylen)) != 0 || 1982 (r = sshbuf_put_string(b, keyblob, keylen)) != 0 ||
1827 (r = sshbuf_put_cstring(b, chost)) != 0 || 1983 (r = sshbuf_put_cstring(b, chost)) != 0 ||
1828 (r = sshbuf_put_cstring(b, authctxt->local_user)) != 0) { 1984 (r = sshbuf_put_cstring(b, authctxt->local_user)) != 0) {
@@ -1833,12 +1989,8 @@ userauth_hostbased(Authctxt *authctxt)
1833#ifdef DEBUG_PK 1989#ifdef DEBUG_PK
1834 sshbuf_dump(b, stderr); 1990 sshbuf_dump(b, stderr);
1835#endif 1991#endif
1836 if (authctxt->sensitive->external_keysign) 1992 r = ssh_keysign(private, &sig, &siglen,
1837 r = ssh_keysign(private, &sig, &siglen, 1993 sshbuf_ptr(b), sshbuf_len(b));
1838 sshbuf_ptr(b), sshbuf_len(b));
1839 else if ((r = sshkey_sign(private, &sig, &siglen,
1840 sshbuf_ptr(b), sshbuf_len(b), NULL, datafellows)) != 0)
1841 debug("%s: sshkey_sign: %s", __func__, ssh_err(r));
1842 if (r != 0) { 1994 if (r != 0) {
1843 error("sign using hostkey %s %s failed", 1995 error("sign using hostkey %s %s failed",
1844 sshkey_ssh_name(private), fp); 1996 sshkey_ssh_name(private), fp);
@@ -1848,7 +2000,7 @@ userauth_hostbased(Authctxt *authctxt)
1848 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || 2000 (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 ||
1849 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || 2001 (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 ||
1850 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || 2002 (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 ||
1851 (r = sshpkt_put_cstring(ssh, key_ssh_name(private))) != 0 || 2003 (r = sshpkt_put_cstring(ssh, sshkey_ssh_name(private))) != 0 ||
1852 (r = sshpkt_put_string(ssh, keyblob, keylen)) != 0 || 2004 (r = sshpkt_put_string(ssh, keyblob, keylen)) != 0 ||
1853 (r = sshpkt_put_cstring(ssh, chost)) != 0 || 2005 (r = sshpkt_put_cstring(ssh, chost)) != 0 ||
1854 (r = sshpkt_put_cstring(ssh, authctxt->local_user)) != 0 || 2006 (r = sshpkt_put_cstring(ssh, authctxt->local_user)) != 0 ||
@@ -1860,10 +2012,8 @@ userauth_hostbased(Authctxt *authctxt)
1860 success = 1; 2012 success = 1;
1861 2013
1862 out: 2014 out:
1863 if (sig != NULL) { 2015 if (sig != NULL)
1864 explicit_bzero(sig, siglen); 2016 freezero(sig, siglen);
1865 free(sig);
1866 }
1867 free(keyblob); 2017 free(keyblob);
1868 free(lname); 2018 free(lname);
1869 free(fp); 2019 free(fp);
@@ -1960,20 +2110,22 @@ static char *
1960authmethods_get(void) 2110authmethods_get(void)
1961{ 2111{
1962 Authmethod *method = NULL; 2112 Authmethod *method = NULL;
1963 Buffer b; 2113 struct sshbuf *b;
1964 char *list; 2114 char *list;
2115 int r;
1965 2116
1966 buffer_init(&b); 2117 if ((b = sshbuf_new()) == NULL)
2118 fatal("%s: sshbuf_new failed", __func__);
1967 for (method = authmethods; method->name != NULL; method++) { 2119 for (method = authmethods; method->name != NULL; method++) {
1968 if (authmethod_is_enabled(method)) { 2120 if (authmethod_is_enabled(method)) {
1969 if (buffer_len(&b) > 0) 2121 if ((r = sshbuf_putf(b, "%s%s",
1970 buffer_append(&b, ",", 1); 2122 sshbuf_len(b) ? "," : "", method->name)) != 0)
1971 buffer_append(&b, method->name, strlen(method->name)); 2123 fatal("%s: buffer error: %s",
2124 __func__, ssh_err(r));
1972 } 2125 }
1973 } 2126 }
1974 if ((list = sshbuf_dup_string(&b)) == NULL) 2127 if ((list = sshbuf_dup_string(b)) == NULL)
1975 fatal("%s: sshbuf_dup_string failed", __func__); 2128 fatal("%s: sshbuf_dup_string failed", __func__);
1976 buffer_free(&b); 2129 sshbuf_free(b);
1977 return list; 2130 return list;
1978} 2131}
1979
diff --git a/sshd.0 b/sshd.0
index 999d160bf..ac7e70707 100644
--- a/sshd.0
+++ b/sshd.0
@@ -145,7 +145,7 @@ AUTHENTICATION
145 Regardless of the authentication type, the account is checked to ensure 145 Regardless of the authentication type, the account is checked to ensure
146 that it is accessible. An account is not accessible if it is locked, 146 that it is accessible. An account is not accessible if it is locked,
147 listed in DenyUsers or its group is listed in DenyGroups . The 147 listed in DenyUsers or its group is listed in DenyGroups . The
148 definition of a locked account is system dependant. Some platforms have 148 definition of a locked account is system dependent. Some platforms have
149 their own account database (eg AIX) and some modify the passwd field ( 149 their own account database (eg AIX) and some modify the passwd field (
150 M-bM-^@M-^X*LK*M-bM-^@M-^Y on Solaris and UnixWare, M-bM-^@M-^X*M-bM-^@M-^Y on HP-UX, containing M-bM-^@M-^XNologinM-bM-^@M-^Y on 150 M-bM-^@M-^X*LK*M-bM-^@M-^Y on Solaris and UnixWare, M-bM-^@M-^X*M-bM-^@M-^Y on HP-UX, containing M-bM-^@M-^XNologinM-bM-^@M-^Y on
151 Tru64, a leading M-bM-^@M-^X*LOCKED*M-bM-^@M-^Y on FreeBSD and a leading M-bM-^@M-^X!M-bM-^@M-^Y on most 151 Tru64, a leading M-bM-^@M-^X*LOCKED*M-bM-^@M-^Y on FreeBSD and a leading M-bM-^@M-^X!M-bM-^@M-^Y on most
@@ -341,14 +341,28 @@ AUTHORIZED_KEYS FILE FORMAT
341 Forbids X11 forwarding when this key is used for authentication. 341 Forbids X11 forwarding when this key is used for authentication.
342 Any X11 forward requests by the client will return an error. 342 Any X11 forward requests by the client will return an error.
343 343
344 permitlisten="[host:]port"
345 Limit remote port forwarding with the ssh(1) -R option such that
346 it may only listen on the specified host (optional) and port.
347 IPv6 addresses can be specified by enclosing the address in
348 square brackets. Multiple permitlisten options may be applied
349 separated by commas. Hostnames may include wildcards as
350 described in the PATTERNS section in ssh_config(5). A port
351 specification of * matches any port. Note that the setting of
352 GatewayPorts may further restrict listen addresses. Note that
353 ssh(1) will send a hostname of M-bM-^@M-^\localhostM-bM-^@M-^] if a listen host was
354 not specified when the forwarding was requested, and that this
355 name is treated differently to the explicit localhost addresses
356 M-bM-^@M-^\127.0.0.1M-bM-^@M-^] and M-bM-^@M-^\::1M-bM-^@M-^].
357
344 permitopen="host:port" 358 permitopen="host:port"
345 Limit local port forwarding with ssh(1) -L such that it may only 359 Limit local port forwarding with the ssh(1) -L option such that
346 connect to the specified host and port. IPv6 addresses can be 360 it may only connect to the specified host and port. IPv6
347 specified by enclosing the address in square brackets. Multiple 361 addresses can be specified by enclosing the address in square
348 permitopen options may be applied separated by commas. No 362 brackets. Multiple permitopen options may be applied separated
349 pattern matching is performed on the specified hostnames, they 363 by commas. No pattern matching is performed on the specified
350 must be literal domains or addresses. A port specification of * 364 hostnames, they must be literal domains or addresses. A port
351 matches any port. 365 specification of * matches any port.
352 366
353 port-forwarding 367 port-forwarding
354 Enable port forwarding previously disabled by the restrict 368 Enable port forwarding previously disabled by the restrict
@@ -390,9 +404,11 @@ AUTHORIZED_KEYS FILE FORMAT
390 ssh-rsa AAAAB3Nza...LiPk== user@example.net 404 ssh-rsa AAAAB3Nza...LiPk== user@example.net
391 from="*.sales.example.net,!pc.sales.example.net" ssh-rsa 405 from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
392 AAAAB2...19Q== john@example.net 406 AAAAB2...19Q== john@example.net
393 command="dump /home",no-pty,no-port-forwarding ssh-dss 407 command="dump /home",no-pty,no-port-forwarding ssh-rsa
394 AAAAC3...51R== example.net 408 AAAAC3...51R== example.net
395 permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss 409 permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-rsa
410 AAAAB5...21S==
411 permitlisten="localhost:8080",permitopen="localhost:22000" ssh-rsa
396 AAAAB5...21S== 412 AAAAB5...21S==
397 tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== 413 tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...==
398 jane@example.net 414 jane@example.net
@@ -634,4 +650,4 @@ AUTHORS
634 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 650 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
635 for privilege separation. 651 for privilege separation.
636 652
637OpenBSD 6.2 March 14, 2018 OpenBSD 6.2 653OpenBSD 6.4 July 22, 2018 OpenBSD 6.4
diff --git a/sshd.8 b/sshd.8
index 968ba66bb..fb133c14b 100644
--- a/sshd.8
+++ b/sshd.8
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd.8,v 1.299 2018/03/14 06:56:20 jmc Exp $ 36.\" $OpenBSD: sshd.8,v 1.304 2018/07/22 12:16:59 dtucker Exp $
37.Dd $Mdocdate: March 14 2018 $ 37.Dd $Mdocdate: July 22 2018 $
38.Dt SSHD 8 38.Dt SSHD 8
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -277,7 +277,7 @@ locked, listed in
277.Cm DenyUsers 277.Cm DenyUsers
278or its group is listed in 278or its group is listed in
279.Cm DenyGroups 279.Cm DenyGroups
280\&. The definition of a locked account is system dependant. Some platforms 280\&. The definition of a locked account is system dependent. Some platforms
281have their own account database (eg AIX) and some modify the passwd field ( 281have their own account database (eg AIX) and some modify the passwd field (
282.Ql \&*LK\&* 282.Ql \&*LK\&*
283on Solaris and UnixWare, 283on Solaris and UnixWare,
@@ -554,11 +554,37 @@ Disables execution of
554.It Cm no-X11-forwarding 554.It Cm no-X11-forwarding
555Forbids X11 forwarding when this key is used for authentication. 555Forbids X11 forwarding when this key is used for authentication.
556Any X11 forward requests by the client will return an error. 556Any X11 forward requests by the client will return an error.
557.It Cm permitlisten="[host:]port"
558Limit remote port forwarding with the
559.Xr ssh 1
560.Fl R
561option such that it may only listen on the specified host (optional) and port.
562IPv6 addresses can be specified by enclosing the address in square brackets.
563Multiple
564.Cm permitlisten
565options may be applied separated by commas.
566Hostnames may include wildcards as described in the PATTERNS section in
567.Xr ssh_config 5 .
568A port specification of
569.Cm *
570matches any port.
571Note that the setting of
572.Cm GatewayPorts
573may further restrict listen addresses.
574Note that
575.Xr ssh 1
576will send a hostname of
577.Dq localhost
578if a listen host was not specified when the forwarding was requested, and
579that this name is treated differently to the explicit localhost addresses
580.Dq 127.0.0.1
581and
582.Dq ::1 .
557.It Cm permitopen="host:port" 583.It Cm permitopen="host:port"
558Limit local port forwarding with 584Limit local port forwarding with the
559.Xr ssh 1 585.Xr ssh 1
560.Fl L 586.Fl L
561such that it may only connect to the specified host and port. 587option such that it may only connect to the specified host and port.
562IPv6 addresses can be specified by enclosing the address in square brackets. 588IPv6 addresses can be specified by enclosing the address in square brackets.
563Multiple 589Multiple
564.Cm permitopen 590.Cm permitopen
@@ -618,9 +644,11 @@ An example authorized_keys file:
618ssh-rsa AAAAB3Nza...LiPk== user@example.net 644ssh-rsa AAAAB3Nza...LiPk== user@example.net
619from="*.sales.example.net,!pc.sales.example.net" ssh-rsa 645from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
620AAAAB2...19Q== john@example.net 646AAAAB2...19Q== john@example.net
621command="dump /home",no-pty,no-port-forwarding ssh-dss 647command="dump /home",no-pty,no-port-forwarding ssh-rsa
622AAAAC3...51R== example.net 648AAAAC3...51R== example.net
623permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss 649permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-rsa
650AAAAB5...21S==
651permitlisten="localhost:8080",permitopen="localhost:22000" ssh-rsa
624AAAAB5...21S== 652AAAAB5...21S==
625tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== 653tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...==
626jane@example.net 654jane@example.net
diff --git a/sshd.c b/sshd.c
index fd95b681b..a738c3ab6 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshd.c,v 1.506 2018/03/03 03:15:51 djm Exp $ */ 1/* $OpenBSD: sshd.c,v 1.514 2018/08/13 02:41:05 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -91,7 +91,7 @@
91#include "sshpty.h" 91#include "sshpty.h"
92#include "packet.h" 92#include "packet.h"
93#include "log.h" 93#include "log.h"
94#include "buffer.h" 94#include "sshbuf.h"
95#include "misc.h" 95#include "misc.h"
96#include "match.h" 96#include "match.h"
97#include "servconf.h" 97#include "servconf.h"
@@ -99,7 +99,7 @@
99#include "compat.h" 99#include "compat.h"
100#include "cipher.h" 100#include "cipher.h"
101#include "digest.h" 101#include "digest.h"
102#include "key.h" 102#include "sshkey.h"
103#include "kex.h" 103#include "kex.h"
104#include "myproposal.h" 104#include "myproposal.h"
105#include "authfile.h" 105#include "authfile.h"
@@ -237,10 +237,10 @@ Authctxt *the_authctxt = NULL;
237struct sshauthopt *auth_opts = NULL; 237struct sshauthopt *auth_opts = NULL;
238 238
239/* sshd_config buffer */ 239/* sshd_config buffer */
240Buffer cfg; 240struct sshbuf *cfg;
241 241
242/* message to be displayed after login */ 242/* message to be displayed after login */
243Buffer loginmsg; 243struct sshbuf *loginmsg;
244 244
245/* Unprivileged user */ 245/* Unprivileged user */
246struct passwd *privsep_pw = NULL; 246struct passwd *privsep_pw = NULL;
@@ -473,11 +473,11 @@ destroy_sensitive_data(void)
473 473
474 for (i = 0; i < options.num_host_key_files; i++) { 474 for (i = 0; i < options.num_host_key_files; i++) {
475 if (sensitive_data.host_keys[i]) { 475 if (sensitive_data.host_keys[i]) {
476 key_free(sensitive_data.host_keys[i]); 476 sshkey_free(sensitive_data.host_keys[i]);
477 sensitive_data.host_keys[i] = NULL; 477 sensitive_data.host_keys[i] = NULL;
478 } 478 }
479 if (sensitive_data.host_certificates[i]) { 479 if (sensitive_data.host_certificates[i]) {
480 key_free(sensitive_data.host_certificates[i]); 480 sshkey_free(sensitive_data.host_certificates[i]);
481 sensitive_data.host_certificates[i] = NULL; 481 sensitive_data.host_certificates[i] = NULL;
482 } 482 }
483 } 483 }
@@ -489,11 +489,16 @@ demote_sensitive_data(void)
489{ 489{
490 struct sshkey *tmp; 490 struct sshkey *tmp;
491 u_int i; 491 u_int i;
492 int r;
492 493
493 for (i = 0; i < options.num_host_key_files; i++) { 494 for (i = 0; i < options.num_host_key_files; i++) {
494 if (sensitive_data.host_keys[i]) { 495 if (sensitive_data.host_keys[i]) {
495 tmp = key_demote(sensitive_data.host_keys[i]); 496 if ((r = sshkey_demote(sensitive_data.host_keys[i],
496 key_free(sensitive_data.host_keys[i]); 497 &tmp)) != 0)
498 fatal("could not demote host %s key: %s",
499 sshkey_type(sensitive_data.host_keys[i]),
500 ssh_err(r));
501 sshkey_free(sensitive_data.host_keys[i]);
497 sensitive_data.host_keys[i] = tmp; 502 sensitive_data.host_keys[i] = tmp;
498 } 503 }
499 /* Certs do not need demotion */ 504 /* Certs do not need demotion */
@@ -649,7 +654,7 @@ privsep_postauth(Authctxt *authctxt)
649 fatal("fork of unprivileged child failed"); 654 fatal("fork of unprivileged child failed");
650 else if (pmonitor->m_pid != 0) { 655 else if (pmonitor->m_pid != 0) {
651 verbose("User child is on pid %ld", (long)pmonitor->m_pid); 656 verbose("User child is on pid %ld", (long)pmonitor->m_pid);
652 buffer_clear(&loginmsg); 657 sshbuf_reset(loginmsg);
653 monitor_clear_keystate(pmonitor); 658 monitor_clear_keystate(pmonitor);
654 monitor_child_postauth(pmonitor); 659 monitor_child_postauth(pmonitor);
655 660
@@ -681,45 +686,47 @@ privsep_postauth(Authctxt *authctxt)
681 packet_set_authenticated(); 686 packet_set_authenticated();
682} 687}
683 688
689static void
690append_hostkey_type(struct sshbuf *b, const char *s)
691{
692 int r;
693
694 if (match_pattern_list(s, options.hostkeyalgorithms, 0) != 1) {
695 debug3("%s: %s key not permitted by HostkeyAlgorithms",
696 __func__, s);
697 return;
698 }
699 if ((r = sshbuf_putf(b, "%s%s", sshbuf_len(b) > 0 ? "," : "", s)) != 0)
700 fatal("%s: sshbuf_putf: %s", __func__, ssh_err(r));
701}
702
684static char * 703static char *
685list_hostkey_types(void) 704list_hostkey_types(void)
686{ 705{
687 Buffer b; 706 struct sshbuf *b;
688 const char *p; 707 struct sshkey *key;
689 char *ret; 708 char *ret;
690 u_int i; 709 u_int i;
691 struct sshkey *key;
692 710
693 buffer_init(&b); 711 if ((b = sshbuf_new()) == NULL)
712 fatal("%s: sshbuf_new failed", __func__);
694 for (i = 0; i < options.num_host_key_files; i++) { 713 for (i = 0; i < options.num_host_key_files; i++) {
695 key = sensitive_data.host_keys[i]; 714 key = sensitive_data.host_keys[i];
696 if (key == NULL) 715 if (key == NULL)
697 key = sensitive_data.host_pubkeys[i]; 716 key = sensitive_data.host_pubkeys[i];
698 if (key == NULL) 717 if (key == NULL)
699 continue; 718 continue;
700 /* Check that the key is accepted in HostkeyAlgorithms */
701 if (match_pattern_list(sshkey_ssh_name(key),
702 options.hostkeyalgorithms, 0) != 1) {
703 debug3("%s: %s key not permitted by HostkeyAlgorithms",
704 __func__, sshkey_ssh_name(key));
705 continue;
706 }
707 switch (key->type) { 719 switch (key->type) {
708 case KEY_RSA: 720 case KEY_RSA:
721 /* for RSA we also support SHA2 signatures */
722 append_hostkey_type(b, "rsa-sha2-512");
723 append_hostkey_type(b, "rsa-sha2-256");
724 /* FALLTHROUGH */
709 case KEY_DSA: 725 case KEY_DSA:
710 case KEY_ECDSA: 726 case KEY_ECDSA:
711 case KEY_ED25519: 727 case KEY_ED25519:
712 case KEY_XMSS: 728 case KEY_XMSS:
713 if (buffer_len(&b) > 0) 729 append_hostkey_type(b, sshkey_ssh_name(key));
714 buffer_append(&b, ",", 1);
715 p = key_ssh_name(key);
716 buffer_append(&b, p, strlen(p));
717
718 /* for RSA we also support SHA2 signatures */
719 if (key->type == KEY_RSA) {
720 p = ",rsa-sha2-512,rsa-sha2-256";
721 buffer_append(&b, p, strlen(p));
722 }
723 break; 730 break;
724 } 731 }
725 /* If the private key has a cert peer, then list that too */ 732 /* If the private key has a cert peer, then list that too */
@@ -728,21 +735,24 @@ list_hostkey_types(void)
728 continue; 735 continue;
729 switch (key->type) { 736 switch (key->type) {
730 case KEY_RSA_CERT: 737 case KEY_RSA_CERT:
738 /* for RSA we also support SHA2 signatures */
739 append_hostkey_type(b,
740 "rsa-sha2-512-cert-v01@openssh.com");
741 append_hostkey_type(b,
742 "rsa-sha2-256-cert-v01@openssh.com");
743 /* FALLTHROUGH */
731 case KEY_DSA_CERT: 744 case KEY_DSA_CERT:
732 case KEY_ECDSA_CERT: 745 case KEY_ECDSA_CERT:
733 case KEY_ED25519_CERT: 746 case KEY_ED25519_CERT:
734 case KEY_XMSS_CERT: 747 case KEY_XMSS_CERT:
735 if (buffer_len(&b) > 0) 748 append_hostkey_type(b, sshkey_ssh_name(key));
736 buffer_append(&b, ",", 1);
737 p = key_ssh_name(key);
738 buffer_append(&b, p, strlen(p));
739 break; 749 break;
740 } 750 }
741 } 751 }
742 if ((ret = sshbuf_dup_string(&b)) == NULL) 752 if ((ret = sshbuf_dup_string(b)) == NULL)
743 fatal("%s: sshbuf_dup_string failed", __func__); 753 fatal("%s: sshbuf_dup_string failed", __func__);
744 buffer_free(&b); 754 sshbuf_free(b);
745 debug("list_hostkey_types: %s", ret); 755 debug("%s: %s", __func__, ret);
746 return ret; 756 return ret;
747} 757}
748 758
@@ -809,7 +819,7 @@ get_hostkey_index(struct sshkey *key, int compare, struct ssh *ssh)
809 u_int i; 819 u_int i;
810 820
811 for (i = 0; i < options.num_host_key_files; i++) { 821 for (i = 0; i < options.num_host_key_files; i++) {
812 if (key_is_cert(key)) { 822 if (sshkey_is_cert(key)) {
813 if (key == sensitive_data.host_certificates[i] || 823 if (key == sensitive_data.host_certificates[i] ||
814 (compare && sensitive_data.host_certificates[i] && 824 (compare && sensitive_data.host_certificates[i] &&
815 sshkey_equal(key, 825 sshkey_equal(key,
@@ -953,31 +963,33 @@ send_rexec_state(int fd, struct sshbuf *conf)
953} 963}
954 964
955static void 965static void
956recv_rexec_state(int fd, Buffer *conf) 966recv_rexec_state(int fd, struct sshbuf *conf)
957{ 967{
958 Buffer m; 968 struct sshbuf *m;
959 char *cp; 969 u_char *cp, ver;
960 u_int len; 970 size_t len;
971 int r;
961 972
962 debug3("%s: entering fd = %d", __func__, fd); 973 debug3("%s: entering fd = %d", __func__, fd);
963 974
964 buffer_init(&m); 975 if ((m = sshbuf_new()) == NULL)
965 976 fatal("%s: sshbuf_new failed", __func__);
966 if (ssh_msg_recv(fd, &m) == -1) 977 if (ssh_msg_recv(fd, m) == -1)
967 fatal("%s: ssh_msg_recv failed", __func__); 978 fatal("%s: ssh_msg_recv failed", __func__);
968 if (buffer_get_char(&m) != 0) 979 if ((r = sshbuf_get_u8(m, &ver)) != 0)
980 fatal("%s: buffer error: %s", __func__, ssh_err(r));
981 if (ver != 0)
969 fatal("%s: rexec version mismatch", __func__); 982 fatal("%s: rexec version mismatch", __func__);
970 983 if ((r = sshbuf_get_string(m, &cp, &len)) != 0)
971 cp = buffer_get_string(&m, &len); 984 fatal("%s: buffer error: %s", __func__, ssh_err(r));
972 if (conf != NULL) 985 if (conf != NULL && (r = sshbuf_put(conf, cp, len)))
973 buffer_append(conf, cp, len); 986 fatal("%s: buffer error: %s", __func__, ssh_err(r));
974 free(cp);
975
976#if defined(WITH_OPENSSL) && !defined(OPENSSL_PRNG_ONLY) 987#if defined(WITH_OPENSSL) && !defined(OPENSSL_PRNG_ONLY)
977 rexec_recv_rng_seed(&m); 988 rexec_recv_rng_seed(m);
978#endif 989#endif
979 990
980 buffer_free(&m); 991 free(cp);
992 sshbuf_free(m);
981 993
982 debug3("%s: done", __func__); 994 debug3("%s: done", __func__);
983} 995}
@@ -1258,8 +1270,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1258 startup_pipe = -1; 1270 startup_pipe = -1;
1259 pid = getpid(); 1271 pid = getpid();
1260 if (rexec_flag) { 1272 if (rexec_flag) {
1261 send_rexec_state(config_s[0], 1273 send_rexec_state(config_s[0], cfg);
1262 &cfg);
1263 close(config_s[0]); 1274 close(config_s[0]);
1264 } 1275 }
1265 break; 1276 break;
@@ -1305,7 +1316,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1305 close(startup_p[1]); 1316 close(startup_p[1]);
1306 1317
1307 if (rexec_flag) { 1318 if (rexec_flag) {
1308 send_rexec_state(config_s[0], &cfg); 1319 send_rexec_state(config_s[0], cfg);
1309 close(config_s[0]); 1320 close(config_s[0]);
1310 close(config_s[1]); 1321 close(config_s[1]);
1311 } 1322 }
@@ -1336,7 +1347,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1336 * return an error if any are found). Basically we are worried about 1347 * return an error if any are found). Basically we are worried about
1337 * source routing; it can be used to pretend you are somebody 1348 * source routing; it can be used to pretend you are somebody
1338 * (ip-address) you are not. That itself may be "almost acceptable" 1349 * (ip-address) you are not. That itself may be "almost acceptable"
1339 * under certain circumstances, but rhosts autentication is useless 1350 * under certain circumstances, but rhosts authentication is useless
1340 * if source routing is accepted. Notice also that if we just dropped 1351 * if source routing is accepted. Notice also that if we just dropped
1341 * source routing here, the other side could use IP spoofing to do 1352 * source routing here, the other side could use IP spoofing to do
1342 * rest of the interaction and could still bypass security. So we 1353 * rest of the interaction and could still bypass security. So we
@@ -1413,6 +1424,43 @@ set_process_rdomain(struct ssh *ssh, const char *name)
1413#endif 1424#endif
1414} 1425}
1415 1426
1427static void
1428accumulate_host_timing_secret(struct sshbuf *server_cfg,
1429 const struct sshkey *key)
1430{
1431 static struct ssh_digest_ctx *ctx;
1432 u_char *hash;
1433 size_t len;
1434 struct sshbuf *buf;
1435 int r;
1436
1437 if (ctx == NULL && (ctx = ssh_digest_start(SSH_DIGEST_SHA512)) == NULL)
1438 fatal("%s: ssh_digest_start", __func__);
1439 if (key == NULL) { /* finalize */
1440 /* add server config in case we are using agent for host keys */
1441 if (ssh_digest_update(ctx, sshbuf_ptr(server_cfg),
1442 sshbuf_len(server_cfg)) != 0)
1443 fatal("%s: ssh_digest_update", __func__);
1444 len = ssh_digest_bytes(SSH_DIGEST_SHA512);
1445 hash = xmalloc(len);
1446 if (ssh_digest_final(ctx, hash, len) != 0)
1447 fatal("%s: ssh_digest_final", __func__);
1448 options.timing_secret = PEEK_U64(hash);
1449 freezero(hash, len);
1450 ssh_digest_free(ctx);
1451 ctx = NULL;
1452 return;
1453 }
1454 if ((buf = sshbuf_new()) == NULL)
1455 fatal("%s could not allocate buffer", __func__);
1456 if ((r = sshkey_private_serialize(key, buf)) != 0)
1457 fatal("sshkey_private_serialize: %s", ssh_err(r));
1458 if (ssh_digest_update(ctx, sshbuf_ptr(buf), sshbuf_len(buf)) != 0)
1459 fatal("%s: ssh_digest_update", __func__);
1460 sshbuf_reset(buf);
1461 sshbuf_free(buf);
1462}
1463
1416/* 1464/*
1417 * Main program for the daemon. 1465 * Main program for the daemon.
1418 */ 1466 */
@@ -1620,14 +1668,15 @@ main(int ac, char **av)
1620 "test mode (-T)"); 1668 "test mode (-T)");
1621 1669
1622 /* Fetch our configuration */ 1670 /* Fetch our configuration */
1623 buffer_init(&cfg); 1671 if ((cfg = sshbuf_new()) == NULL)
1672 fatal("%s: sshbuf_new failed", __func__);
1624 if (rexeced_flag) 1673 if (rexeced_flag)
1625 recv_rexec_state(REEXEC_CONFIG_PASS_FD, &cfg); 1674 recv_rexec_state(REEXEC_CONFIG_PASS_FD, cfg);
1626 else if (strcasecmp(config_file_name, "none") != 0) 1675 else if (strcasecmp(config_file_name, "none") != 0)
1627 load_server_config(config_file_name, &cfg); 1676 load_server_config(config_file_name, cfg);
1628 1677
1629 parse_server_config(&options, rexeced_flag ? "rexec" : config_file_name, 1678 parse_server_config(&options, rexeced_flag ? "rexec" : config_file_name,
1630 &cfg, NULL); 1679 cfg, NULL);
1631 1680
1632 seed_rng(); 1681 seed_rng();
1633 1682
@@ -1714,11 +1763,18 @@ main(int ac, char **av)
1714 for (i = 0; i < options.num_host_key_files; i++) { 1763 for (i = 0; i < options.num_host_key_files; i++) {
1715 if (options.host_key_files[i] == NULL) 1764 if (options.host_key_files[i] == NULL)
1716 continue; 1765 continue;
1717 key = key_load_private(options.host_key_files[i], "", NULL); 1766 if ((r = sshkey_load_private(options.host_key_files[i], "",
1718 pubkey = key_load_public(options.host_key_files[i], NULL); 1767 &key, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR)
1719 1768 error("Error loading host key \"%s\": %s",
1769 options.host_key_files[i], ssh_err(r));
1770 if ((r = sshkey_load_public(options.host_key_files[i],
1771 &pubkey, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR)
1772 error("Error loading host key \"%s\": %s",
1773 options.host_key_files[i], ssh_err(r));
1720 if (pubkey == NULL && key != NULL) 1774 if (pubkey == NULL && key != NULL)
1721 pubkey = key_demote(key); 1775 if ((r = sshkey_demote(key, &pubkey)) != 0)
1776 fatal("Could not demote key: \"%s\": %s",
1777 options.host_key_files[i], ssh_err(r));
1722 sensitive_data.host_keys[i] = key; 1778 sensitive_data.host_keys[i] = key;
1723 sensitive_data.host_pubkeys[i] = pubkey; 1779 sensitive_data.host_pubkeys[i] = pubkey;
1724 1780
@@ -1728,6 +1784,7 @@ main(int ac, char **av)
1728 keytype = pubkey->type; 1784 keytype = pubkey->type;
1729 } else if (key != NULL) { 1785 } else if (key != NULL) {
1730 keytype = key->type; 1786 keytype = key->type;
1787 accumulate_host_timing_secret(cfg, key);
1731 } else { 1788 } else {
1732 error("Could not load host key: %s", 1789 error("Could not load host key: %s",
1733 options.host_key_files[i]); 1790 options.host_key_files[i]);
@@ -1753,6 +1810,7 @@ main(int ac, char **av)
1753 key ? "private" : "agent", i, sshkey_ssh_name(pubkey), fp); 1810 key ? "private" : "agent", i, sshkey_ssh_name(pubkey), fp);
1754 free(fp); 1811 free(fp);
1755 } 1812 }
1813 accumulate_host_timing_secret(cfg, NULL);
1756 if (!sensitive_data.have_ssh2_key) { 1814 if (!sensitive_data.have_ssh2_key) {
1757 logit("sshd: no hostkeys available -- exiting."); 1815 logit("sshd: no hostkeys available -- exiting.");
1758 exit(1); 1816 exit(1);
@@ -1770,21 +1828,21 @@ main(int ac, char **av)
1770 for (i = 0; i < options.num_host_cert_files; i++) { 1828 for (i = 0; i < options.num_host_cert_files; i++) {
1771 if (options.host_cert_files[i] == NULL) 1829 if (options.host_cert_files[i] == NULL)
1772 continue; 1830 continue;
1773 key = key_load_public(options.host_cert_files[i], NULL); 1831 if ((r = sshkey_load_public(options.host_cert_files[i],
1774 if (key == NULL) { 1832 &key, NULL)) != 0) {
1775 error("Could not load host certificate: %s", 1833 error("Could not load host certificate \"%s\": %s",
1776 options.host_cert_files[i]); 1834 options.host_cert_files[i], ssh_err(r));
1777 continue; 1835 continue;
1778 } 1836 }
1779 if (!key_is_cert(key)) { 1837 if (!sshkey_is_cert(key)) {
1780 error("Certificate file is not a certificate: %s", 1838 error("Certificate file is not a certificate: %s",
1781 options.host_cert_files[i]); 1839 options.host_cert_files[i]);
1782 key_free(key); 1840 sshkey_free(key);
1783 continue; 1841 continue;
1784 } 1842 }
1785 /* Find matching private key */ 1843 /* Find matching private key */
1786 for (j = 0; j < options.num_host_key_files; j++) { 1844 for (j = 0; j < options.num_host_key_files; j++) {
1787 if (key_equal_public(key, 1845 if (sshkey_equal_public(key,
1788 sensitive_data.host_keys[j])) { 1846 sensitive_data.host_keys[j])) {
1789 sensitive_data.host_certificates[j] = key; 1847 sensitive_data.host_certificates[j] = key;
1790 break; 1848 break;
@@ -1793,12 +1851,12 @@ main(int ac, char **av)
1793 if (j >= options.num_host_key_files) { 1851 if (j >= options.num_host_key_files) {
1794 error("No matching private key for certificate: %s", 1852 error("No matching private key for certificate: %s",
1795 options.host_cert_files[i]); 1853 options.host_cert_files[i]);
1796 key_free(key); 1854 sshkey_free(key);
1797 continue; 1855 continue;
1798 } 1856 }
1799 sensitive_data.host_certificates[j] = key; 1857 sensitive_data.host_certificates[j] = key;
1800 debug("host certificate: #%u type %d %s", j, key->type, 1858 debug("host certificate: #%u type %d %s", j, key->type,
1801 key_type(key)); 1859 sshkey_type(key));
1802 } 1860 }
1803 1861
1804 if (privsep_chroot) { 1862 if (privsep_chroot) {
@@ -2065,7 +2123,7 @@ main(int ac, char **av)
2065 /* allocate authentication context */ 2123 /* allocate authentication context */
2066 authctxt = xcalloc(1, sizeof(*authctxt)); 2124 authctxt = xcalloc(1, sizeof(*authctxt));
2067 2125
2068 authctxt->loginmsg = &loginmsg; 2126 authctxt->loginmsg = loginmsg;
2069 2127
2070 /* XXX global for cleanup, access from other modules */ 2128 /* XXX global for cleanup, access from other modules */
2071 the_authctxt = authctxt; 2129 the_authctxt = authctxt;
@@ -2075,7 +2133,8 @@ main(int ac, char **av)
2075 fatal("allocation failed"); 2133 fatal("allocation failed");
2076 2134
2077 /* prepare buffer to collect messages to display to user after login */ 2135 /* prepare buffer to collect messages to display to user after login */
2078 buffer_init(&loginmsg); 2136 if ((loginmsg = sshbuf_new()) == NULL)
2137 fatal("%s: sshbuf_new failed", __func__);
2079 auth_debug_reset(); 2138 auth_debug_reset();
2080 2139
2081 if (use_privsep) { 2140 if (use_privsep) {
@@ -2178,26 +2237,21 @@ main(int ac, char **av)
2178 2237
2179int 2238int
2180sshd_hostkey_sign(struct sshkey *privkey, struct sshkey *pubkey, 2239sshd_hostkey_sign(struct sshkey *privkey, struct sshkey *pubkey,
2181 u_char **signature, size_t *slen, const u_char *data, size_t dlen, 2240 u_char **signature, size_t *slenp, const u_char *data, size_t dlen,
2182 const char *alg, u_int flag) 2241 const char *alg, u_int flag)
2183{ 2242{
2184 int r; 2243 int r;
2185 u_int xxx_slen, xxx_dlen = dlen;
2186 2244
2187 if (privkey) { 2245 if (privkey) {
2188 if (PRIVSEP(key_sign(privkey, signature, &xxx_slen, data, xxx_dlen, 2246 if (PRIVSEP(sshkey_sign(privkey, signature, slenp, data, dlen,
2189 alg) < 0)) 2247 alg, datafellows)) < 0)
2190 fatal("%s: key_sign failed", __func__); 2248 fatal("%s: key_sign failed", __func__);
2191 if (slen)
2192 *slen = xxx_slen;
2193 } else if (use_privsep) { 2249 } else if (use_privsep) {
2194 if (mm_key_sign(pubkey, signature, &xxx_slen, data, xxx_dlen, 2250 if (mm_sshkey_sign(pubkey, signature, slenp, data, dlen,
2195 alg) < 0) 2251 alg, datafellows) < 0)
2196 fatal("%s: pubkey_sign failed", __func__); 2252 fatal("%s: pubkey_sign failed", __func__);
2197 if (slen)
2198 *slen = xxx_slen;
2199 } else { 2253 } else {
2200 if ((r = ssh_agent_sign(auth_sock, pubkey, signature, slen, 2254 if ((r = ssh_agent_sign(auth_sock, pubkey, signature, slenp,
2201 data, dlen, alg, datafellows)) != 0) 2255 data, dlen, alg, datafellows)) != 0)
2202 fatal("%s: ssh_agent_sign failed: %s", 2256 fatal("%s: ssh_agent_sign failed: %s",
2203 __func__, ssh_err(r)); 2257 __func__, ssh_err(r));
diff --git a/sshd_config b/sshd_config
index 3109d5d73..19b7c91a1 100644
--- a/sshd_config
+++ b/sshd_config
@@ -1,4 +1,4 @@
1# $OpenBSD: sshd_config,v 1.102 2018/02/16 02:32:40 djm Exp $ 1# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
2 2
3# This is the sshd server system-wide configuration file. See 3# This is the sshd server system-wide configuration file. See
4# sshd_config(5) for more information. 4# sshd_config(5) for more information.
@@ -91,7 +91,6 @@ AuthorizedKeysFile .ssh/authorized_keys
91#PrintMotd yes 91#PrintMotd yes
92#PrintLastLog yes 92#PrintLastLog yes
93#TCPKeepAlive yes 93#TCPKeepAlive yes
94#UseLogin no
95#PermitUserEnvironment no 94#PermitUserEnvironment no
96#Compression delayed 95#Compression delayed
97#ClientAliveInterval 0 96#ClientAliveInterval 0
diff --git a/sshd_config.0 b/sshd_config.0
index 95c17fc8d..0498495fe 100644
--- a/sshd_config.0
+++ b/sshd_config.0
@@ -16,17 +16,17 @@ DESCRIPTION
16 16
17 AcceptEnv 17 AcceptEnv
18 Specifies what environment variables sent by the client will be 18 Specifies what environment variables sent by the client will be
19 copied into the session's environ(7). See SendEnv in 19 copied into the session's environ(7). See SendEnv and SetEnv in
20 ssh_config(5) for how to configure the client. The TERM 20 ssh_config(5) for how to configure the client. The TERM
21 environment variable is always sent whenever the client requests 21 environment variable is always accepted whenever the client
22 a pseudo-terminal as it is required by the protocol. Variables 22 requests a pseudo-terminal as it is required by the protocol.
23 are specified by name, which may contain the wildcard characters 23 Variables are specified by name, which may contain the wildcard
24 M-bM-^@M-^X*M-bM-^@M-^Y and M-bM-^@M-^X?M-bM-^@M-^Y. Multiple environment variables may be separated by 24 characters M-bM-^@M-^X*M-bM-^@M-^Y and M-bM-^@M-^X?M-bM-^@M-^Y. Multiple environment variables may be
25 whitespace or spread across multiple AcceptEnv directives. Be 25 separated by whitespace or spread across multiple AcceptEnv
26 warned that some environment variables could be used to bypass 26 directives. Be warned that some environment variables could be
27 restricted user environments. For this reason, care should be 27 used to bypass restricted user environments. For this reason,
28 taken in the use of this directive. The default is not to accept 28 care should be taken in the use of this directive. The default
29 any environment variables. 29 is not to accept any environment variables.
30 30
31 AddressFamily 31 AddressFamily
32 Specifies which address family should be used by sshd(8). Valid 32 Specifies which address family should be used by sshd(8). Valid
@@ -88,7 +88,7 @@ DESCRIPTION
88 AuthenticationMethods 88 AuthenticationMethods
89 Specifies the authentication methods that must be successfully 89 Specifies the authentication methods that must be successfully
90 completed for a user to be granted access. This option must be 90 completed for a user to be granted access. This option must be
91 followed by one or more comma-separated lists of authentication 91 followed by one or more lists of comma-separated authentication
92 method names, or by the single string any to indicate the default 92 method names, or by the single string any to indicate the default
93 behaviour of accepting any single authentication method. If the 93 behaviour of accepting any single authentication method. If the
94 default is overridden, then successful authentication requires 94 default is overridden, then successful authentication requires
@@ -104,8 +104,8 @@ DESCRIPTION
104 104
105 For keyboard interactive authentication it is also possible to 105 For keyboard interactive authentication it is also possible to
106 restrict authentication to a specific device by appending a colon 106 restrict authentication to a specific device by appending a colon
107 followed by the device identifier bsdauth, pam, or skey, 107 followed by the device identifier bsdauth or pam. depending on
108 depending on the server configuration. For example, 108 the server configuration. For example,
109 "keyboard-interactive:bsdauth" would restrict keyboard 109 "keyboard-interactive:bsdauth" would restrict keyboard
110 interactive authentication to the bsdauth device. 110 interactive authentication to the bsdauth device.
111 111
@@ -120,7 +120,7 @@ DESCRIPTION
120 120
121 The available authentication methods are: "gssapi-with-mic", 121 The available authentication methods are: "gssapi-with-mic",
122 "hostbased", "keyboard-interactive", "none" (used for access to 122 "hostbased", "keyboard-interactive", "none" (used for access to
123 password-less accounts when PermitEmptyPassword is enabled), 123 password-less accounts when PermitEmptyPasswords is enabled),
124 "password" and "publickey". 124 "password" and "publickey".
125 125
126 AuthorizedKeysCommand 126 AuthorizedKeysCommand
@@ -382,11 +382,11 @@ DESCRIPTION
382 382
383 HostbasedAcceptedKeyTypes 383 HostbasedAcceptedKeyTypes
384 Specifies the key types that will be accepted for hostbased 384 Specifies the key types that will be accepted for hostbased
385 authentication as a comma-separated pattern list. Alternately if 385 authentication as a list of comma-separated patterns.
386 the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character, then the 386 Alternately if the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character,
387 specified key types will be appended to the default set instead 387 then the specified key types will be appended to the default set
388 of replacing them. If the specified value begins with a M-bM-^@M-^X-M-bM-^@M-^Y 388 instead of replacing them. If the specified value begins with a
389 character, then the specified key types (including wildcards) 389 M-bM-^@M-^X-M-bM-^@M-^Y character, then the specified key types (including wildcards)
390 will be removed from the default set instead of replacing them. 390 will be removed from the default set instead of replacing them.
391 The default for this option is: 391 The default for this option is:
392 392
@@ -394,9 +394,10 @@ DESCRIPTION
394 ecdsa-sha2-nistp384-cert-v01@openssh.com, 394 ecdsa-sha2-nistp384-cert-v01@openssh.com,
395 ecdsa-sha2-nistp521-cert-v01@openssh.com, 395 ecdsa-sha2-nistp521-cert-v01@openssh.com,
396 ssh-ed25519-cert-v01@openssh.com, 396 ssh-ed25519-cert-v01@openssh.com,
397 rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
397 ssh-rsa-cert-v01@openssh.com, 398 ssh-rsa-cert-v01@openssh.com,
398 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 399 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
399 ssh-ed25519,ssh-rsa 400 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
400 401
401 The list of available key types may also be obtained using "ssh 402 The list of available key types may also be obtained using "ssh
402 -Q key". 403 -Q key".
@@ -449,9 +450,10 @@ DESCRIPTION
449 ecdsa-sha2-nistp384-cert-v01@openssh.com, 450 ecdsa-sha2-nistp384-cert-v01@openssh.com,
450 ecdsa-sha2-nistp521-cert-v01@openssh.com, 451 ecdsa-sha2-nistp521-cert-v01@openssh.com,
451 ssh-ed25519-cert-v01@openssh.com, 452 ssh-ed25519-cert-v01@openssh.com,
453 rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
452 ssh-rsa-cert-v01@openssh.com, 454 ssh-rsa-cert-v01@openssh.com,
453 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 455 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
454 ssh-ed25519,ssh-rsa 456 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
455 457
456 The list of available key types may also be obtained using "ssh 458 The list of available key types may also be obtained using "ssh
457 -Q key". 459 -Q key".
@@ -478,8 +480,9 @@ DESCRIPTION
478 If one argument is specified, it is used as the packet class 480 If one argument is specified, it is used as the packet class
479 unconditionally. If two values are specified, the first is 481 unconditionally. If two values are specified, the first is
480 automatically selected for interactive sessions and the second 482 automatically selected for interactive sessions and the second
481 for non-interactive sessions. The default is lowdelay for 483 for non-interactive sessions. The default is af21 (Low-Latency
482 interactive sessions and throughput for non-interactive sessions. 484 Data) for interactive sessions and cs1 (Lower Effort) for non-
485 interactive sessions.
483 486
484 KbdInteractiveAuthentication 487 KbdInteractiveAuthentication
485 Specifies whether to allow keyboard-interactive authentication. 488 Specifies whether to allow keyboard-interactive authentication.
@@ -651,9 +654,9 @@ DESCRIPTION
651 HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, IPQoS, 654 HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, IPQoS,
652 KbdInteractiveAuthentication, KerberosAuthentication, LogLevel, 655 KbdInteractiveAuthentication, KerberosAuthentication, LogLevel,
653 MaxAuthTries, MaxSessions, PasswordAuthentication, 656 MaxAuthTries, MaxSessions, PasswordAuthentication,
654 PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTTY, 657 PermitEmptyPasswords, PermitListen, PermitOpen, PermitRootLogin,
655 PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes, 658 PermitTTY, PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes,
656 PubkeyAuthentication, RekeyLimit, RevokedKeys, RDomain, 659 PubkeyAuthentication, RekeyLimit, RevokedKeys, RDomain, SetEnv,
657 StreamLocalBindMask, StreamLocalBindUnlink, TrustedUserCAKeys, 660 StreamLocalBindMask, StreamLocalBindUnlink, TrustedUserCAKeys,
658 X11DisplayOffset, X11Forwarding and X11UseLocalHost. 661 X11DisplayOffset, X11Forwarding and X11UseLocalHost.
659 662
@@ -694,6 +697,28 @@ DESCRIPTION
694 server allows login to accounts with empty password strings. The 697 server allows login to accounts with empty password strings. The
695 default is no. 698 default is no.
696 699
700 PermitListen
701 Specifies the addresses/ports on which a remote TCP port
702 forwarding may listen. The listen specification must be one of
703 the following forms:
704
705 PermitListen port
706 PermitListen host:port
707
708 Multiple permissions may be specified by separating them with
709 whitespace. An argument of any can be used to remove all
710 restrictions and permit any listen requests. An argument of none
711 can be used to prohibit all listen requests. The host name may
712 contain wildcards as described in the PATTERNS section in
713 ssh_config(5). The wildcard M-bM-^@M-^X*M-bM-^@M-^Y can also be used in place of a
714 port number to allow all ports. By default all port forwarding
715 listen requests are permitted. Note that the GatewayPorts option
716 may further restrict which addresses may be listened on. Note
717 also that ssh(1) will request a listen host of M-bM-^@M-^\localhostM-bM-^@M-^] if no
718 listen host was specifically requested, and this this name is
719 treated differently to explicit localhost addresses of
720 M-bM-^@M-^\127.0.0.1M-bM-^@M-^] and M-bM-^@M-^\::1M-bM-^@M-^].
721
697 PermitOpen 722 PermitOpen
698 Specifies the destinations to which TCP port forwarding is 723 Specifies the destinations to which TCP port forwarding is
699 permitted. The forwarding specification must be one of the 724 permitted. The forwarding specification must be one of the
@@ -743,10 +768,12 @@ DESCRIPTION
743 768
744 PermitUserEnvironment 769 PermitUserEnvironment
745 Specifies whether ~/.ssh/environment and environment= options in 770 Specifies whether ~/.ssh/environment and environment= options in
746 ~/.ssh/authorized_keys are processed by sshd(8). The default is 771 ~/.ssh/authorized_keys are processed by sshd(8). Valid options
747 no. Enabling environment processing may enable users to bypass 772 are yes, no or a pattern-list specifying which environment
748 access restrictions in some configurations using mechanisms such 773 variable names to accept (for example "LANG,LC_*"). The default
749 as LD_PRELOAD. 774 is no. Enabling environment processing may enable users to
775 bypass access restrictions in some configurations using
776 mechanisms such as LD_PRELOAD.
750 777
751 PermitUserRC 778 PermitUserRC
752 Specifies whether any ~/.ssh/rc file is executed. The default is 779 Specifies whether any ~/.ssh/rc file is executed. The default is
@@ -773,11 +800,11 @@ DESCRIPTION
773 800
774 PubkeyAcceptedKeyTypes 801 PubkeyAcceptedKeyTypes
775 Specifies the key types that will be accepted for public key 802 Specifies the key types that will be accepted for public key
776 authentication as a comma-separated pattern list. Alternately if 803 authentication as a list of comma-separated patterns.
777 the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character, then the 804 Alternately if the specified value begins with a M-bM-^@M-^X+M-bM-^@M-^Y character,
778 specified key types will be appended to the default set instead 805 then the specified key types will be appended to the default set
779 of replacing them. If the specified value begins with a M-bM-^@M-^X-M-bM-^@M-^Y 806 instead of replacing them. If the specified value begins with a
780 character, then the specified key types (including wildcards) 807 M-bM-^@M-^X-M-bM-^@M-^Y character, then the specified key types (including wildcards)
781 will be removed from the default set instead of replacing them. 808 will be removed from the default set instead of replacing them.
782 The default for this option is: 809 The default for this option is:
783 810
@@ -785,9 +812,10 @@ DESCRIPTION
785 ecdsa-sha2-nistp384-cert-v01@openssh.com, 812 ecdsa-sha2-nistp384-cert-v01@openssh.com,
786 ecdsa-sha2-nistp521-cert-v01@openssh.com, 813 ecdsa-sha2-nistp521-cert-v01@openssh.com,
787 ssh-ed25519-cert-v01@openssh.com, 814 ssh-ed25519-cert-v01@openssh.com,
815 rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
788 ssh-rsa-cert-v01@openssh.com, 816 ssh-rsa-cert-v01@openssh.com,
789 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 817 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
790 ssh-ed25519,ssh-rsa 818 ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
791 819
792 The list of available key types may also be obtained using "ssh 820 The list of available key types may also be obtained using "ssh
793 -Q key". 821 -Q key".
@@ -827,6 +855,13 @@ DESCRIPTION
827 rdomain(4). If the routing domain is set to %D, then the domain 855 rdomain(4). If the routing domain is set to %D, then the domain
828 in which the incoming connection was received will be applied. 856 in which the incoming connection was received will be applied.
829 857
858 SetEnv Specifies one or more environment variables to set in child
859 sessions started by sshd(8) as M-bM-^@M-^\NAME=VALUEM-bM-^@M-^]. The environment
860 value may be quoted (e.g. if it contains whitespace characters).
861 Environment variables set by SetEnv override the default
862 environment and any variables specified by the user via AcceptEnv
863 or PermitUserEnvironment.
864
830 StreamLocalBindMask 865 StreamLocalBindMask
831 Sets the octal file creation mode mask (umask) used when creating 866 Sets the octal file creation mode mask (umask) used when creating
832 a Unix-domain socket file for local or remote port forwarding. 867 a Unix-domain socket file for local or remote port forwarding.
@@ -1011,18 +1046,19 @@ TOKENS
1011 %s The serial number of the certificate. 1046 %s The serial number of the certificate.
1012 %T The type of the CA key. 1047 %T The type of the CA key.
1013 %t The key or certificate type. 1048 %t The key or certificate type.
1049 %U The numeric user ID of the target user.
1014 %u The username. 1050 %u The username.
1015 1051
1016 AuthorizedKeysCommand accepts the tokens %%, %f, %h, %k, %t, and %u. 1052 AuthorizedKeysCommand accepts the tokens %%, %f, %h, %k, %t, %U, and %u.
1017 1053
1018 AuthorizedKeysFile accepts the tokens %%, %h, and %u. 1054 AuthorizedKeysFile accepts the tokens %%, %h, %U, and %u.
1019 1055
1020 AuthorizedPrincipalsCommand accepts the tokens %%, %F, %f, %h, %i, %K, 1056 AuthorizedPrincipalsCommand accepts the tokens %%, %F, %f, %h, %i, %K,
1021 %k, %s, %T, %t, and %u. 1057 %k, %s, %T, %t, %U, and %u.
1022 1058
1023 AuthorizedPrincipalsFile accepts the tokens %%, %h, and %u. 1059 AuthorizedPrincipalsFile accepts the tokens %%, %h, %U, and %u.
1024 1060
1025 ChrootDirectory accepts the tokens %%, %h, and %u. 1061 ChrootDirectory accepts the tokens %%, %h, %U, and %u.
1026 1062
1027 RoutingDomain accepts the token %D. 1063 RoutingDomain accepts the token %D.
1028 1064
@@ -1043,4 +1079,4 @@ AUTHORS
1043 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 1079 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
1044 for privilege separation. 1080 for privilege separation.
1045 1081
1046OpenBSD 6.2 February 16, 2018 OpenBSD 6.2 1082OpenBSD 6.4 July 20, 2018 OpenBSD 6.4
diff --git a/sshd_config.5 b/sshd_config.5
index e3c7c3936..e1b54ba20 100644
--- a/sshd_config.5
+++ b/sshd_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd_config.5,v 1.263 2018/02/16 02:40:45 djm Exp $ 36.\" $OpenBSD: sshd_config.5,v 1.281 2018/07/20 05:01:10 djm Exp $
37.Dd $Mdocdate: February 16 2018 $ 37.Dd $Mdocdate: July 20 2018 $
38.Dt SSHD_CONFIG 5 38.Dt SSHD_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -66,12 +66,14 @@ the session's
66.Xr environ 7 . 66.Xr environ 7 .
67See 67See
68.Cm SendEnv 68.Cm SendEnv
69and
70.Cm SetEnv
69in 71in
70.Xr ssh_config 5 72.Xr ssh_config 5
71for how to configure the client. 73for how to configure the client.
72The 74The
73.Ev TERM 75.Ev TERM
74environment variable is always sent whenever the client 76environment variable is always accepted whenever the client
75requests a pseudo-terminal as it is required by the protocol. 77requests a pseudo-terminal as it is required by the protocol.
76Variables are specified by name, which may contain the wildcard characters 78Variables are specified by name, which may contain the wildcard characters
77.Ql * 79.Ql *
@@ -184,7 +186,7 @@ for more information on patterns.
184.It Cm AuthenticationMethods 186.It Cm AuthenticationMethods
185Specifies the authentication methods that must be successfully completed 187Specifies the authentication methods that must be successfully completed
186for a user to be granted access. 188for a user to be granted access.
187This option must be followed by one or more comma-separated lists of 189This option must be followed by one or more lists of comma-separated
188authentication method names, or by the single string 190authentication method names, or by the single string
189.Cm any 191.Cm any
190to indicate the default behaviour of accepting any single authentication 192to indicate the default behaviour of accepting any single authentication
@@ -203,10 +205,9 @@ keyboard-interactive authentication before public key.
203For keyboard interactive authentication it is also possible to 205For keyboard interactive authentication it is also possible to
204restrict authentication to a specific device by appending a 206restrict authentication to a specific device by appending a
205colon followed by the device identifier 207colon followed by the device identifier
206.Cm bsdauth , 208.Cm bsdauth
207.Cm pam ,
208or 209or
209.Cm skey , 210.Cm pam .
210depending on the server configuration. 211depending on the server configuration.
211For example, 212For example,
212.Qq keyboard-interactive:bsdauth 213.Qq keyboard-interactive:bsdauth
@@ -231,7 +232,7 @@ The available authentication methods are:
231.Qq keyboard-interactive , 232.Qq keyboard-interactive ,
232.Qq none 233.Qq none
233(used for access to password-less accounts when 234(used for access to password-less accounts when
234.Cm PermitEmptyPassword 235.Cm PermitEmptyPasswords
235is enabled), 236is enabled),
236.Qq password 237.Qq password
237and 238and
@@ -657,7 +658,7 @@ The default is
657.Cm yes . 658.Cm yes .
658.It Cm HostbasedAcceptedKeyTypes 659.It Cm HostbasedAcceptedKeyTypes
659Specifies the key types that will be accepted for hostbased authentication 660Specifies the key types that will be accepted for hostbased authentication
660as a comma-separated pattern list. 661as a list of comma-separated patterns.
661Alternately if the specified value begins with a 662Alternately if the specified value begins with a
662.Sq + 663.Sq +
663character, then the specified key types will be appended to the default set 664character, then the specified key types will be appended to the default set
@@ -672,9 +673,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com,
672ecdsa-sha2-nistp384-cert-v01@openssh.com, 673ecdsa-sha2-nistp384-cert-v01@openssh.com,
673ecdsa-sha2-nistp521-cert-v01@openssh.com, 674ecdsa-sha2-nistp521-cert-v01@openssh.com,
674ssh-ed25519-cert-v01@openssh.com, 675ssh-ed25519-cert-v01@openssh.com,
676rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
675ssh-rsa-cert-v01@openssh.com, 677ssh-rsa-cert-v01@openssh.com,
676ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 678ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
677ssh-ed25519,ssh-rsa 679ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
678.Ed 680.Ed
679.Pp 681.Pp
680The list of available key types may also be obtained using 682The list of available key types may also be obtained using
@@ -749,9 +751,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com,
749ecdsa-sha2-nistp384-cert-v01@openssh.com, 751ecdsa-sha2-nistp384-cert-v01@openssh.com,
750ecdsa-sha2-nistp521-cert-v01@openssh.com, 752ecdsa-sha2-nistp521-cert-v01@openssh.com,
751ssh-ed25519-cert-v01@openssh.com, 753ssh-ed25519-cert-v01@openssh.com,
754rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
752ssh-rsa-cert-v01@openssh.com, 755ssh-rsa-cert-v01@openssh.com,
753ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 756ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
754ssh-ed25519,ssh-rsa 757ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
755.Ed 758.Ed
756.Pp 759.Pp
757The list of available key types may also be obtained using 760The list of available key types may also be obtained using
@@ -816,9 +819,11 @@ If one argument is specified, it is used as the packet class unconditionally.
816If two values are specified, the first is automatically selected for 819If two values are specified, the first is automatically selected for
817interactive sessions and the second for non-interactive sessions. 820interactive sessions and the second for non-interactive sessions.
818The default is 821The default is
819.Cm lowdelay 822.Cm af21
823(Low-Latency Data)
820for interactive sessions and 824for interactive sessions and
821.Cm throughput 825.Cm cs1
826(Lower Effort)
822for non-interactive sessions. 827for non-interactive sessions.
823.It Cm KbdInteractiveAuthentication 828.It Cm KbdInteractiveAuthentication
824Specifies whether to allow keyboard-interactive authentication. 829Specifies whether to allow keyboard-interactive authentication.
@@ -1123,6 +1128,7 @@ Available keywords are
1123.Cm MaxSessions , 1128.Cm MaxSessions ,
1124.Cm PasswordAuthentication , 1129.Cm PasswordAuthentication ,
1125.Cm PermitEmptyPasswords , 1130.Cm PermitEmptyPasswords ,
1131.Cm PermitListen ,
1126.Cm PermitOpen , 1132.Cm PermitOpen ,
1127.Cm PermitRootLogin , 1133.Cm PermitRootLogin ,
1128.Cm PermitTTY , 1134.Cm PermitTTY ,
@@ -1133,6 +1139,7 @@ Available keywords are
1133.Cm RekeyLimit , 1139.Cm RekeyLimit ,
1134.Cm RevokedKeys , 1140.Cm RevokedKeys ,
1135.Cm RDomain , 1141.Cm RDomain ,
1142.Cm SetEnv ,
1136.Cm StreamLocalBindMask , 1143.Cm StreamLocalBindMask ,
1137.Cm StreamLocalBindUnlink , 1144.Cm StreamLocalBindUnlink ,
1138.Cm TrustedUserCAKeys , 1145.Cm TrustedUserCAKeys ,
@@ -1182,6 +1189,48 @@ When password authentication is allowed, it specifies whether the
1182server allows login to accounts with empty password strings. 1189server allows login to accounts with empty password strings.
1183The default is 1190The default is
1184.Cm no . 1191.Cm no .
1192.It Cm PermitListen
1193Specifies the addresses/ports on which a remote TCP port forwarding may listen.
1194The listen specification must be one of the following forms:
1195.Pp
1196.Bl -item -offset indent -compact
1197.It
1198.Cm PermitListen
1199.Sm off
1200.Ar port
1201.Sm on
1202.It
1203.Cm PermitListen
1204.Sm off
1205.Ar host : port
1206.Sm on
1207.El
1208.Pp
1209Multiple permissions may be specified by separating them with whitespace.
1210An argument of
1211.Cm any
1212can be used to remove all restrictions and permit any listen requests.
1213An argument of
1214.Cm none
1215can be used to prohibit all listen requests.
1216The host name may contain wildcards as described in the PATTERNS section in
1217.Xr ssh_config 5 .
1218The wildcard
1219.Sq *
1220can also be used in place of a port number to allow all ports.
1221By default all port forwarding listen requests are permitted.
1222Note that the
1223.Cm GatewayPorts
1224option may further restrict which addresses may be listened on.
1225Note also that
1226.Xr ssh 1
1227will request a listen host of
1228.Dq localhost
1229if no listen host was specifically requested, and this this name is
1230treated differently to explicit localhost addresses of
1231.Dq 127.0.0.1
1232and
1233.Dq ::1 .
1185.It Cm PermitOpen 1234.It Cm PermitOpen
1186Specifies the destinations to which TCP port forwarding is permitted. 1235Specifies the destinations to which TCP port forwarding is permitted.
1187The forwarding specification must be one of the following forms: 1236The forwarding specification must be one of the following forms:
@@ -1284,6 +1333,12 @@ options in
1284.Pa ~/.ssh/authorized_keys 1333.Pa ~/.ssh/authorized_keys
1285are processed by 1334are processed by
1286.Xr sshd 8 . 1335.Xr sshd 8 .
1336Valid options are
1337.Cm yes ,
1338.Cm no
1339or a pattern-list specifying which environment variable names to accept
1340(for example
1341.Qq LANG,LC_* ) .
1287The default is 1342The default is
1288.Cm no . 1343.Cm no .
1289Enabling environment processing may enable users to bypass access 1344Enabling environment processing may enable users to bypass access
@@ -1330,7 +1385,7 @@ The default is
1330.Cm yes . 1385.Cm yes .
1331.It Cm PubkeyAcceptedKeyTypes 1386.It Cm PubkeyAcceptedKeyTypes
1332Specifies the key types that will be accepted for public key authentication 1387Specifies the key types that will be accepted for public key authentication
1333as a comma-separated pattern list. 1388as a list of comma-separated patterns.
1334Alternately if the specified value begins with a 1389Alternately if the specified value begins with a
1335.Sq + 1390.Sq +
1336character, then the specified key types will be appended to the default set 1391character, then the specified key types will be appended to the default set
@@ -1345,9 +1400,10 @@ ecdsa-sha2-nistp256-cert-v01@openssh.com,
1345ecdsa-sha2-nistp384-cert-v01@openssh.com, 1400ecdsa-sha2-nistp384-cert-v01@openssh.com,
1346ecdsa-sha2-nistp521-cert-v01@openssh.com, 1401ecdsa-sha2-nistp521-cert-v01@openssh.com,
1347ssh-ed25519-cert-v01@openssh.com, 1402ssh-ed25519-cert-v01@openssh.com,
1403rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,
1348ssh-rsa-cert-v01@openssh.com, 1404ssh-rsa-cert-v01@openssh.com,
1349ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 1405ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
1350ssh-ed25519,ssh-rsa 1406ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
1351.Ed 1407.Ed
1352.Pp 1408.Pp
1353The list of available key types may also be obtained using 1409The list of available key types may also be obtained using
@@ -1402,6 +1458,21 @@ will be bound to this
1402If the routing domain is set to 1458If the routing domain is set to
1403.Cm \&%D , 1459.Cm \&%D ,
1404then the domain in which the incoming connection was received will be applied. 1460then the domain in which the incoming connection was received will be applied.
1461.It Cm SetEnv
1462Specifies one or more environment variables to set in child sessions started
1463by
1464.Xr sshd 8
1465as
1466.Dq NAME=VALUE .
1467The environment value may be quoted (e.g. if it contains whitespace
1468characters).
1469Environment variables set by
1470.Cm SetEnv
1471override the default environment and any variables specified by the user
1472via
1473.Cm AcceptEnv
1474or
1475.Cm PermitUserEnvironment .
1405.It Cm StreamLocalBindMask 1476.It Cm StreamLocalBindMask
1406Sets the octal file creation mode mask 1477Sets the octal file creation mode mask
1407.Pq umask 1478.Pq umask
@@ -1687,24 +1758,26 @@ The serial number of the certificate.
1687The type of the CA key. 1758The type of the CA key.
1688.It %t 1759.It %t
1689The key or certificate type. 1760The key or certificate type.
1761.It \&%U
1762The numeric user ID of the target user.
1690.It %u 1763.It %u
1691The username. 1764The username.
1692.El 1765.El
1693.Pp 1766.Pp
1694.Cm AuthorizedKeysCommand 1767.Cm AuthorizedKeysCommand
1695accepts the tokens %%, %f, %h, %k, %t, and %u. 1768accepts the tokens %%, %f, %h, %k, %t, %U, and %u.
1696.Pp 1769.Pp
1697.Cm AuthorizedKeysFile 1770.Cm AuthorizedKeysFile
1698accepts the tokens %%, %h, and %u. 1771accepts the tokens %%, %h, %U, and %u.
1699.Pp 1772.Pp
1700.Cm AuthorizedPrincipalsCommand 1773.Cm AuthorizedPrincipalsCommand
1701accepts the tokens %%, %F, %f, %h, %i, %K, %k, %s, %T, %t, and %u. 1774accepts the tokens %%, %F, %f, %h, %i, %K, %k, %s, %T, %t, %U, and %u.
1702.Pp 1775.Pp
1703.Cm AuthorizedPrincipalsFile 1776.Cm AuthorizedPrincipalsFile
1704accepts the tokens %%, %h, and %u. 1777accepts the tokens %%, %h, %U, and %u.
1705.Pp 1778.Pp
1706.Cm ChrootDirectory 1779.Cm ChrootDirectory
1707accepts the tokens %%, %h, and %u. 1780accepts the tokens %%, %h, %U, and %u.
1708.Pp 1781.Pp
1709.Cm RoutingDomain 1782.Cm RoutingDomain
1710accepts the token %D. 1783accepts the token %D.
diff --git a/ssherr.c b/ssherr.c
index 3c0009d69..8ad3d5750 100644
--- a/ssherr.c
+++ b/ssherr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssherr.c,v 1.7 2017/09/12 06:32:08 djm Exp $ */ 1/* $OpenBSD: ssherr.c,v 1.8 2018/07/03 11:39:54 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -139,6 +139,8 @@ ssh_err(int n)
139 return "Invalid key length"; 139 return "Invalid key length";
140 case SSH_ERR_NUMBER_TOO_LARGE: 140 case SSH_ERR_NUMBER_TOO_LARGE:
141 return "number is too large"; 141 return "number is too large";
142 case SSH_ERR_SIGN_ALG_UNSUPPORTED:
143 return "signature algorithm not supported";
142 default: 144 default:
143 return "unknown error"; 145 return "unknown error";
144 } 146 }
diff --git a/ssherr.h b/ssherr.h
index c0b59211e..348da5a20 100644
--- a/ssherr.h
+++ b/ssherr.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssherr.h,v 1.5 2017/09/12 06:32:08 djm Exp $ */ 1/* $OpenBSD: ssherr.h,v 1.6 2018/07/03 11:39:54 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -79,6 +79,7 @@
79#define SSH_ERR_PROTOCOL_ERROR -55 79#define SSH_ERR_PROTOCOL_ERROR -55
80#define SSH_ERR_KEY_LENGTH -56 80#define SSH_ERR_KEY_LENGTH -56
81#define SSH_ERR_NUMBER_TOO_LARGE -57 81#define SSH_ERR_NUMBER_TOO_LARGE -57
82#define SSH_ERR_SIGN_ALG_UNSUPPORTED -58
82 83
83/* Translate a numeric error code to a human-readable error string */ 84/* Translate a numeric error code to a human-readable error string */
84const char *ssh_err(int n); 85const char *ssh_err(int n);
diff --git a/sshkey-xmss.c b/sshkey-xmss.c
index 5d66ee790..aaae70289 100644
--- a/sshkey-xmss.c
+++ b/sshkey-xmss.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey-xmss.c,v 1.1 2018/02/23 15:58:38 markus Exp $ */ 1/* $OpenBSD: sshkey-xmss.c,v 1.3 2018/07/09 21:59:10 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2017 Markus Friedl. All rights reserved. 3 * Copyright (c) 2017 Markus Friedl. All rights reserved.
4 * 4 *
@@ -66,7 +66,7 @@ struct ssh_xmss_state {
66 treehash_inst *treehash; 66 treehash_inst *treehash;
67 67
68 u_int32_t idx; /* state read from file */ 68 u_int32_t idx; /* state read from file */
69 u_int32_t maxidx; /* resticted # of signatures */ 69 u_int32_t maxidx; /* restricted # of signatures */
70 int have_state; /* .state file exists */ 70 int have_state; /* .state file exists */
71 int lockfd; /* locked in sshkey_xmss_get_state() */ 71 int lockfd; /* locked in sshkey_xmss_get_state() */
72 int allow_update; /* allow sshkey_xmss_update_state() */ 72 int allow_update; /* allow sshkey_xmss_update_state() */
@@ -583,7 +583,7 @@ sshkey_xmss_update_state(const struct sshkey *k, sshkey_printfn *pr)
583 } 583 }
584 idx = PEEK_U32(k->xmss_sk); 584 idx = PEEK_U32(k->xmss_sk);
585 if (idx == state->idx) { 585 if (idx == state->idx) {
586 /* no signature happend, no need to update */ 586 /* no signature happened, no need to update */
587 ret = 0; 587 ret = 0;
588 goto done; 588 goto done;
589 } else if (idx != state->idx + 1) { 589 } else if (idx != state->idx + 1) {
@@ -625,7 +625,7 @@ sshkey_xmss_update_state(const struct sshkey *k, sshkey_printfn *pr)
625 close(fd); 625 close(fd);
626 goto done; 626 goto done;
627 } 627 }
628 if (atomicio(vwrite, fd, (void *)sshbuf_ptr(enc), sshbuf_len(enc)) != 628 if (atomicio(vwrite, fd, sshbuf_mutable_ptr(enc), sshbuf_len(enc)) !=
629 sshbuf_len(enc)) { 629 sshbuf_len(enc)) {
630 ret = SSH_ERR_SYSTEM_ERROR; 630 ret = SSH_ERR_SYSTEM_ERROR;
631 PRINT("%s: write new state file data: %s", __func__, nstatefile); 631 PRINT("%s: write new state file data: %s", __func__, nstatefile);
diff --git a/sshkey.c b/sshkey.c
index 7712fba23..72c08c7e0 100644
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.c,v 1.64 2018/03/22 07:05:48 markus Exp $ */ 1/* $OpenBSD: sshkey.c,v 1.66 2018/07/03 13:20:25 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved. 4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -83,46 +83,64 @@ static int sshkey_from_blob_internal(struct sshbuf *buf,
83struct keytype { 83struct keytype {
84 const char *name; 84 const char *name;
85 const char *shortname; 85 const char *shortname;
86 const char *sigalg;
86 int type; 87 int type;
87 int nid; 88 int nid;
88 int cert; 89 int cert;
89 int sigonly; 90 int sigonly;
90}; 91};
91static const struct keytype keytypes[] = { 92static const struct keytype keytypes[] = {
92 { "ssh-ed25519", "ED25519", KEY_ED25519, 0, 0, 0 }, 93 { "ssh-ed25519", "ED25519", NULL, KEY_ED25519, 0, 0, 0 },
93 { "ssh-ed25519-cert-v01@openssh.com", "ED25519-CERT", 94 { "ssh-ed25519-cert-v01@openssh.com", "ED25519-CERT", NULL,
94 KEY_ED25519_CERT, 0, 1, 0 }, 95 KEY_ED25519_CERT, 0, 1, 0 },
95#ifdef WITH_XMSS 96#ifdef WITH_XMSS
96 { "ssh-xmss@openssh.com", "XMSS", KEY_XMSS, 0, 0, 0 }, 97 { "ssh-xmss@openssh.com", "XMSS", NULL, KEY_XMSS, 0, 0, 0 },
97 { "ssh-xmss-cert-v01@openssh.com", "XMSS-CERT", 98 { "ssh-xmss-cert-v01@openssh.com", "XMSS-CERT", NULL,
98 KEY_XMSS_CERT, 0, 1, 0 }, 99 KEY_XMSS_CERT, 0, 1, 0 },
99#endif /* WITH_XMSS */ 100#endif /* WITH_XMSS */
100#ifdef WITH_OPENSSL 101#ifdef WITH_OPENSSL
101 { "ssh-rsa", "RSA", KEY_RSA, 0, 0, 0 }, 102 { "ssh-rsa", "RSA", NULL, KEY_RSA, 0, 0, 0 },
102 { "rsa-sha2-256", "RSA", KEY_RSA, 0, 0, 1 }, 103 { "rsa-sha2-256", "RSA", NULL, KEY_RSA, 0, 0, 1 },
103 { "rsa-sha2-512", "RSA", KEY_RSA, 0, 0, 1 }, 104 { "rsa-sha2-512", "RSA", NULL, KEY_RSA, 0, 0, 1 },
104 { "ssh-dss", "DSA", KEY_DSA, 0, 0, 0 }, 105 { "ssh-dss", "DSA", NULL, KEY_DSA, 0, 0, 0 },
105# ifdef OPENSSL_HAS_ECC 106# ifdef OPENSSL_HAS_ECC
106 { "ecdsa-sha2-nistp256", "ECDSA", KEY_ECDSA, NID_X9_62_prime256v1, 0, 0 }, 107 { "ecdsa-sha2-nistp256", "ECDSA", NULL,
107 { "ecdsa-sha2-nistp384", "ECDSA", KEY_ECDSA, NID_secp384r1, 0, 0 }, 108 KEY_ECDSA, NID_X9_62_prime256v1, 0, 0 },
109 { "ecdsa-sha2-nistp384", "ECDSA", NULL,
110 KEY_ECDSA, NID_secp384r1, 0, 0 },
108# ifdef OPENSSL_HAS_NISTP521 111# ifdef OPENSSL_HAS_NISTP521
109 { "ecdsa-sha2-nistp521", "ECDSA", KEY_ECDSA, NID_secp521r1, 0, 0 }, 112 { "ecdsa-sha2-nistp521", "ECDSA", NULL,
113 KEY_ECDSA, NID_secp521r1, 0, 0 },
110# endif /* OPENSSL_HAS_NISTP521 */ 114# endif /* OPENSSL_HAS_NISTP521 */
111# endif /* OPENSSL_HAS_ECC */ 115# endif /* OPENSSL_HAS_ECC */
112 { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", KEY_RSA_CERT, 0, 1, 0 }, 116 { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", NULL,
113 { "ssh-dss-cert-v01@openssh.com", "DSA-CERT", KEY_DSA_CERT, 0, 1, 0 }, 117 KEY_RSA_CERT, 0, 1, 0 },
118 { "rsa-sha2-256-cert-v01@openssh.com", "RSA-CERT",
119 "ssh-rsa-sha2-256", KEY_RSA_CERT, 0, 1, 1 },
120 { "rsa-sha2-512-cert-v01@openssh.com", "RSA-CERT",
121 "ssh-rsa-sha2-512", KEY_RSA_CERT, 0, 1, 1 },
122 { "ssh-dss-cert-v01@openssh.com", "DSA-CERT", NULL,
123 KEY_DSA_CERT, 0, 1, 0 },
124 { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", NULL,
125 KEY_RSA_CERT, 0, 1, 0 },
126 { "rsa-sha2-256-cert-v01@openssh.com", "RSA-CERT",
127 "ssh-rsa-sha2-256", KEY_RSA_CERT, 0, 1, 1 },
128 { "rsa-sha2-512-cert-v01@openssh.com", "RSA-CERT",
129 "ssh-rsa-sha2-512", KEY_RSA_CERT, 0, 1, 1 },
130 { "ssh-dss-cert-v01@openssh.com", "DSA-CERT", NULL,
131 KEY_DSA_CERT, 0, 1, 0 },
114# ifdef OPENSSL_HAS_ECC 132# ifdef OPENSSL_HAS_ECC
115 { "ecdsa-sha2-nistp256-cert-v01@openssh.com", "ECDSA-CERT", 133 { "ecdsa-sha2-nistp256-cert-v01@openssh.com", "ECDSA-CERT", NULL,
116 KEY_ECDSA_CERT, NID_X9_62_prime256v1, 1, 0 }, 134 KEY_ECDSA_CERT, NID_X9_62_prime256v1, 1, 0 },
117 { "ecdsa-sha2-nistp384-cert-v01@openssh.com", "ECDSA-CERT", 135 { "ecdsa-sha2-nistp384-cert-v01@openssh.com", "ECDSA-CERT", NULL,
118 KEY_ECDSA_CERT, NID_secp384r1, 1, 0 }, 136 KEY_ECDSA_CERT, NID_secp384r1, 1, 0 },
119# ifdef OPENSSL_HAS_NISTP521 137# ifdef OPENSSL_HAS_NISTP521
120 { "ecdsa-sha2-nistp521-cert-v01@openssh.com", "ECDSA-CERT", 138 { "ecdsa-sha2-nistp521-cert-v01@openssh.com", "ECDSA-CERT", NULL,
121 KEY_ECDSA_CERT, NID_secp521r1, 1, 0 }, 139 KEY_ECDSA_CERT, NID_secp521r1, 1, 0 },
122# endif /* OPENSSL_HAS_NISTP521 */ 140# endif /* OPENSSL_HAS_NISTP521 */
123# endif /* OPENSSL_HAS_ECC */ 141# endif /* OPENSSL_HAS_ECC */
124#endif /* WITH_OPENSSL */ 142#endif /* WITH_OPENSSL */
125 { NULL, NULL, -1, -1, 0, 0 } 143 { NULL, NULL, NULL, -1, -1, 0, 0 }
126}; 144};
127 145
128const char * 146const char *
@@ -2198,8 +2216,8 @@ sshkey_froms(struct sshbuf *buf, struct sshkey **keyp)
2198 return r; 2216 return r;
2199} 2217}
2200 2218
2201int 2219static int
2202sshkey_sigtype(const u_char *sig, size_t siglen, char **sigtypep) 2220get_sigtype(const u_char *sig, size_t siglen, char **sigtypep)
2203{ 2221{
2204 int r; 2222 int r;
2205 struct sshbuf *b = NULL; 2223 struct sshbuf *b = NULL;
@@ -2223,6 +2241,50 @@ sshkey_sigtype(const u_char *sig, size_t siglen, char **sigtypep)
2223 return r; 2241 return r;
2224} 2242}
2225 2243
2244/*
2245 * Returns the expected signature algorithm for a given public key algorithm.
2246 */
2247const char *
2248sshkey_sigalg_by_name(const char *name)
2249{
2250 const struct keytype *kt;
2251
2252 for (kt = keytypes; kt->type != -1; kt++) {
2253 if (strcmp(kt->name, name) != 0)
2254 continue;
2255 if (kt->sigalg != NULL)
2256 return kt->sigalg;
2257 if (!kt->cert)
2258 return kt->name;
2259 return sshkey_ssh_name_from_type_nid(
2260 sshkey_type_plain(kt->type), kt->nid);
2261 }
2262 return NULL;
2263}
2264
2265/*
2266 * Verifies that the signature algorithm appearing inside the signature blob
2267 * matches that which was requested.
2268 */
2269int
2270sshkey_check_sigtype(const u_char *sig, size_t siglen,
2271 const char *requested_alg)
2272{
2273 const char *expected_alg;
2274 char *sigtype = NULL;
2275 int r;
2276
2277 if (requested_alg == NULL)
2278 return 0;
2279 if ((expected_alg = sshkey_sigalg_by_name(requested_alg)) == NULL)
2280 return SSH_ERR_INVALID_ARGUMENT;
2281 if ((r = get_sigtype(sig, siglen, &sigtype)) != 0)
2282 return r;
2283 r = strcmp(expected_alg, sigtype) == 0;
2284 free(sigtype);
2285 return r ? 0 : SSH_ERR_SIGN_ALG_UNSUPPORTED;
2286}
2287
2226int 2288int
2227sshkey_sign(const struct sshkey *key, 2289sshkey_sign(const struct sshkey *key,
2228 u_char **sigp, size_t *lenp, 2290 u_char **sigp, size_t *lenp,
diff --git a/sshkey.h b/sshkey.h
index 155cd45ae..9060b2ecb 100644
--- a/sshkey.h
+++ b/sshkey.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.h,v 1.24 2018/02/23 15:58:38 markus Exp $ */ 1/* $OpenBSD: sshkey.h,v 1.26 2018/07/03 13:20:25 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -191,11 +191,12 @@ int sshkey_puts_opts(const struct sshkey *, struct sshbuf *,
191int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *); 191int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *);
192int sshkey_putb_plain(const struct sshkey *, struct sshbuf *); 192int sshkey_putb_plain(const struct sshkey *, struct sshbuf *);
193 193
194int sshkey_sigtype(const u_char *, size_t, char **);
195int sshkey_sign(const struct sshkey *, u_char **, size_t *, 194int sshkey_sign(const struct sshkey *, u_char **, size_t *,
196 const u_char *, size_t, const char *, u_int); 195 const u_char *, size_t, const char *, u_int);
197int sshkey_verify(const struct sshkey *, const u_char *, size_t, 196int sshkey_verify(const struct sshkey *, const u_char *, size_t,
198 const u_char *, size_t, const char *, u_int); 197 const u_char *, size_t, const char *, u_int);
198int sshkey_check_sigtype(const u_char *, size_t, const char *);
199const char *sshkey_sigalg_by_name(const char *);
199 200
200/* for debug */ 201/* for debug */
201void sshkey_dump_ec_point(const EC_GROUP *, const EC_POINT *); 202void sshkey_dump_ec_point(const EC_GROUP *, const EC_POINT *);
diff --git a/sshlogin.c b/sshlogin.c
index cea3e7697..1b2ee5f85 100644
--- a/sshlogin.c
+++ b/sshlogin.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshlogin.c,v 1.32 2015/12/26 20:51:35 guenther Exp $ */ 1/* $OpenBSD: sshlogin.c,v 1.33 2018/07/09 21:26:02 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -55,13 +55,15 @@
55#include <unistd.h> 55#include <unistd.h>
56#include <limits.h> 56#include <limits.h>
57 57
58#include "sshlogin.h"
59#include "ssherr.h"
58#include "loginrec.h" 60#include "loginrec.h"
59#include "log.h" 61#include "log.h"
60#include "buffer.h" 62#include "sshbuf.h"
61#include "misc.h" 63#include "misc.h"
62#include "servconf.h" 64#include "servconf.h"
63 65
64extern Buffer loginmsg; 66extern struct sshbuf *loginmsg;
65extern ServerOptions options; 67extern ServerOptions options;
66 68
67/* 69/*
@@ -88,8 +90,9 @@ static void
88store_lastlog_message(const char *user, uid_t uid) 90store_lastlog_message(const char *user, uid_t uid)
89{ 91{
90#ifndef NO_SSH_LASTLOG 92#ifndef NO_SSH_LASTLOG
91 char *time_string, hostname[HOST_NAME_MAX+1] = "", buf[512]; 93 char *time_string, hostname[HOST_NAME_MAX+1] = "";
92 time_t last_login_time; 94 time_t last_login_time;
95 int r;
93 96
94 if (!options.print_lastlog) 97 if (!options.print_lastlog)
95 return; 98 return;
@@ -97,7 +100,9 @@ store_lastlog_message(const char *user, uid_t uid)
97# ifdef CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG 100# ifdef CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG
98 time_string = sys_auth_get_lastlogin_msg(user, uid); 101 time_string = sys_auth_get_lastlogin_msg(user, uid);
99 if (time_string != NULL) { 102 if (time_string != NULL) {
100 buffer_append(&loginmsg, time_string, strlen(time_string)); 103 if ((r = sshbuf_put(loginmsg,
104 time_string, strlen(time_string))) != 0)
105 fatal("%s: buffer error: %s", __func__, ssh_err(r));
101 free(time_string); 106 free(time_string);
102 } 107 }
103# else 108# else
@@ -108,12 +113,13 @@ store_lastlog_message(const char *user, uid_t uid)
108 time_string = ctime(&last_login_time); 113 time_string = ctime(&last_login_time);
109 time_string[strcspn(time_string, "\n")] = '\0'; 114 time_string[strcspn(time_string, "\n")] = '\0';
110 if (strcmp(hostname, "") == 0) 115 if (strcmp(hostname, "") == 0)
111 snprintf(buf, sizeof(buf), "Last login: %s\r\n", 116 r = sshbuf_putf(loginmsg, "Last login: %s\r\n",
112 time_string); 117 time_string);
113 else 118 else
114 snprintf(buf, sizeof(buf), "Last login: %s from %s\r\n", 119 r = sshbuf_putf(loginmsg, "Last login: %s from %s\r\n",
115 time_string, hostname); 120 time_string, hostname);
116 buffer_append(&loginmsg, buf, strlen(buf)); 121 if (r != 0)
122 fatal("%s: buffer error: %s", __func__, ssh_err(r));
117 } 123 }
118# endif /* CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG */ 124# endif /* CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG */
119#endif /* NO_SSH_LASTLOG */ 125#endif /* NO_SSH_LASTLOG */
diff --git a/ttymodes.c b/ttymodes.c
index f9fdb92de..f0c2a5d37 100644
--- a/ttymodes.c
+++ b/ttymodes.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ttymodes.c,v 1.33 2018/02/16 04:43:11 dtucker Exp $ */ 1/* $OpenBSD: ttymodes.c,v 1.34 2018/07/09 21:20:26 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -55,8 +55,8 @@
55#include "packet.h" 55#include "packet.h"
56#include "log.h" 56#include "log.h"
57#include "compat.h" 57#include "compat.h"
58#include "buffer.h" 58#include "sshbuf.h"
59#include "compat.h" 59#include "ssherr.h"
60 60
61#define TTY_OP_END 0 61#define TTY_OP_END 0
62/* 62/*
@@ -276,17 +276,18 @@ special_char_decode(u_int c)
276 * being constructed. 276 * being constructed.
277 */ 277 */
278void 278void
279tty_make_modes(int fd, struct termios *tiop) 279ssh_tty_make_modes(struct ssh *ssh, int fd, struct termios *tiop)
280{ 280{
281 struct termios tio; 281 struct termios tio;
282 int baud; 282 struct sshbuf *buf;
283 Buffer buf; 283 int r, ibaud, obaud;
284 284
285 buffer_init(&buf); 285 if ((buf = sshbuf_new()) == NULL)
286 fatal("%s: sshbuf_new failed", __func__);
286 287
287 if (tiop == NULL) { 288 if (tiop == NULL) {
288 if (fd == -1) { 289 if (fd == -1) {
289 debug("tty_make_modes: no fd or tio"); 290 debug("%s: no fd or tio", __func__);
290 goto end; 291 goto end;
291 } 292 }
292 if (tcgetattr(fd, &tio) == -1) { 293 if (tcgetattr(fd, &tio) == -1) {
@@ -297,27 +298,29 @@ tty_make_modes(int fd, struct termios *tiop)
297 tio = *tiop; 298 tio = *tiop;
298 299
299 /* Store input and output baud rates. */ 300 /* Store input and output baud rates. */
300 baud = speed_to_baud(cfgetospeed(&tio)); 301 obaud = speed_to_baud(cfgetospeed(&tio));
301 buffer_put_char(&buf, TTY_OP_OSPEED); 302 ibaud = speed_to_baud(cfgetispeed(&tio));
302 buffer_put_int(&buf, baud); 303 if ((r = sshbuf_put_u8(buf, TTY_OP_OSPEED)) != 0 ||
303 baud = speed_to_baud(cfgetispeed(&tio)); 304 (r = sshbuf_put_u32(buf, obaud)) != 0 ||
304 buffer_put_char(&buf, TTY_OP_ISPEED); 305 (r = sshbuf_put_u8(buf, TTY_OP_ISPEED)) != 0 ||
305 buffer_put_int(&buf, baud); 306 (r = sshbuf_put_u32(buf, ibaud)) != 0)
307 fatal("%s: buffer error: %s", __func__, ssh_err(r));
306 308
307 /* Store values of mode flags. */ 309 /* Store values of mode flags. */
308#define TTYCHAR(NAME, OP) \ 310#define TTYCHAR(NAME, OP) \
309 buffer_put_char(&buf, OP); \ 311 if ((r = sshbuf_put_u8(buf, OP)) != 0 || \
310 buffer_put_int(&buf, special_char_encode(tio.c_cc[NAME])); 312 (r = sshbuf_put_u32(buf, \
313 special_char_encode(tio.c_cc[NAME]))) != 0) \
314 fatal("%s: buffer error: %s", __func__, ssh_err(r)); \
311 315
312#define SSH_TTYMODE_IUTF8 42 /* for SSH_BUG_UTF8TTYMODE */ 316#define SSH_TTYMODE_IUTF8 42 /* for SSH_BUG_UTF8TTYMODE */
313 317
314#define TTYMODE(NAME, FIELD, OP) \ 318#define TTYMODE(NAME, FIELD, OP) \
315 if (OP == SSH_TTYMODE_IUTF8 && (datafellows & SSH_BUG_UTF8TTYMODE)) { \ 319 if (OP == SSH_TTYMODE_IUTF8 && (datafellows & SSH_BUG_UTF8TTYMODE)) { \
316 debug3("%s: SSH_BUG_UTF8TTYMODE", __func__); \ 320 debug3("%s: SSH_BUG_UTF8TTYMODE", __func__); \
317 } else { \ 321 } else if ((r = sshbuf_put_u8(buf, OP)) != 0 || \
318 buffer_put_char(&buf, OP); \ 322 (r = sshbuf_put_u32(buf, ((tio.FIELD & NAME) != 0))) != 0) \
319 buffer_put_int(&buf, ((tio.FIELD & NAME) != 0)); \ 323 fatal("%s: buffer error: %s", __func__, ssh_err(r)); \
320 }
321 324
322#include "ttymodes.h" 325#include "ttymodes.h"
323 326
@@ -326,9 +329,10 @@ tty_make_modes(int fd, struct termios *tiop)
326 329
327end: 330end:
328 /* Mark end of mode data. */ 331 /* Mark end of mode data. */
329 buffer_put_char(&buf, TTY_OP_END); 332 if ((r = sshbuf_put_u8(buf, TTY_OP_END)) != 0 ||
330 packet_put_string(buffer_ptr(&buf), buffer_len(&buf)); 333 (r = sshpkt_put_stringb(ssh, buf)) != 0)
331 buffer_free(&buf); 334 fatal("%s: packet error: %s", __func__, ssh_err(r));
335 sshbuf_free(buf);
332} 336}
333 337
334/* 338/*
@@ -336,16 +340,24 @@ end:
336 * manner from a packet being read. 340 * manner from a packet being read.
337 */ 341 */
338void 342void
339tty_parse_modes(int fd, int *n_bytes_ptr) 343ssh_tty_parse_modes(struct ssh *ssh, int fd)
340{ 344{
341 struct termios tio; 345 struct termios tio;
342 int opcode, baud; 346 struct sshbuf *buf;
343 int n_bytes = 0; 347 const u_char *data;
344 int failure = 0; 348 u_char opcode;
345 349 u_int baud, u;
346 *n_bytes_ptr = packet_get_int(); 350 int r, failure = 0;
347 if (*n_bytes_ptr == 0) 351 size_t len;
352
353 if ((r = sshpkt_get_string_direct(ssh, &data, &len)) != 0)
354 fatal("%s: packet error: %s", __func__, ssh_err(r));
355 if (len == 0)
356 return;
357 if ((buf = sshbuf_from(data, len)) == NULL) {
358 error("%s: sshbuf_from failed", __func__);
348 return; 359 return;
360 }
349 361
350 /* 362 /*
351 * Get old attributes for the terminal. We will modify these 363 * Get old attributes for the terminal. We will modify these
@@ -357,42 +369,48 @@ tty_parse_modes(int fd, int *n_bytes_ptr)
357 failure = -1; 369 failure = -1;
358 } 370 }
359 371
360 for (;;) { 372 while (sshbuf_len(buf) > 0) {
361 n_bytes += 1; 373 if ((r = sshbuf_get_u8(buf, &opcode)) != 0)
362 opcode = packet_get_char(); 374 fatal("%s: packet error: %s", __func__, ssh_err(r));
363 switch (opcode) { 375 switch (opcode) {
364 case TTY_OP_END: 376 case TTY_OP_END:
365 goto set; 377 goto set;
366 378
367 case TTY_OP_ISPEED: 379 case TTY_OP_ISPEED:
368 n_bytes += 4; 380 if ((r = sshbuf_get_u32(buf, &baud)) != 0)
369 baud = packet_get_int(); 381 fatal("%s: packet error: %s",
382 __func__, ssh_err(r));
370 if (failure != -1 && 383 if (failure != -1 &&
371 cfsetispeed(&tio, baud_to_speed(baud)) == -1) 384 cfsetispeed(&tio, baud_to_speed(baud)) == -1)
372 error("cfsetispeed failed for %d", baud); 385 error("cfsetispeed failed for %d", baud);
373 break; 386 break;
374 387
375 case TTY_OP_OSPEED: 388 case TTY_OP_OSPEED:
376 n_bytes += 4; 389 if ((r = sshbuf_get_u32(buf, &baud)) != 0)
377 baud = packet_get_int(); 390 fatal("%s: packet error: %s",
391 __func__, ssh_err(r));
378 if (failure != -1 && 392 if (failure != -1 &&
379 cfsetospeed(&tio, baud_to_speed(baud)) == -1) 393 cfsetospeed(&tio, baud_to_speed(baud)) == -1)
380 error("cfsetospeed failed for %d", baud); 394 error("cfsetospeed failed for %d", baud);
381 break; 395 break;
382 396
383#define TTYCHAR(NAME, OP) \ 397#define TTYCHAR(NAME, OP) \
384 case OP: \ 398 case OP: \
385 n_bytes += 4; \ 399 if ((r = sshbuf_get_u32(buf, &u)) != 0) \
386 tio.c_cc[NAME] = special_char_decode(packet_get_int()); \ 400 fatal("%s: packet error: %s", __func__, \
387 break; 401 ssh_err(r)); \
402 tio.c_cc[NAME] = special_char_decode(u); \
403 break;
388#define TTYMODE(NAME, FIELD, OP) \ 404#define TTYMODE(NAME, FIELD, OP) \
389 case OP: \ 405 case OP: \
390 n_bytes += 4; \ 406 if ((r = sshbuf_get_u32(buf, &u)) != 0) \
391 if (packet_get_int()) \ 407 fatal("%s: packet error: %s", __func__, \
392 tio.FIELD |= NAME; \ 408 ssh_err(r)); \
393 else \ 409 if (u) \
394 tio.FIELD &= ~NAME; \ 410 tio.FIELD |= NAME; \
395 break; 411 else \
412 tio.FIELD &= ~NAME; \
413 break;
396 414
397#include "ttymodes.h" 415#include "ttymodes.h"
398 416
@@ -410,11 +428,12 @@ tty_parse_modes(int fd, int *n_bytes_ptr)
410 * to stop. 428 * to stop.
411 */ 429 */
412 if (opcode > 0 && opcode < 160) { 430 if (opcode > 0 && opcode < 160) {
413 n_bytes += 4; 431 if ((r = sshbuf_get_u32(buf, NULL)) != 0)
414 (void) packet_get_int(); 432 fatal("%s: packet error: %s", __func__,
433 ssh_err(r));
415 break; 434 break;
416 } else { 435 } else {
417 logit("parse_tty_modes: unknown opcode %d", 436 logit("%s: unknown opcode %d", __func__,
418 opcode); 437 opcode);
419 goto set; 438 goto set;
420 } 439 }
@@ -422,10 +441,10 @@ tty_parse_modes(int fd, int *n_bytes_ptr)
422 } 441 }
423 442
424set: 443set:
425 if (*n_bytes_ptr != n_bytes) { 444 len = sshbuf_len(buf);
426 *n_bytes_ptr = n_bytes; 445 sshbuf_free(buf);
427 logit("parse_tty_modes: n_bytes_ptr != n_bytes: %d %d", 446 if (len > 0) {
428 *n_bytes_ptr, n_bytes); 447 logit("%s: %zu bytes left", __func__, len);
429 return; /* Don't process bytes passed */ 448 return; /* Don't process bytes passed */
430 } 449 }
431 if (failure == -1) 450 if (failure == -1)
diff --git a/uidswap.c b/uidswap.c
index 8bf6b244e..49f76d818 100644
--- a/uidswap.c
+++ b/uidswap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: uidswap.c,v 1.39 2015/06/24 01:49:19 dtucker Exp $ */ 1/* $OpenBSD: uidswap.c,v 1.41 2018/07/18 11:34:04 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -49,6 +49,7 @@ static gid_t saved_egid = 0;
49/* Saved effective uid. */ 49/* Saved effective uid. */
50static int privileged = 0; 50static int privileged = 0;
51static int temporarily_use_uid_effective = 0; 51static int temporarily_use_uid_effective = 0;
52static uid_t user_groups_uid;
52static gid_t *saved_egroups = NULL, *user_groups = NULL; 53static gid_t *saved_egroups = NULL, *user_groups = NULL;
53static int saved_egroupslen = -1, user_groupslen = -1; 54static int saved_egroupslen = -1, user_groupslen = -1;
54 55
@@ -92,10 +93,11 @@ temporarily_use_uid(struct passwd *pw)
92 fatal("getgroups: %.100s", strerror(errno)); 93 fatal("getgroups: %.100s", strerror(errno));
93 } else { /* saved_egroupslen == 0 */ 94 } else { /* saved_egroupslen == 0 */
94 free(saved_egroups); 95 free(saved_egroups);
96 saved_egroups = NULL;
95 } 97 }
96 98
97 /* set and save the user's groups */ 99 /* set and save the user's groups */
98 if (user_groupslen == -1) { 100 if (user_groupslen == -1 || user_groups_uid != pw->pw_uid) {
99 if (initgroups(pw->pw_name, pw->pw_gid) < 0) 101 if (initgroups(pw->pw_name, pw->pw_gid) < 0)
100 fatal("initgroups: %s: %.100s", pw->pw_name, 102 fatal("initgroups: %s: %.100s", pw->pw_name,
101 strerror(errno)); 103 strerror(errno));
@@ -110,7 +112,9 @@ temporarily_use_uid(struct passwd *pw)
110 fatal("getgroups: %.100s", strerror(errno)); 112 fatal("getgroups: %.100s", strerror(errno));
111 } else { /* user_groupslen == 0 */ 113 } else { /* user_groupslen == 0 */
112 free(user_groups); 114 free(user_groups);
115 user_groups = NULL;
113 } 116 }
117 user_groups_uid = pw->pw_uid;
114 } 118 }
115 /* Set the effective uid to the given (unprivileged) uid. */ 119 /* Set the effective uid to the given (unprivileged) uid. */
116 if (setgroups(user_groupslen, user_groups) < 0) 120 if (setgroups(user_groupslen, user_groups) < 0)
@@ -131,37 +135,6 @@ temporarily_use_uid(struct passwd *pw)
131 strerror(errno)); 135 strerror(errno));
132} 136}
133 137
134void
135permanently_drop_suid(uid_t uid)
136{
137#ifndef NO_UID_RESTORATION_TEST
138 uid_t old_uid = getuid();
139#endif
140
141 debug("permanently_drop_suid: %u", (u_int)uid);
142 if (setresuid(uid, uid, uid) < 0)
143 fatal("setresuid %u: %.100s", (u_int)uid, strerror(errno));
144
145#ifndef NO_UID_RESTORATION_TEST
146 /*
147 * Try restoration of UID if changed (test clearing of saved uid).
148 *
149 * Note that we don't do this on Cygwin, or on Solaris-based platforms
150 * where fine-grained privileges are available (the user might be
151 * deliberately allowed the right to setuid back to root).
152 */
153 if (old_uid != uid &&
154 (setuid(old_uid) != -1 || seteuid(old_uid) != -1))
155 fatal("%s: was able to restore old [e]uid", __func__);
156#endif
157
158 /* Verify UID drop was successful */
159 if (getuid() != uid || geteuid() != uid) {
160 fatal("%s: euid incorrect uid:%u euid:%u (should be %u)",
161 __func__, (u_int)getuid(), (u_int)geteuid(), (u_int)uid);
162 }
163}
164
165/* 138/*
166 * Restores to the original (privileged) uid. 139 * Restores to the original (privileged) uid.
167 */ 140 */
diff --git a/uidswap.h b/uidswap.h
index 1c1163d75..4ac91aa04 100644
--- a/uidswap.h
+++ b/uidswap.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: uidswap.h,v 1.13 2006/08/03 03:34:42 deraadt Exp $ */ 1/* $OpenBSD: uidswap.h,v 1.14 2018/07/18 11:34:05 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -15,4 +15,3 @@
15void temporarily_use_uid(struct passwd *); 15void temporarily_use_uid(struct passwd *);
16void restore_uid(void); 16void restore_uid(void);
17void permanently_set_uid(struct passwd *); 17void permanently_set_uid(struct passwd *);
18void permanently_drop_suid(uid_t);
diff --git a/umac.c b/umac.c
index eab831072..ccae39f30 100644
--- a/umac.c
+++ b/umac.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: umac.c,v 1.16 2017/12/12 15:06:12 naddy Exp $ */ 1/* $OpenBSD: umac.c,v 1.17 2018/04/10 00:10:49 djm Exp $ */
2/* ----------------------------------------------------------------------- 2/* -----------------------------------------------------------------------
3 * 3 *
4 * umac.c -- C Implementation UMAC Message Authentication 4 * umac.c -- C Implementation UMAC Message Authentication
@@ -65,7 +65,7 @@
65/* #define AES_IMPLEMENTAION 1 1 = OpenSSL, 2 = Barreto, 3 = Gladman */ 65/* #define AES_IMPLEMENTAION 1 1 = OpenSSL, 2 = Barreto, 3 = Gladman */
66/* #define SSE2 0 Is SSE2 is available? */ 66/* #define SSE2 0 Is SSE2 is available? */
67/* #define RUN_TESTS 0 Run basic correctness/speed tests */ 67/* #define RUN_TESTS 0 Run basic correctness/speed tests */
68/* #define UMAC_AE_SUPPORT 0 Enable auhthenticated encrytion */ 68/* #define UMAC_AE_SUPPORT 0 Enable authenticated encryption */
69 69
70/* ---------------------------------------------------------------------- */ 70/* ---------------------------------------------------------------------- */
71/* -- Global Includes --------------------------------------------------- */ 71/* -- Global Includes --------------------------------------------------- */
@@ -295,9 +295,9 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8])
295 * Before beginning another hash calculation the nh_reset() routine 295 * Before beginning another hash calculation the nh_reset() routine
296 * must be called. The single-buffer routine, nh(), is equivalent to 296 * must be called. The single-buffer routine, nh(), is equivalent to
297 * the sequence of calls nh_update() and nh_final(); however it is 297 * the sequence of calls nh_update() and nh_final(); however it is
298 * optimized and should be prefered whenever the multiple-buffer interface 298 * optimized and should be preferred whenever the multiple-buffer interface
299 * is not necessary. When using either interface, it is the client's 299 * is not necessary. When using either interface, it is the client's
300 * responsability to pass no more than L1_KEY_LEN bytes per hash result. 300 * responsibility to pass no more than L1_KEY_LEN bytes per hash result.
301 * 301 *
302 * The routine nh_init() initializes the nh_ctx data structure and 302 * The routine nh_init() initializes the nh_ctx data structure and
303 * must be called once, before any other PDF routine. 303 * must be called once, before any other PDF routine.
@@ -319,8 +319,8 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8])
319typedef struct { 319typedef struct {
320 UINT8 nh_key [L1_KEY_LEN + L1_KEY_SHIFT * (STREAMS - 1)]; /* NH Key */ 320 UINT8 nh_key [L1_KEY_LEN + L1_KEY_SHIFT * (STREAMS - 1)]; /* NH Key */
321 UINT8 data [HASH_BUF_BYTES]; /* Incoming data buffer */ 321 UINT8 data [HASH_BUF_BYTES]; /* Incoming data buffer */
322 int next_data_empty; /* Bookeeping variable for data buffer. */ 322 int next_data_empty; /* Bookkeeping variable for data buffer. */
323 int bytes_hashed; /* Bytes (out of L1_KEY_LEN) incorperated. */ 323 int bytes_hashed; /* Bytes (out of L1_KEY_LEN) incorporated. */
324 UINT64 state[STREAMS]; /* on-line state */ 324 UINT64 state[STREAMS]; /* on-line state */
325} nh_ctx; 325} nh_ctx;
326 326
@@ -851,7 +851,7 @@ static void poly_hash(uhash_ctx_t hc, UINT32 data_in[])
851 851
852 852
853/* The final step in UHASH is an inner-product hash. The poly hash 853/* The final step in UHASH is an inner-product hash. The poly hash
854 * produces a result not neccesarily WORD_LEN bytes long. The inner- 854 * produces a result not necessarily WORD_LEN bytes long. The inner-
855 * product hash breaks the polyhash output into 16-bit chunks and 855 * product hash breaks the polyhash output into 16-bit chunks and
856 * multiplies each with a 36 bit key. 856 * multiplies each with a 36 bit key.
857 */ 857 */
diff --git a/utf8.c b/utf8.c
index bc131385f..db7cb8f35 100644
--- a/utf8.c
+++ b/utf8.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: utf8.c,v 1.7 2017/05/31 09:15:42 deraadt Exp $ */ 1/* $OpenBSD: utf8.c,v 1.8 2018/08/21 13:56:27 schwarze Exp $ */
2/* 2/*
3 * Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org> 3 * Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org>
4 * 4 *
@@ -53,6 +53,8 @@ static int vasnmprintf(char **, size_t, int *, const char *, va_list);
53 * For state-dependent encodings, recovery is impossible. 53 * For state-dependent encodings, recovery is impossible.
54 * For arbitrary encodings, replacement of non-printable 54 * For arbitrary encodings, replacement of non-printable
55 * characters would be non-trivial and too fragile. 55 * characters would be non-trivial and too fragile.
56 * The comments indicate what nl_langinfo(CODESET)
57 * returns for US-ASCII on various operating systems.
56 */ 58 */
57 59
58static int 60static int
@@ -60,9 +62,12 @@ dangerous_locale(void) {
60 char *loc; 62 char *loc;
61 63
62 loc = nl_langinfo(CODESET); 64 loc = nl_langinfo(CODESET);
63 return strcmp(loc, "US-ASCII") != 0 && strcmp(loc, "UTF-8") != 0 && 65 return strcmp(loc, "UTF-8") != 0 &&
64 strcmp(loc, "ANSI_X3.4-1968") != 0 && strcmp(loc, "646") != 0 && 66 strcmp(loc, "US-ASCII") != 0 && /* OpenBSD */
65 strcmp(loc, "") != 0; 67 strcmp(loc, "ANSI_X3.4-1968") != 0 && /* Linux */
68 strcmp(loc, "ISO8859-1") != 0 && /* AIX */
69 strcmp(loc, "646") != 0 && /* Solaris, NetBSD */
70 strcmp(loc, "") != 0; /* Solaris 6 */
66} 71}
67 72
68static int 73static int
diff --git a/version.h b/version.h
index ea52b26f5..f1bbf00f3 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
1/* $OpenBSD: version.h,v 1.81 2018/03/24 19:29:03 markus Exp $ */ 1/* $OpenBSD: version.h,v 1.82 2018/07/03 11:42:12 djm Exp $ */
2 2
3#define SSH_VERSION "OpenSSH_7.7" 3#define SSH_VERSION "OpenSSH_7.8"
4 4
5#define SSH_PORTABLE "p1" 5#define SSH_PORTABLE "p1"
6#define SSH_RELEASE SSH_VERSION SSH_PORTABLE 6#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
diff --git a/xmss_wots.c b/xmss_wots.c
index b4702ed8d..ed904cd75 100644
--- a/xmss_wots.c
+++ b/xmss_wots.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: xmss_wots.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ 1/* $OpenBSD: xmss_wots.c,v 1.3 2018/04/10 00:10:49 djm Exp $ */
2/* 2/*
3wots.c version 20160722 3wots.c version 20160722
4Andreas Hülsing 4Andreas Hülsing
@@ -65,7 +65,7 @@ static void expand_seed(unsigned char *outseeds, const unsigned char *inseed, co
65 * Computes the chaining function. 65 * Computes the chaining function.
66 * out and in have to be n-byte arrays 66 * out and in have to be n-byte arrays
67 * 67 *
68 * interpretes in as start-th value of the chain 68 * interprets in as start-th value of the chain
69 * addr has to contain the address of the chain 69 * addr has to contain the address of the chain
70 */ 70 */
71static void gen_chain(unsigned char *out, const unsigned char *in, unsigned int start, unsigned int steps, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]) 71static void gen_chain(unsigned char *out, const unsigned char *in, unsigned int start, unsigned int steps, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8])